数据库设计规范(简洁)

数据库命名规范

1.所有数据库对象名称必须使用小写字母并用下划线分隔

2.所有数据库对象名称禁止使用mysql保留关键字

3.数据库对象的命名要能做到见名知意,并且最好不要超过32个字符

4.临时库必须以temp为前缀并以日志为后缀

5.备份库,备份表必须以bak为前缀并以日期为后缀

6.所有存储相同数据的列名和列类型必须一致

 

数据库基本设计规范

1.所有表必须使用Innodb存储引擎(5.6以后的默认引擎,支持行级锁)

2.数据库和表的字符集统一(使用UTF-8)(UTF8汉字为3个字节ASCll码占用1个字节)

3.所有表和字段都需要添加注释

4.尽量控制单表数据量大小,建议控制在500万以内

5.谨慎使用Mysql分区表

6.尽量做到冷热数据分离,减小表的宽度

7.禁止在表中建立预留字段

8.禁止在数据库中存储图片,文件二进制数据

9.禁止在线上做数据库压力测试

10.禁止从开发环境,测试环境,直接连接生产环境数据库

 

数据库索引设计规范

1.限制每张表的索引数量,建议单张表索引不超过5个

2.每个Innodb表必须要一个主键

3.添加索引的列一般会出现在WHERE、ORDER BY 、GROUPBY、DISTINCT、JOIN关联列中的字段

4.索引列顺序(区分度最高的列凡在联合索引最左侧,尽量把字段长度小的列放在联合索引的最左侧,使用最频繁的列放在联合索引的左侧)

5.避免简历冗余索引和重复索引

6.对于频繁的查询优先考虑使用覆盖索引

7.避免使用外键(不建议使用外键,使用索引)

 

 

数据库字段设计规范

1.优先选择符合存储需要的最小的数据类型

2.避免使用Text、BOLB、Enum数据类型

3.尽可能把所有列定义为NOT NULL

4.使用Timestamo或datetime类型存储时间

5.同财务相关的金额类,必须使用decimal类型

 

数据库SQL开发规范

1.建议使用预编译语句进行数据库操作

2.避免数据类型的隐式转换

3.充分利用表上已经存在的索引

4.程序连接不同的数据库使用不同的账号,禁止跨库查询

5.禁止使用SELECT * 必须使用SELECT <字段列表> 查询

6.禁止使用不含字段列表的INSERT语句

7.避免使用子查询,可以把子查询优化为join

8.避免使用JOIN关联太多的表(建议不超过5个)

9.减少同数据库的交互次数

10.使用in代替or

11禁止使用order by rand()进行随机排序

12.WHERE从句中禁止对列进行函数转换和计算

13.在明显不会有重复时使用UNION ALL 而不是UNION

14.拆分复杂的大SQL为多个小SQL

 

数据库操作行为规范

1.超过100万行的批量写操作,要分批次多次进行操作。

2.对大表使用pt-online-schema-change修改表结构。

3.禁止为程序使用的账号赋予super权限。

4.对于程序连接数据库账号,遵循权限最小原则。


猜你喜欢

转载自blog.csdn.net/SZStudy/article/details/80385696