数据库对象命名方式,见名知意,强化分工,保证数据库高效稳定运行

本文档明晰数据库设计原则和规范,规范数据库对象命名方法,见名知意,加强分工,保证数据库高效稳定运行

1数据库设计原则

1)充分考虑业务逻辑和数据分离,数据库只作为一个保证ACID特点的关系数据的持久化储存系统,尽量减低使用自定义函数、存储过程和视图,不用触发器。

2)充分考虑数据库整体安全设计小型数据库设计,数据库管理和使用人员权限分离。

3)充分考虑具体数据对象的访问频率及性能需求,结合主机、存储等需求,做好数据库性能设计。

4)充分考虑数据下降模型,决策是否采用“分布式(水平分拆或则垂直分拆)”模式。

5)充分考虑业务数据安全等级,设计合适的备份和恢复策略。

2设计规范2.1约定

1)通常情况下设计遵循数据的设计规范3NF,尽量降低非标准范式或则反模式使用。

3NF规定:

Ø表内的每一个值都只能被抒发一次。

Ø表内的每一行都应当被惟一的标示(有惟一键)。

Ø表内不应当储存依赖于其他键的非键信息。

常见关键字(不得直接作为相关命名):range、match、delayed、select、and、from、where、not、in、out、add、as、user、name、key、index、type、group、order、max、min、count、concat、by、desc、asc、null等等,更多请参考MySQL官方保留字。

2)数据库和表的字符集统一:字符集(utf8mb4),排序规则(utf8mb4_general_ci)

2.2表设计规范

1)应当按照系统构架中的组件界定,针对每位组件所处理的业务进行组件单元的数据库设计;不同组件间所对应的数据库表之间的关联应尽可能降低,确保组件对应的表之间的独立性,为系统或表结构的构建提供可能性。

2)采用领域模型驱动的形式和自顶向上的思路进行数据库设计,首先剖析系统业务,按照职责定义对象。对象要符合封装的特点,确保与职责相关的数据项被定义在一个对象之内,不会出现职责描述缺位或多余。

3)应针对所有表的字段和字段构建索引,有针对性地构建组合属性的索引。

4)尽量少采用储存过程。

5)设计出的表要具有较好的使用性。

6)设计出的表要尽可能降低数据冗余,确保数据的确切性。

2.3数组规范

1)一行记录必须表内惟一,表必须有字段。

2)假如数据库类型为MYSQL,应尽量以自增INT类型为字段。假如数据库类型为ORACLE,建议使用UUID为字段。

3)日期数组,如须要依照时间进行KEY分区或则子分区,则使用VARCHAR2类型储存,储存格式为:YYYYMMDD。若果不须要以KEY方式作为分区列,则使用DATE或则DATETIME类型储存。不建议使用时间戳储存时间。

4)数组名称和数组数据类型对应,如DATE命名数组,则储存时间精确到日,如TIME命名数组,则储存时间精确到时分秒,甚至微秒。

2.4命名规范类2.4.1约定

1)数据库对象命名清晰,尽量做到见名知意,在进行数据库建模时备注对象,以便别人理解。

2)数据库类型为MYSQL,采用全大写英语词组

3)数据库类型为ORACLE,则使用驼峰式命名规范

4)数据库对象命名宽度不能超过30个字符

3管理范围

管理数据库中所有对象,包括库,表,视图,索引,过程,自定义函数,包,序列,触发器等

3.1建库

图片[1]-数据库对象命名方式,见名知意,强化分工,保证数据库高效稳定运行-唐朝资源网

1)数据库名:采用大写英语词组全拼或汉字大写拼音,多个词组或拼音采用顿号”_”联接

2)数据库编码规则及排序规则:字符集(utf8mb4),排序规则(utf8mb4_general_ci)

3)建库其他要求:库名与应用名称尽量一致

3.2建表

表名应使用名词性质大写英语词组。假如须要词组短语来进行概括,词组与词组之间使用英语全角输入状态下_联接。假如超长,则从后面词组开始截取,保留词组前三位,保留完整的最后一个词组,假如仍然超长,则保留上面词组首字母,直接和最后一个词组联接;临时表命名以TMP开头,命名格式为TMP_模块/用途名称_名子拼音首字母;表名不能直接采用关键字命名

1)表命名:采用“业务名称_表的作用”格式命名(比如:alipay_task/force_project/trade_config)

2)建表其他要求:表名宽度不能超过30个字符;一定要指定一个字段数组;必需要依照业务对表注释;假如更改数组涵义或对数组表示的状态追加时,须要及时更新数组注释;

3)表必备数组:

`is_delete`tinyint(1)unsignedNOTNULLDEFAULT'0'COMMENT'状态(1删掉、0未删掉)',

`is_enabled`tinyint(1)unsignedNOTNULLDEFAULT'1'COMMENT'状态(1启用、0作废)',

`op_first`varchar(50)DEFAULTNULLCOMMENT'创建人',

图片[2]-数据库对象命名方式,见名知意,强化分工,保证数据库高效稳定运行-唐朝资源网

`op_first_time`datetimeDEFAULTNULLCOMMENT'创建时间',

`op_last`varchar(50)DEFAULTNULLCOMMENT'更新人',

`op_last_time`datetimeDEFAULTNULLCOMMENT'更新时间',

3.3建数组

1)数组命名:

表中标示惟一性数组必须以标示性简称+id命名。其余数组依据储存信息,使用名词性质英语词组表示,如须要词组短语来进行概括,词组与词组之间使用中文全角输入状态下_联接。字段引用主键使用字段表_id的方式命名;数组名必须使用大写字母或数字,严禁出现数字开头,严禁两个顿号中间只出现数字;抒发是与否概念的数组,必须使用is_xxx的方法命名,数据类型是unsignedtinyint;抒发逻辑删掉的数组名is_deleted,1表示删掉,0表示未删掉

2)数组类型、长度

假如储存的字符串宽度几乎相等,使用char定长字符串类型;小数类型为decimal;id必为字段,类型为bigintunsigned;应尽量以自增INT类型为字段;优先选择符合储存须要的最小的数据类型;将字符串转化为数字类型储存;对于非负数据采用无符号整形进行储存signedint-2147483648-2147483648,unsignedint0-2147483648,有符号比无符号多出一倍的储存空间;varchar(n)n代表字符数,不是字节数小型数据库设计,varchar(255)=765个字节,过大的宽度会消耗更多的显存;防止使用textBLOB数据类型,建议textBLOB列分离到单独的扩充表中,textBLOB类型只能使用前缀索引;防止使用enum数据类型,更改enum须要使用alter句子,enum类型的orderby操作效率低,须要额外操作,严禁使用数值作为enum的枚举值;尽可能把所有列定义为notnull,索引null列须要额外的空间来保存,所以要占用更多的空间,进行比较和估算时要对null值做非常的处理;严禁字符串储存日期型的数据,缺点1:难以用日期函数进行估算和比较,缺点2:用字符串储存日期要占用更多的空间;使用timestamp或datetime类型储存时间,timestamp储存空间更小;财务的相关金额使用decimal类型,decimal类型为精准浮点数,在估算时不会遗失精度,float、double非精准浮点数

3)数组其他要求

数组名称宽度不能超过30个字符、尽量降低或则不使用联合字段、字段尽可能不容许为null(为null时设定默认值)、文本类型数组,属性字符集(utf8mb4),排序规则(utf8mb4_general_ci)、字段必须依照业务进行注释。

3.4建索引

图片[3]-数据库对象命名方式,见名知意,强化分工,保证数据库高效稳定运行-唐朝资源网

字段索引名为pk_数组名;惟一索引名为uk_数组名;普通索引名则为idx_数组名。

说明:pk_即primarykey;uk_即uniquekey;idx_即index的简称。

3.5创建数据库表视图

1)视图命名:以”v_项目名/模块名_用途”格式命名

2)视图其他要求:视图名称宽度不能超过30个字符

3.6建储存过程及自定义数据库函数

1)储存过程命名:以”sp_用途”格式命名

2)自定义数据库函数:以“fn_用途”格式命名

3)储存过程或自定义数据库函数:参数命名以“p_”开头命名;内部变量命名以“v_”开头命名;游标命名以“cur_loop_”开头命名;循环变量命名以“i_found_”开头命名。

3.7建数据库用户

用户命名:采用授权用户姓名简拼大写命名

3.8其他要求

1)查询大数据表,参数数组需建索引;

2)数据库表、字段删掉或变更操作(a-不须要的表或数组,通常备注“作废”即可;b-须要更改的表或数组,先备注作废原表或原数组,再创建新表或新数组,且备注好作废缘由。);

© 版权声明
THE END
喜欢就支持一下吧
点赞147赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容