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语句