好的数据库规范有助于减少软件实现的复杂度,降低沟通成本,本铁律主要涵盖了建库建表、建索引、写 SQL、ORM 映射等方面的处理约定。
1.建库铁律
– | 铁律 | Level | 备注 |
---|---|---|---|
字符集 | 使用 utf-8。如果存储的是表情则选用 utf8mb4 进行存储。 | 强制 | |
排序规则 | 使用 utf8_general_ci | 强制 |
2.建表铁律
– | 铁律 | Level | 备注 |
---|---|---|---|
注释 | 一定要有字段注释。 | 强制 | |
编码 | 使用 utf-8。如果存储的是表情则选用 utf8mb4 进行存储。 | 强制 | |
是否概念的字段 | 必须用 is_xx 命名,数据类型是 unsigned tinyint(1是0否)例如 is_deleted(1删除0未删除)。 | 强制 | 任何字段如果非负数必须unsigned |
表名、字段名 | 只能使用小写字母、下划线或者数字;禁本文来源gaodaimacom搞#^代%!码&网*止以下划线或者数字开头;禁止两个下划线之间只出现数字;禁用保留字;表名禁止使用复数名词。 | 强制 | |
库名、表名的命名 | 库名尽量与应用名称一致,表名最好用 业务名称_表的作用 命名。 | 强制 | |
索引命名 | 主键索引用 pk_字段名;唯一索引用 uk_字段名;普通索引用 idx_字段名。 | 强制 | pk_ 即 primary key;uk_即 unique key;idx_即 index |
小数类型 | 数据类型是 decimal,禁止使用 float 和 double,float 和 double 存在精度损失,如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数并分开存储。 | 强制 | |
varchar类型 | varchar是可变长字符串,不预先分配存储空间,长度不要超过5000个字符,如果长度大于5000应用text(独立出一张表来,用主键来对应,避免影响其他字段的索引效率)。 | 强制 | |
表名必备三字段 | id(数据类型是 unsigned bigint,单表递增,步长为1),gmt_create、gmt_modified(主动创建时间、被动更新时间,数据类型都是 datetime)。 | 强制 | |
字段冗余 | 字段允许适当冗余,但必须考虑数据一致,冗余字段应具备1)不频繁修改;2)不是varchar超长字段,更不能是text字段。 | 推荐 | |
分库分表 | 单表行数超过500万行或者单表容量超过2GB时,才推荐分库分表。 | 推荐 |