Mysql规范篇解读与案例-阿里巴巴开发手册
- 1. 建表规约
- 1.1 表达是与否概念的字段
- 1.2 表名、字段名命名规范
- 1.2.1 必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字
- 1.2.2 表名不使用复数名词
- 1.2.3 禁用保留字
- 1.3 索引命名
- 1.4 小数类型
- 1.5 字符串类型
- 1.5.1 字符串长度几乎相等,使用 char 定长字符串类型
- 1.5.2 varchar使用规范
- 1.6 表必备字段
- 1.7 表规范建议
- 1.7.1 表的命名遵循 业务名称_表的作用
- 1.7.2 库名与应用名称尽量一直
- 1.7.3 新增或者修改字段及时更新注释
- 1.7.4 单表数据超过500万行 或者大于2GB 才推荐使用分库分表
- 2. 索引规约
- 3.SQL语句
1. 建表规约
1.1 表达是与否概念的字段
- 必须使用 is_xxx 的方式命名
- 数据类型是 int tinyint
正例:表达逻辑删除的字段名 is_delete,1 表示删除,0 表示未删除。
反例:delete
1.2 表名、字段名命名规范
1.2.1 必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字
- 数据库字段名更改代价很大 可能改一个字段名就要修改整个业务线
- mysql windows 不区分大小写 但在liunx中是区分大小写的
正例:dic_config ,dic_project_name,project3_level
反例:DicConfig ,dicProjectName,project_3_level
1.2.2 表名不使用复数名词
正例:user,person,dept
反例:users,persons,depts
1.2.3 禁用保留字
- 禁用保留字,如 desc、range、match等
1.3 索引命名
- 主键索引名为 pk_字段名(primary key)
- 唯一索引名为 uk_字段名(unique key)
- 普通索引名则为 idx_字段名(index)
1.4 小数类型
- 小数类型为 decimal,禁止使用 float 和 double
- float和double 都存在丢失精度的问题
1.5 字符串类型
1.5.1 字符串长度几乎相等,使用 char 定长字符串类型
- 比如性别存储 男/女 就应使用char类型进行存储
1.5.2 varchar使用规范
- varchar是可变长字符串,长度不要超过5000
1.6 表必备字段
- id(主键),create_time(创建时间),update_time(更新时间)
1.7 表规范建议
1.7.1 表的命名遵循 业务名称_表的作用
- 见名思意
正例:wxpay_user_bill (微信支付用户账单)
1.7.2 库名与应用名称尽量一直
- 方便查找和业务区分
1.7.3 新增或者修改字段及时更新注释
- 避免在后面使用时忘记该字段的含义
1.7.4 单表数据超过500万行 或者大于2GB 才推荐使用分库分表
- 如果数据量在2-3年之间达不到这个级别无需在建表时就考虑分库分表
2. 索引规约
3.SQL语句