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

Last edited by songzp Nov 21, 2021
Page history

table_definition

本文档制定了数据生产过程中创建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要有值

  • 必须要有表名注释

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