表结构设计
DROP TABLE IF EXISTS `system_area`;
CREATE TABLE `system_area` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(50) NOT NULL COMMENT '名称',
`code` varchar(20) NOT NULL COMMENT '编码',
`parent_code` varchar(20) NOT NULL COMMENT '父节点编码',
`type` tinyint(4) NOT NULL COMMENT '节点类型(1:国;2:省;3:市;4:县;5:街道;6:村)',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '显示顺序',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '行政区划节点状态(0:开启,1:关闭)',
`name_path` varchar(255) DEFAULT NULL,
`code_path` varchar(128) DEFAULT NULL,
`creator` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号',
`create_user_name` varchar(64) DEFAULT '' COMMENT '创建者名称',
`update_user_name` varchar(64) DEFAULT '' COMMENT '更新者名称',
PRIMARY KEY (`id`),
KEY `system_area_code_index` (`code`),
KEY `system_area_parent_code_index` (`parent_code`),
KEY `system_area_code_path_index` (`code_path`)
) ENGINE=InnoDB AUTO_INCREMENT=663998 DEFAULT CHARSET=utf8mb4 COMMENT='行政区划表';
system_area
表是一个用来存储地理区域信息的数据库表,这些信息通常是按照一定的层级关系组织起来的,例如国家、省份、城市、区县等。该表的设计考虑到了以下几点:
- 标识与命名:
id
: 主键,唯一标识每一个行政区划记录。name
: 行政区划的名称,比如“中国”、“北京”。code
: 编码,一般为标准的行政区划代码,例如中国的区号。parent_code
: 父节点编码,表示该行政区划所属的上级行政区划。
- 分类与排序:
type
: 节点类型,用以区分不同级别的行政区划,如国家、省、市、县、街道、村等。sort
: 显示顺序,可以用于控制展示时的先后顺序。
- 状态管理:
status
: 行政区划的状态,如是否启用。deleted
: 是否被逻辑删除,通常用于软删除机制。
- 路径信息:
name_path
: 名称路径,记录从顶级行政区划到当前行政区划的完整名称链路。code_path
: 编码路径,记录从顶级行政区划到当前行政区划的完整编码链路。
- 审计字段:
creator
: 创建者,记录创建这条记录的人或系统。create_time
: 创建时间,记录创建的时间戳。updater
: 更新者,记录最后更新这条记录的人或系统。update_time
: 更新时间,记录最后更新的时间戳。create_user_name
: 创建者的名称。update_user_name
: 更新者的名称。
- 其他信息:
tenant_id
: 租户编号,用于多租户环境下区分不同的租户数据。
表的应用场景
这个表可以用于多种应用场景,例如:
- 地址选择器:在电商、物流等需要用户选择地址的服务中,提供一个多级联动的选择器。
- 数据分析:基于地理位置进行数据统计分析,了解不同地区的业务情况。
- 系统配置:作为系统的基础配置之一,用于管理和维护地理信息。
表的优势
- 层次结构清晰:通过
parent_code
和code_path
等字段,清晰地表达了不同行政区划之间的层次关系。 - 可扩展性强:表结构设计灵活,可以根据实际需求添加更多的字段或调整现有字段。
- 数据一致性保障:通过逻辑删除字段
deleted
,可以在不破坏数据完整性的情况下进行数据的隐藏或恢复。 - 审计追踪:通过记录创建者、更新者等信息,可以追溯数据变更的历史。
通过这样一个设计合理的行政区划表,可以有效地管理和利用地理信息,为各种基于地理位置的应用提供坚实的数据基础。