数据库命名设计规范

数据库命名设计规范

2023年7月13日发(作者:)

数据库命名、设计规范

一、 数据库表及字段

1. 数据库表的命名规范:

表的前缀应该用系统或模块的英文名的缩写(全部大写)。如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀。例如:如果有一个模块叫做BBS(缩写为BBS),那么你的数据库中的所有对象的名称都要加上这个前缀:BBS_ + 数据库对象名称,BBS_CustomerInfo标示论坛模块中的客户信息表。

表的名称必须是易于理解,能表达表的功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须大写。如果当前表可用一个英文单词表示的,请用完整的英文单词来表示;例如:系统资料中的客户表的表名可命名为:SYS_Customer。如果当前表需用两个或两个以上的单词来表示时,尽量以完整形式书写,如太长可采用两个英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。

表名称不应该取得太长(一般不超过三个英文单词)。表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。在命名表时,用单数形式表示名称。例如,使用 Employee,而不是 Employees。对于有主明细的表来说。明细表的名称为:主表的名称 + 字符Dts。例如:采购定单的名称为:PO_Order,则采购定单的明细表为:PO_OrderDts;对于有主明细的表来说,明细表必须包含两个字段:主表关键字、SN,SN字段的类型为int型,目的为与主表关键字联合组成明细表的关键字,以及标示明细记录的先后顺序,如1,2,3……。表必须填写描述信息,后台表名尽量与前台表名相同,后台独有的表应以_b作为后缀。如r_gggd_b。

数据库表的命名采用如下规则:

1)表名用模块名_开头,表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。

2)多个单词间用下划线(_)进行连接。若库中有多个系统,表名采用系统名称+单词或多个单词,系统名是开发系统的缩写,如VNET。

1 3)表中含有的单词建议用完整的单词。如果导致表名长度超过30个字符,则从最后一个单词开始,依次向前采用该单词的缩写。(如果没有约定的缩写,则采用该单词前4个字母来表示)。

2. 字段的命名、设计规范

1)命名规范

凡是具有国家局标准数据要素字段命名规范的遵照国家局标准定义;国家局尚未制定标准的遵照信息资源规划中三段式命名规则命名,字段名不超过18个字符为限。

三段式命名规则如下:修饰词+基本词+类别词,修饰词可以为空。

类别词描述数据要素的性质,常见的类别词及其定义标准如下表:

类别词

编号

编码

数量

说明

是否

类别

毛利

个数

标注

ID

CODE

QTY

DESC

IS

TYPE

GRS

NUM

编码

金额

名称

日期

时间

备注

级别

价格

名称

AMT

NAME

DATE

TIME

NOTE

LVL

PRI

数据库字段的命名必须遵循以下规范:

采用有意义的字段名。字段的名称必须是易于理解,能表达字段功能的英文单词或缩写英文单词,单词首字母必须大写,一般不超过三个英文单词。例如:人员信息表中的电话号码可命名为:Telephone或Tel。产品明细表中的产品名称可用ProductName表示。(推荐一般用完整的英文单词)。

系统中所有属于内码字段(仅用于标示唯一性和程序内部用到的标示性字段),名称取为:“ID”,采用整型或长整型数,具体根据可能的数据量确定,增加记录时取最大值加1,该字段通常为主关键字。

2 系统中属于是业务范围内的编号的字段,其代表一定的业务信息,比如资料信息和单据的编号,这样的字段建议命名为:“Code”,其数据类型为varchar,该字段需加唯一索引。

在命名表的列时,不要重复表的名称;例如,在名为 Employee 的表中避免使用名为

EmployeeLastName 的字段。

不要在列的名称中包含数据类型。

2)设计规范

所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary 、varbinary外,必须有默认值。字符型的默认值为一个空字符值串’’;数值型的默认值为数值0;逻辑型的默认值为数值0;其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的字段没有默认值,必须为NULL。当字段定义为字符串形时建议使用varchar而不用nvarchar。建议在大多数表中(如报销单,申请单),应都有以下字段:字段名说明类型默认值CreatorID创建者int0,CreatedTime创建时间DatetimeNULL

字段的描述 数据库中每个字段的描述(Description)如下:

尽量遵守第三范式的标准(3NF)。表内的每一个值只能被表达一次;表内的每一行都应当被唯一的标示;表内不应该存储依赖于其他键的非键信息

如果字段事实上是与其它表的关键字相关联而未设计为外键引用,需建索引。

如果字段与其它表的字段相关联,需建索引。

如果字段需做模糊查询之外的条件查询,需建索引。

除了主关键字允许建立簇索引外,其它字段所建索引必须为非簇索引。

字段必须填写描述信息。

二、 数据文件

3 如果数据库采用文件系统,而不是裸设备,约定下列命名规则:

1)数据文件以表空间名为开始,以.dbf为结尾,全部采用小写英文字母加数字命名。如该表空间有多个数据文件,则从第2个数据文件开始,在表空间名后加_。 例:对system表空间的数据文件:,system_

2)对oracle数据库的控制文件,用来表示。如,。

3)对oracle数据库的日志文件,在线日志文件用redo<组名><文件序列名>.dbf来表示。其中组名和文件序列名均用2位数字来表示。如第一组的两个文件表示位和。归档日志用arch_%t_%来表示。其中%t和%s均为oracle约定的变量。

三、 表空间

1. 数据库系统表空间

数据库系统表空间包括system表空间,临时表空间,回滚段的表空间。约定下列命名规则:

1)system表空间由数据库直接限定,不能进行修改。

2)临时表空间用temp来表示。如果有多个临时表空间,从第2个临时表空间开始,在temp后面加_数字来表示。

3)回滚段表空间用undotbs来表示。如果有多个回滚段表空间,从第2个回滚段表空间开始,在undotbs后面加_数字来表示。

2. 数据库的用户表空间

数据库的用户表空间用两个字母_<表空间名>来表示。例如:烟叶系统的表空间名为YY_<表空间名>。其中,表空间名分为:

1)数据空间:对于用户的缺省表空间,用default来表示。对于其他的表空间,根据存放在表空间上的表的类别来表示。如放代码的表,用code来表示。放客户资料的表,用customer来表示。尽量用一个表空间来存放该类的表。如果某表特别大,可考虑单独使用一个表空间。

2)索引空间:在相应的数据表空间的名字前加ind_。如对用户缺省表空间的索引空间,用yy_ind_default来表示。对代码表的索引表空间,用yy_ind_code来表示。

四、 存储过程

1. 命名规范

4 存贮过程的命名请遵循以下命名规范:PROC _ + 系统模块缩写(与表前缀类似)+_ +

功能标识 + 代表存贮过程操作的主要表名(不带前缀)或功能的英文单词或英文单词缩写。

如果一个存贮过程只对一个表进行操作,建议存贮过程的名称就用存贮过程所操作的表的表名(不带前缀)。这样有利于根据表名找到相应的存贮过程。

为了在众多的存贮过程中能很快的找到并维护存贮过程,我们按存贮过程的作用将系统的存贮过程进行以下的分类及命名:(以下示例假设存贮过程所在的模块名为ORG)作用第一前缀,第二前缀名(功能标识)示例

用于新增的存贮过程PROC_ORGAddPROC_ORG_Add_Employee

用于修改的存贮过程PROC_ORGUptPROC _ORG_Upt_Employee

用于删除的存贮过程PROC_ORGDelPROC _ORG_Del_Employee

用于单据查询的存贮过程PROC_ORGQryPROC _ORG_Qry_Employee

用于报表统计的存贮过程PROC_ORGRptPROC _ORG_Rpt_GetEmployee

用于一些特殊过程处理的存贮过程PROC_ORGOthPROC _ORG_Oth_SetSystemMessage

如果系统中的存贮过程只有一级,则遵照以上规则命名,如果存在多级,则需要区分其属于哪一级,具体为:PROC + 所属的级次 + _ + 后面的部分,例如:

PROC1_ORG_Add_Subject (没有调用其它存贮过程)

PROC2_ORG_Upt_Subject (调用了第1级的存贮过程)

PROC3_ORG_Qry_Subject (调用了第2级的存贮过程)

2. 设计规范

在存贮过程中必须说明以下内容:

目的:说明此存贮过程的作用。

作者:首次创建此存贮过程的人的姓名。在此请使用中文全名,不允许使用英文简称。

5 创建日期:创建存贮过程时的日期。

修改记录:

修改记录需包含修改顺序号、修改者、修改日期、修改原因,修改时不能直接在原来的代码上修改,也不能删除原来的代码,只能先将原来的代码注释掉,再重新增加正确的代码。修改顺序号的形式为:log1,log2,log3。。。,根据修改次数顺序增加,同时在注释掉的原来的代码块和新增的正确代码块前后注明修改顺序号。

对存贮过程各参数及变量的中文注解。

五、 视图

1. 命名规范

视图的命名请遵循以下命名规范:View _ + 系统模块缩写(与表前缀类似)+_ + 功能标识 + 代表视图查询的主要表名(不带前缀)或功能的英文单词或英文单词缩写。如果一个视图只对一个表进行查询,建议视图的名称就用视图所查询的表的表名(不带前缀)。这样有利于根据表名找到相应的视图。为了在众多的视图中能很快的找到并维护视图,我们按其作用将系统的视图进行以下的分类及命名:(以下示例假设视图所在的模块名为ORG)作用第一前缀,第二前缀名(功能标识)示例

用于单据查询的视图View_ORGQryView_ORG_Qry_Employee

用于报表统计的视图View_ORGRptView_ORG_Rpt_GetEmployee

用于一些特殊过程处理的视图View_ORGOthView_ORG_Oth_SetSystemMessage

如果系统中的视图只有一级,则遵照以上规则命名,如果存在多级,则需要区分其属于哪一级,具体为:View + 所属的级次 + _ + 后面的部分

例如:

View1_ORG_Add_Subject (没有调用其它视图)

View2_ORG_Upt_Subject (调用了第1级的视图)

6 View3_ORG_Qry_Subject (调用了第2级的视图)

2. 设计规范

在视图中必须说明以下内容:

目的:说明此视图的作用。

创建者:首次创建此视图的人的姓名。在此请使用中文全名,不允许使用英文简称。

修改者、修改日期、修改原因:如果有人对此视图进行了修改,则必须在此视图的前面加注修改者姓名、修改日期及修改原因。

对视图各参数及变量的中文注解。

六、 触发器

1. 命名规范:

触发器名用Tri_+表名+类型,触发器名长度不能超过30个字符。触发器名用小写的英文单词来表示。类型包括I、D、U(即Insert、Delete、Update)

2. 设计规范

在触发器中必须说明以下内容:

目的:说明此触发器的作用。

创建者:首次创建人的姓名。在此请使用中文全名,不允许使用英文简称。

修改者、修改日期、修改原因:如果有人对此视图进行了修改,则必须在此视图的前面加注修改者姓名、修改日期及修改原因。

对其中各参数及变量的中文注解。

七、 变量名

变量名采用小写,若属于词组形式,用下划线分隔每个单词,如my_err_no。

7 变量名的长度限制为30,变量的命名都采用英文字符,禁止使用中文命名。绝对不要在对象名的字符之间留空格。

八、 函数

函数名用Fu_开头,函数名长度不能超过30个字符。函数名用小写的英文单词来表示。

九、 主键

主键的命名采用如下规则:

主键名用Pk_开头,后面跟该主键所在的表名。主键名长度不能超过30个字符。如果过长,可对表名进行缩写。缩写规则同表名的缩写规则。主键名用小写的英文单词来表示。

十、 外键

外键的命名采用如下规则:

外键名用Fk_开头,后面跟该外键所在的表名和对应的主表名(不含t_)。子表名和父表名自己用下划线(_)分隔。外键名长度不能超过30个字符。如果过长,可对表名进行缩写。缩写规则同表名的缩写规则。外键名用小写的英文单词来表示。

十一、 索引

索引的命名采用如下规则:

1)索引名用小写的英文字母和数字表示。索引名的长度不能超过30个字符。

2)主键对应的索引和主键同名。

3)每类索引都用_结束。

4)唯一性索引用uni_开头,后面跟表名。一般性索引用ind_开头,后面跟表名。

5)如果索引长度过长,可对表名进行缩写。缩写规则同表名的缩写规则

十二、 序列

数据库序列的命名采用如下规则:

序列名用seq_开头,后面跟使用该序列的字段名。如果有几个字段用同一个序列,用下划线(_)连接几个字段的名称。如果不同表中相同的字段名需要使用不同的序列,则在字段名后加表的特征,用下划线(_)连接。序列名长度不能超过30个字符。序列名用小写的英文单词来表示。

8 十三、 SQL语言

1. 所有关键字必须大写。

如:INSERT、UPDATE、DELETE、SELECT及其子句。IF……ELSE、CASE、DECLARE等。

所有函数及其参数中除用户变量以外的部分必须大写。

在定义变量时用到的数据类型必须小写。

所有关键字必须大写

2. 注释

注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性。本规范建议:

1)注释以英文为主。

实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用。为避免后续版本执行过程中发生某些异常错误,建议使用英文注释。

2)注释尽可能详细、全面。

创建每一数据对象前,应具体描述该对象的功能和用途。传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。

3)注释语法包含两种情况:单行注释、多行注释

单行注释:注释前有两个连字符(--),最后以行尾序列(CR-LF)结束。一般,对变量、条件子句可以采用该类注释。

多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。

4)注释简洁,同时应描述清晰。

5)函数注释:

9 编写函数文本--如触发器、存储过程以及其他数据对象--时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:

/************************************************************************

*name : --函数名

*function : --函数功能

*input : --输入参数

*output : --输出参数

*author : --作者

*CreateDate : --创建时间

*UpdateDate : --函数更改信息(包括作者、时间、更改内容等)

*************************************************************************/

CREATE PROCEDURE sp_xxx

3. 条件执行语句if…else

条件语句块(statenemt block,以 begin…end为边界)仅在if子句的条件为真时才被执行。为提高代码的可读性,建议嵌套不多于5层。还有,当嵌套层次太多时,应该考虑是否可以使用case语句。

4. 重复执行while o

需要多次执行的语句,可以使用while结构。其中,控制while循环的条件在任何处理开始之前需要先执行一次。循环体中的保留字break无条件的退出while循环,然后继续处理后续语句;保留字continue重新计算while条件,如果条件为真,则从循环开始处重新执行各语句。

10 5. 书写格式

数据库服务器端的触发器和存储过程是一类特殊的文本,为方便开发和维护,提高代码的易读性和可维护性。规范建议按照分级缩进格式编写该文本。顺序执行的各命令位于同一级;条件语句块(statenemt block,以 begin…end为边界)位于下一级,类推。SQL语句是该文本的主体。为适应某些教复杂的用户需求,SQL语句可能比较庞大。为方便阅读和维护,规范建议按照SQL语句中系统保留字的关键程度再划分为三级。具体分级请参照下表。其中,非系统保留字(如字段名、数据表名、标点符号)相对本级保留字再缩进一级。多个连续的非保留字可以分行书写,也可以写在同一行。当WHERE包含的条件子句教复杂时,应该每行只写一个条件分句,并为重要的条件字句填写单行注释。

在保证基本缩进格式的前提下,可以通过对齐某些重要关键字(如条件关键字AND、OR,符号 = 、 <> 等)来进一步提高文本的易读性和可维护性。

相邻两级的缩进量为10个空格。这也是ISQL编辑器默认的文本缩进量。另外,在ISQL编辑器中,一个TAB键也相当于10个空格。

11

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689243971a225525.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信