数据库设计规范

1,685 阅读1分钟

命名规范

  • 所有数据库对象名称必须小写
  • 命名要做到见名识意,禁止使用MySQL保留关键字
  • 临时表以temp_开头,备份表以bak_开头并以时间戳结尾
  • 所有存储相同数据库的列名和列类型必须一致

基本设计规范

  • 所有表必须使用Innodb存储引擎
  • 所有表及字段都要有备注信息,并使用UTF8字符集
  • 要做到尽量控制单表大小(单表不超过500w行),并把冷热数据分离
  • 禁止使用预留字段及在表中存储大的二进制数据

索引设计规范

  • 每个Innodb表都要有一个主键
  • 限制表上索引的数量(不超过5个),避免建立重复和冗余索引
  • 注意合理选择复合索引键值的顺序

字段设计规范

  • 选择符合存储要求的最小数据类型
  • 避免使用Blob或是Text类型及ENUM类型
  • 每个字段尽可能具有NOT NULL属性
  • 使用datetime或者timestamp类型存储时间

SQL开发规范

  • 建议使用预编译语句进行数据库操作
  • 避免数据类型的隐式转换
  • 禁止使用select*进行查询及没有字段列表的insert操作
  • 优先利用表上已经存在的索引

操作行为规范

  • 超过100w行的批量写操作,要分批多次操作
  • 大表操作使用pt-online-schema-change修改表结构
  • 禁止为程序使用账号赋予super权限
  • 对于程序连接数据库账号,遵循权限最小原则(禁止跨库,禁止drop权限)