软件工程之数据库规范

2019-11-26 16:29:13 语法专题 24 0

表约束

约束名 详情
数据表名 最大长度不超过50
字符编码 utf8mb4
业务数据引擎 InnoDB

公共字段

每个表都得有以下属性

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态(0:可用,1:删除)',
`create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
说明
  • 它们是表的公共属性
  • 它们不能作为业务数据
    • 如,涉及开始时间、最后一次某个属性更新时间,请新建业务字段
  • status 表达的是数据状态,属于数据逻辑。因此,它的枚举可以在 Dao

字段约束

每个表都得受以下属性

  • 每个字段必须 NOT NULL
  • 每个字段必须有 默认值
  • 每个字段必须有 字段备注
  • 非负数字,必须 unsigned

MYSQL规约

索引命名规范

注:索引前缀、每个数据列名 之间依据以顺序 以 _ 分隔

索引类型 索引前缀 备注 示例
index idx 单索引与联合索引 KEY `idx_user_id` (`user_id`) ; KEY `idx_user_id_goods_id` (user_id,goods_id)
unique unique 唯一索引 UNIQUE KEY `unique_trade_no` (`trade_no`)
primary 不需要前缀 PRIMARY KEY (`id`)

分表原则

  • 规则a
    • 单表数据量不超过 500W
  • 规则b
    • 预测未来三年内如果数据量会超过规则a,则考虑三年内应先分多少表
    • 如果未来数据量有可能远超当前预测规划的,提前想好对应方案
  • TODO

分库原则

  • TODO
注:若无特殊说明,文章均为云天河原创,请尊重作者劳动成果,转载前请一定要注明出处