mysql规范
- 存储引擎与字符集
- 使用
INNODB
作为存储引擎 --- 支持事务、行锁外键,redo log
- 表字符集使用
utf8mb4
,排序规则使用utf8mb4_unicode_ci
- 注释
- 表注释 -- 标明用途/负责人/创建日期
- 字段注释 -- 标明用途/说明/负责人/创建日期
- 关联字段 -- 标明作为那张表的外键
- 表/字段废弃 -- 标明废弃时间
- 命名规范
- 数据库的库名、表名、字段名都要为小写
- 数据库的库名、标明、字段名应该为字母和下划线的组合
- 库名、表名、字段名的长度限制在30个字符以内,超过长度限制时,应该使用缩写减少长度
- 数据库的表名必须使用名词单数形式
- 库名、表名、字段名必须为有意义的单词或单词缩写,能直观反馈给读者以便理解对应业务
- 若库名、表名、字段名由多个单词组成,单词用下划线
_
进行连接
- 库名、表名、字段名禁止使用 MySQL 保留字 -- 个人觉得这点待商议,比如
name
,这类就不好处理了
- 字段名一般采用名词或动宾短语,如:
user_id
,is_friend
- 字段名,不要重复表的名称,如
employe
的表中避免使用名为employee_lastname
的字段,直接写lastname
即可
- 同一个业务模块的数据库表名应当取一个达成共识的表前缀,如优惠券模块
discount_
- 修改规范和属性规范
- 主键和外键在不同表的长度和类型应该要保持一致
- 表必须定义主键,主键默认为ID
- 表必须包含记录创建时间
created_at(timestamp)
和修改时间的字段updated_at(timestamp)
- 禁止修改
created_at
- 一个字段禁止承担多项职能
- 禁止使用Eunm枚举类型
- 时间类型使用
timestamp(推荐)
或datetime
- 同财务相关的金额类数据必须使用
decimal
或int
类型,禁止使用float
、double
类型
- 每个字段必须有默认值,尽可能将所有列都设为
Not Null
,节省空间
varchar
长度设计需要根据业务实际需要进行长度控制,禁止预留过长空间。
- 表数据量
- 索引规范
- 索引数量
- 单张表中索引数量不超过7个
- 单个索引中的字段数不超过5个
- 主键原则