Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Working_standard
  • table_definition

table_definition · Changes

Page history
update: 建表规范 authored Nov 19, 2021 by 宋志鹏's avatar 宋志鹏
Hide whitespace changes
Inline Side-by-side
Showing with 106 additions and 0 deletions
+106 -0
  • working_standard/table_definition.md working_standard/table_definition.md +106 -0
  • No files found.
working_standard/table_definition.md 0 → 100644
View page @ c9dd35de
本文档制定了数据生产过程中创建mysql表的标准
# 建表模板
```sql
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='表名';
```
# 自增主键
* 除分区表外,表中必须包含自增主键且命名为'id'
# 主体唯一键
* 需要用来查询公司信息的表必须要有主体唯一键
* 内部使用的表主体唯一键命名为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要有值
* 必须要有表名注释
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages