基于阿里巴巴的java开发手册提炼的数据库设计和使用标准

为统一数据库设计与使用标准,参考阿里巴巴的java开发手册,提炼了几条规范:

一、建表规约:

1、表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线之间只出现数字。
正例:getter_admin task_config level3_name
反例:get特然Admin,taskConfig,level_3_name

2、在表命名的时时,加上业务前缀,例如权限服务相关表,以priv_开头。便于后续的拆库操作。

3、表名、字段名长度上线不超过30

4、建表、建字段的时候必须增加对应的描述信息。

5、主键索引名为pk_表名_字段名,唯一索引名为uk_表名_字段名,普通索引名为idx_表名_字段名。
说明:pk_即primary key; uk_即unique key ; idx_ 即 index的简称。

6、表必备3个字段,id,create_time,update_time。
说明:其中id必为主键,create_time表示创建时间,update_time标识更新时间。create_time和update_time的类型必须为date_time,gmt格式。

  

二、索引规约:

1、超过三个表,禁止使用join。需要使用join的字段,数据类型必须绝对一致。多表关联查询时,保证被关联的字段需要有索引。
说明:即使说表join也要注意表索引,sql性能。

2、页面搜索严禁左模糊或者全模糊,如果确实需要,则走搜索引擎解决。
说明:索引文件具有B-Tree的最左前缀匹配特性,如果左边的值未确定,则无法使用此索引。

  

三、sql语句

1、严禁使用select * 。

2、使用ISNULL()来判断是否为NULL值。
说明:不能使用= <> 等符号。因为 select null=null 返回的是 null,select null<>null 返回的也是null

3、禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。

4、不能使用外键和级联,一切外键概念需要在应用层面解决。
说明:(概念解释)学生表中的student_id是主键,那么成绩表中的student_id则为外键。
如果更新学生表中的student_id,同时触发成绩表中的student_id更新,则为级联更新。
外键与级联更适用于单机低并发,不适用分布式、高并发集群。
级联更新更是强阻塞,存在数据更新风暴的风险。
外键影响数据库的插入速度。

  

猜你喜欢

转载自www.cnblogs.com/dhsunny/p/8950349.html