数据库设计规范:
一 命名规范:
1、所有数据库对象名称必须使用小写字母并用下划线分割
2、所有数据库对象名称禁止使用MySQL保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)
3、数据库对象的命名要做到见名识意,并且最好不超过32个字符
4、临时表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀
5、所有存储相同数据的列名和列类型必须一致
二 数据库基本设计规范:
1、所有表必须使用Innodb存储引擎(MySQL5.5之前默认使用MyIsam,5.6以后默认的为Innodb)
2、数据库和表的字符集统一使用utf8mb4的utf8mb4_0900_ai_ci字符集(数据库版本mysql8以上)
3、所有表和字段都需要添加注释(使用 comment 从句添加表和列的备注)
4、尽量控制单表的数据量大小,建议控制在500万以为。
5、谨慎使用MySQL分区表
6、尽量做到冷热数据分离,减小表的宽度
MySQL 的sql_mode不能设置为only_full_group_by模式
7、禁止在表中建立预留字段
8、禁止在数据库中存储图片,文件等大的二进制数据
9、禁止在线上环境做压力测试
10、禁止从开发环境,测试环境直接连接生产环境数据库
11、外键关联表时必须设置级联删除和级联更新(ON DELETE cascade ON UPDATE cascade)
三 数据库字段设计规范:
1、优先选择符合存储需要的最小的数据类型
原因: 列的字段越大,建立索引时所需要的空间也就越大,这样一页中所能存储的索引节点的数量也就越少,遍历时所需要的IO次数也就越多。
2、避免使用TEXT,BLOB数据类型,最常见的TEXT类型可以存储64K的数据
a. 建议把 BLOB 或是 TEXT 列分离到单独的扩展表中
b.TEXT 或 BLOB 类型只能使用前缀索引**
3、避免使用枚举ENUM类型
ENUM 类型的 ORDER BY 操作效率低
4.尽可能把所有列定义为NOT NULL<