数据库规范

如果引用此文请提供原文出处。

上篇文章中我们谈到了代码规范,遵守代码规范的项目是提高代码质量和易读性的有效保障,如果一位不熟悉业务的同学加入项目中,易读的源码只能窥视项目一角,而需要了解整个项目业务的来龙去脉,则需要知道业务数据的存储结构--数据库设计。优秀的数据库设计是项目系统易扩展、易维护、提高可读性的有力保障。

通过怎样的途径来保障优秀的数据库设计勒?维护好数据库E-R图是前提,遵循数据库规范则是重要根本。制定数据库规范是项目质量的重要组成部分,业界也有许多架构师分享的他们的规范,都是值得学习的。我在此推荐一下沈询老师的文章,文中所提规范都能契合到我的点,《58到家数据库30条军规解读》和《再议数据库军规》希望没有拜读过的都学习学习。

在遵循沈询老师所提规范的前提下,根据我的工作经验和项目中存在的问题,追加了如下代码规范,如有不妥,欢迎拍砖。

1、表名以业务系统缩写为前缀,方便通过表名定位业务系统。比如 ucenter_user。

2、每张表必须存在 id,creat_time 字段,如果表会修改必须存在 update_time。

3、非唯一索引以idx为前缀,唯一索引以uq为前缀。比如 idx_name, uq_mobile。

4、如果不是临时表,则不允许物理删除数据,只能逻辑删除数据。

5、对性能要求高的系统枚举类型字段尽量存数字而非字符串。

6、无论表大小与否,关联查询不能超过3张表,大表则根据实际情况而定。

7、数据库必须设置 max_allowed_packet 参数限制,批量插入语句必须控制长度,尽量控制在100记录。

8、禁止一个字段分饰多个角色。比如一个字段废弃后,为了不做表变更,在原字段上赋予新的含义。

9、布尔类型的字段不需要用"is_"开头,比如 delete(推荐)、is_delete(不推荐)。

10、布尔类型的取值必须是1为真,0为假,严禁出现相反的情况。

参考文献:

《58到家数据库30条军规解读》

《再议数据库军规》

《高性能MySQL》

联系方式:

https://github.com/longtian2

如有用请不吝打赏


你可能感兴趣的:(数据库规范)