一 简介:今天咱们来谈谈研发规范
二 规范
1 表
1 选择合适的字符集和存储引擎 推荐innodb utf8mb4
2 表名称不要包含mysql关键字,符合命名规范
3 不建议采用外键
4 尽量不要采用分区表,采用分库分表是最优方案
2 列
1 每一列都要设置comment注释
2 每一列最好都设置为非NULL,设置默认值
3 varchar和char的选择 定长选择char 变长选择varchar ,字符型长度尽量不要太大,否则日后维护和创建索引会有限制
4 datetime和timestamp的选择 1 timestamp 1 默认值系统时间和更新触发属性2 有时间限制(1970-2038) 2datetime 1插入系统时间now() 2 无默认时间及更新属性,3 相当于无时间限制,4允许为空 所以这个看需求定义
5 集合,枚举,位图类型类型尽量不要选择
6 对于int类型,尽量规范出 int bigint tinyint进行细化定义,能用小不要用大,并采用无符号型
7 表主键选择(1 自增数字主键(推荐) 2 varchar类型(除非业务需要,否则尽量不要选择作为主键)),尽量避免联合主键的情况,可以采用唯一性索引进行约束
3 索引
1 索引尽量在建表时建立好
2 尽量用多列索引代替多个单列索引
3 索引的最大长度
1 所有索引键最大长度总和不能超过1000,而且不是实际数据长度的总和,而是索引键字段定义长度的总和。
2 正因为索引有长度限制,所以针对字符型的长度要做限制
4 一个表中索引个数不要太多,否则会影响DML操作效率
5 索引的命名规范要有逻辑性,最好统一为idx_
6 索引的创建选择列要选择区分度较高的列
三 总结:
关于创建表的规范,参考了inception审核体系和平时的一些经验.有不足和错误的地方请指正