本文档制定了数据生产过程中创建mysql表的标准
使用范围说明
-
本规范标准目前完全适用于生产上、业务使用的正式库表
-
本规范标准部分适用于存储原始数据的库表(ods表)
建表模板
CREATE TABLE `table_name` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`company_name_digest` char(32) DEFAULT NULL COMMENT '企业主体唯一键',
`company_name` varchar(255) NOT NULL DEFAULT '' COMMENT '企业名称',
`use_flag` tinyint DEFAULT '0' COMMENT '使用标记',
`is_history` tinyint DEFAULT '0' COMMENT '是否历史数据',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_unique_key` (`field1`,`field2`),
KEY `idx_company_name` (`company_name`),
KEY `idx_digest` (company_name_digest),
KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 comment='表名';
命名方式
-
单个表的表名以'tb_'开始,同模块、有关联关系的表前缀要统一,比如'company_','risk_','bid_';
-
字段名统一用小写字母,不能出现驼峰格式,单词之间用下划线'_'链接,第一个字符不能是'_';
-
索引名统一用'idx_'开始;
自增主键
- 除分区表外,表中必须包含自增主键且命名为'id'
主体唯一键
ods表可以没有主体唯一键
-
需要用来查询公司信息的表必须要有主体唯一键
-
内部使用的表主体唯一键命名为company_name_digest
-
对外输出的表主体唯一键命名为company_id,且不能有company_name_digest字段,company_id=MD5(company_name_digest)
-
主体唯一键必须要有索引
use_flag
use_flag字段表示表中记录的可使用状态,不是业务字段
use_flag的取值范围
0:正常有效数据
1:人工已修正, 一般指需要文本解析类数据解析错误,人工矫正
2:调试中,一般是临时状态
3:未解析,一般指需要文本解析类数据没有解析
4:未提交数据(例如工商主体未提交当年的年报)
9:标记历史删除,这种删除一般指历史数据,这样的数据应该用单独的is_history字段标识
10:废弃删除,这种删除可以是物理删除的没有任何意义的数据
-
一个表中的use_flag取值范围不会包含所有可用的取值范围,常用的有0,10
-
新建表中不允许出现use_flag=9 的情况
is_history
is_history表示表中记录是否是历史数据,历史数据指的是业务上的历史数据,如历史高管,历史股东,历史欠税;但像裁判文书这种没有历史当事人的概念
is_history取值范围
0: 正常当前有效数据
1: 历史数据
- 新建表中表示历史数据的必须用is_history=1表示,不能再用use_flag=9表示
create_time
-
create_time表示一条记录的入库时间
-
create_time默认值为当前时间,且在一条记录第一次入库时赋值,之后更新时该字段值不能改变
-
该字段值不能从数据中带过来,依靠字段设置由mysql自动生成
update_time
-
update_time表示一条记录的最后更新时间
-
update_time默认值为当前时间,且在其他字段值有变化时自动更新为当前时间,即ON UPDATE CURRENT_TIMESTAMP
-
该字段值不能从数据中带过来,依靠字段设置由mysql自动生成
索引设置
-
必须要有主键索引(分区表除外)、业务唯一键索引
-
作为唯一键的字段不允许为空,允许为空字符串
-
update_time必须要有索引
-
create_time最好建有索引
-
不能出现重复索引,比如已经有组合索引(unique_id,party_name),不能再为unique_id单独建索引
-
用来查询的字段必须建有索引,特别是有company_name_digest字段表中的 主体名称字段
注释
-
所有字段必须要有注释,即comment要有值
-
必须要有表名注释