数据库规范

234 阅读2分钟
  1. 所有数据库对象名称必须使用小写字母并用下划线分割
    MySQL严格区分大小写

  2. 所有数据库对象名称禁止使用MySQL保留关键字
    例如from date常见关键字

  3. 命名要做到见名识义,最好不要超过32个字符

  4. 临时表以tmp为前缀日期为后缀
    备份表以bak为前缀日期为后缀

  5. 所有存储相同数据的列明和列类型必须一致
    否则做连接的时候会进行转换,会导致索引失效

  6. 尽可能的使用Innodb存储引擎,除非有特殊需求

  7. 字符集统一使用utf8

  8. 所有表和字段都要添加注释,备忘,维护好数据库字典

  9. 单表数据量尽可能控制在500万以内,并非最大限制
    可以用历史数据归档和分表来控制

  10. 谨慎使用分区表,尽可能少的跨分区查询

  11. 控制了列数,更有效的利用缓存

  12. 把经常使用的列放在一个表中

  13. 禁止建立预留字段

  14. 禁止存储图片或文件等二进制数据,建议存储二进制所在的地址信息

  15. 禁止在线上做压力测试

  16. 冷热数据分离


索引设计规范

  1. 单张表索引数量不超过5个
    索引并不是越多越好,索引可以提高效率同样可以降低效率
  2. 必须要有主键
    不使用频繁更新的列和多列主键
    选用值顺序增长的列为主键 建议选用自增id
  3. 索引建议
    从where从句中的列或包含在ORDER BY、GROUP BY、DISTINCT中的字段
    多表JOIN关联列
  4. 索引顺序是从左到右的
    区分度最高的列放在联合索引的最左侧
    尽量把长度小的列放在左侧
    把使用频繁的列放在左侧
  5. 避免冗余和重复的索引
  6. 对于频繁的查询有限使用覆盖索引
  7. 尽量避免使用外键

数据库字段设计规范

  1. 优先选择符合存储需要最小的数据类型
    将字符串转化为数字类型存储
    对于非负数选择无符号整形进行存储
  2. VARCHAR(N)N代表的是字符数不是字节数
  3. 尽量不适用TEXT,BLOB,ENUM数据类型
  4. 不要用字符串存储日期型数据

数据库SQL开发规范

  1. 建议使用预编译语句
  2. 尽量避免类型隐式转换
  3. 避免使用双%号的查询条件
  4. 一个SQL只能利用到复合索引中的一列进行范围查询
  5. 禁止使用SELECT *
  6. 避免使用子查询,可以优化为join