数据库设计规范

一、数据库涉及字符规范

采用大小写英文字母和数字,加上下划线'_'。字段描述及表信息描述使用中文解释大概含义。

注意事项:

1. 表名及字段名称采用业务相关含义英语翻译,禁止直接使用拼音首字母简写。

2. 注意MYSQL及操作系统命令相关系统关键词,禁止使用关键词。

3. 所有表使用相同命名的字段,类型必须一致,以方便开发理解。

二、数据库命名规范

数据库根据业务命名,并尽量以应用或者系统使用名称做为库名,以小写英文字母定义。

比如:wms orders 

三、数据表命名规范

应用中相关功能的数据表使用同一前缀,如论坛的表使用bbs_前缀,订单的数据表使用orders_前缀,数据表名使用小写英文以及下划线组成,表描述使用中文尽量简要易懂。

比如:bbs_users论坛登录用户表bbs_talk论坛主题记录表

bbs_talk_detail论坛讨论明细表orders_buy购买订单表orders_product订单购买产品表

表不使用时根据实际情况做备份或者删除,并在表描述中添加中文“弃用(日期)”字样,并在数据字典文档中记录弃用原因。

备份数据表将正式表名加上备份时间组成,如:bbs_talk_detail20160802

四、字段命名规范

字段名称使用存储数值相关含义英文单词组合完成,字段定义使用小写英文字母下划线'_'和数字,如与其它表有相同字段,但字段含义不同时建议截取表名三位或者二位做为字段前缀。比如:bbs_users 表的字段: order_buy_id  order_code order_users_id

外键关联字段使用对应外键关联表名称加_ID进行命名,比如:bbs_talk中需要关联bbs_users表,字段命名为:bbs_users_id

五、字段类型规范

用尽量少的存储空间来存数一个字段的数据,能用int的就不用char或者varchar,能用tinyint的就不用int,能用char(20)时不用varch(50),时间戳字段尽量用int型,将日期格式转换成数字类型进行存储,在读取时使用函数转换显示格式。

六、数据库设计文档规范

所有数据库设计要形成文档,在对数据库进行增删改之前必须记录文档,并告知对应功能开发的技术人员,并确认是否正确,文档以模块化形式表达。

文档格式如下:(如只有增加部分可只写增加部分)

orders.orders_buy购买订单数据表

序号字段名称字段定义索引字段描述REMARK

1order_buy_idint(11)PRI订单数据表ID

2order_codebigint(20)UNI订单编号NO_订单编号唯一键

3order_users_idint(11)MUL订单所有人_外键关联USER表ID

4from_plattinyint(1)订单来源_1:pc_2:wap_3:安卓_4:ios

5statustinyint(1) 订单是否有效_0失效1有效_弃用20180101

6if_canceltinyint(1) 订单是否取消_0取消1正常

7if_paytinyint(1) 订单是否支付_0未支付1支付

8create_timebigint(14) 记录日期_格式(20151212235959)

9update_timebigint(14) 更新日期_格式(20151212235959)

10descriptionvarchar(255) 订单备注

11image_idsvarchar(128) 图片ID_取自d_mini.t_file表id

七、索引使用原则:

1. 所有表必须有ID字段并做为主键

2. 尽量不要使用不定长字符类型,精度数字类型,文本类型字段索引,对描述类极小型数据量的数据表和频繁更新字段可不使用索引

3. 使用组合索引时要考虑实际业务需求,减少组合索引使用量

4. 索引定义为小写index_,外键索引使用fk_做为前缀,库表名称简写加字段做为索引名称。比如:index_orders_buy_orderscode fk_orders_buy_orderusers_id

八、sql语句规范

SQL语句中关键词全部大写,比如SELECT,INSERT,UPDATE,FROM,WHERE,ORDERS BY等,表名及表别名使用小写字符,字段别名使用大写字符,尽量将格式对齐,并使用/* 字段或者表关联描述 */写清楚描述或者直接使用  -- 描述内容,减少后期语句阅读难度。

如:

SELECT

       columns_all.table_schema  'DB_NAME',  /*库名称*/

       columns_all.table_name  'TABLE_NAME',  /*表名称*/

       columns_all.ordinal_postition  'FILED_NO',   /*字段序号*/

       columns_all.column_name  'FILED_NAME',  /*字段名称*/

       columns_all.column_type  'FILED_TYPE',  /*字段定义*/

       '' AS 'REMARK'

       FROM  information_schema. column columns_all  

  /*字段信息表*/

       WHERE columns_all.table_schema  NOT IN ('information_schema')  /*指定查询条件,不包含库*/

九、禁止说明

不允许使用触发器、函数和定时器,存储过程在互联网业务应用中禁止使用,在内部报表类应用尽量减少存储过程的使用。

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