数据库命名规范(参考)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据文件命名采用系统名+_+文件类型,比如系统名为kupage,则数据库文件命名为kupage_database.mdf,有的数据库文件有多个,比如SQL Server就有2个,一个是数据库文件,另一个是日志文件,那么他们的文件命名分别为kupage_database.mdf,kupage_log.log。
文件名全部采用小写。
1. 实体(表)的命名
1) 表以名词或名词短语命名,确定表名是采用复数还是单数形式,此外给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成4 个字母长的别名;如果表的名字由3 个单词组成,从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成4 字母长的别名,其余依次类推)
对工作用表来说,表名可以加上前缀WORK_ 后面附上采用该表的应用程序的名字。
在命名过程当中,根据语义拼凑缩写即可。
注意,由于ORCLE会将字段名称统一成大写或者小写中的一种,所以要求加上下划线。
举例:
定义的缩写 Sales: Sal 销售;
Order: Ord 订单;
Detail: Dtl 明细;
则销售订单明细表命名为:Sal_Ord_Dtl;
2) 如果表或者是字段的名称仅有一个单词,那么建议不使用缩写,而是用完整的单词。
举例:
定义的缩写 Material Ma 物品;
物品表名为:Material, 而不是 Ma.
但是字段物品编码则是:Ma_ID;而不是Material_ID
3) 所有的存储值列表的表前面加上前缀Z
目的是将这些值列表类排序在数据库最后。
4) 所有的冗余类的命名(主要是累计表)前面加上前缀X
冗余类是为了提高数据库效率,非规范化数据库的时候加入的字段或者表
5) 关联类通过用下划线连接两个基本类之后,再加前缀R的方式命名,后面按照字母顺序罗列两个表名或者表名的缩写。
关联表用于保存多对多关系。
如果被关联的表名大于10个字母,必须将原来的表名的进行缩写。
如果没有其他原因,建议都使用缩写。
举例:表Object与自身存在多对多的关系,则保存多对多关系的表命名为:R_Object;
表 Depart和Employee;存在多对多的关系;则关联表命名为R_Dept_Emp
2. 属性(列)的命名
1) 采用有意义的列名,表内的列要针对键采用一整套设计规则。
每一个表都将有一个自动ID作为主健,逻辑上的主健作为第一组候选主健来定义,如果是数据库自动生成的编码,统一命名为:ID;如果是自定义的逻辑上的编码则用缩写加“ID”的方法命名。
如果键是数字类型,你可以用_NO 作为后缀;如果是字符类型则可以采用_CODE 后缀。
对列名应该采用标准的前缀和后缀。
举例:销售订单的编号字段命名:Sal_Ord_ID;如果还存在一个数据库生成的自动编号,则命名为:ID。
2) 所有的属性加上有关类型的后缀,注意,如果还需要其它的后缀,都放在类型后缀之前。
注: 数据类型是文本的字段,类型后缀TX可以不写。
有些类型比较明显的字段,可以不写类型后缀。
3) 采用前缀命名
给每个表的列名都采用统一的前缀,那么在编写SQL表达式的时候会得到大大的简化。
这样做也确实有缺点,比如破坏了自动表连接工具的作用,后者把公共列名同某些数据库联系起来。
3. 视图的命名
1) 视图以V作为前缀,其他命名规则和表的命名类似;
2) 命名应尽量体现各视图的功能。
4. 触发器的命名
触发器以TR作为前缀,触发器名为相应的表名加上后缀,Insert触发器加"_I",Delete 触发器加"_D",Update触发器加"_U",如:
TR_Customer_I,TR_Customer_D,TR_Customer_U。
5. 存储过程名
存储过程应以"UP_"开头,和系统的存储过程区分,后续部分主要以动宾形式构成,并用下划线分割各个组成部分。
如增加代理商的帐户的存储过程为"UP_Ins_Agent_Account"。
6. 变量名
变量名采用小写,若属于词组形式,用下划线分隔每个单词,如@my_err_no。
7. 命名中其他注意事项
1) 以上命名都不得超过30个字符的系统限制。
变量名的长度限制为29(不包括标识字符@)。
2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名。
绝对不要在对象名的字符之间留空格。
3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突
5) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。
假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。
8. SQL语句的编写规范
数据库中存储过程和触发器中涉及大量的SQL语句,对SQL语句的编写规范如下:
关键字大写:在SQL语句的编写中,凡是SQL语句的关键字一律大写,如:SELECT、ORDER BY、GROUP BY、FROM、WHERE、UPDATE、INSERT INTO、SET、BEGIN、END ......
8.1 Rule
ru+Rule标识
8.2 主键
pk+表名+主键标识
8.3 外键
fk+表名+主表名+外键标识
8.4 索引
idx+字段标识
8.5 Default
df+Default标识
9 编程结构和描述
SQL SERVER系统中,一个批处理是从客户传给服务器的一个完整的包,可以包含若干条SQL语句。
批处理中的语句是作为一组去进行语法分析、编译和执行的。
触发器、存储过程等数据对象则是将批处理永久化的方法。
9.1注释
注释可以包含在批处理中。
在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性。
本规范建议:
1、注释以英文为主。
实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用。
为避免后续版本执行过程中发生某些异常错误,建议使用英文注释。
2、注释尽可能详细、全面。
创建每一数据对象前,应具体描述该对象的功能和用途。
传入参数的含义应该有所说明。
如果取值范围确定,也应该一并说明。
取值有特定含义的变量(如boolean 类型变量),应给出每个值的含义。
3、注释语法包含两种情况:单行注释、多行注释
单行注释:注释前有两个连字符(--),最后以行尾序列(CR-LF)结束。
一般,对变量、条件子句可以采用该类注释。
多行注释:符号/*和*/之间的内容为注释内容。
对某项完整的操作建议使用该类注释。
4、注释简洁,同时应描述清晰。
9.2函数注释:
编写函数文本--如触发器、存储过程以及其他数据对象--时,必须为每个函数增加适当注释。
该注释以多行注释为主,主要结构如下:
/*******************************************************************************************
* 存储过程:读取用户所分配的操作模块及具体权限
* 编制者:saiko
* 修改人:
* 编制日期:2004.11.27
* 输入参数:共有2个参数
* @cUserNo:用户编号
* @cUserPassword:验证密码
* 输出参数:@eResult 1. 成功= 销售@0001 2. 失败=Null 3.与@eResult 无关输出是记录集
* 调用例子:declare @eResult varchar(50)exec uChkUserPerm '0755' ,'', '销售'
* 说明:
*
******************************************************************************************/
CREATE PROCEDURE spoxxx
…
9.3条件执行语句if…else
条件语句块(statenemt block,以begin…end为边界)仅在if子句的条件为真时才被执行。
为提高代码的可读性,建议嵌套不多于5层。
还有,当嵌套层次太多时,应该考虑是否可以使用case语句。
9.4重复执行while和跳转语句goto
需要多次执行的语句,可以使用while结构。
其中,控制while循环的条件在任何处理开始之前需要先执行一次。
循环体中的保留字break无条件的退出while循环,然后继续处理后续语句;保留字continue重新计算while条件,如果条件为真,则从循环开始处重新执行各语句。
使用跳转语句goto和标签label也可以方便地实现循环和其他更灵活的操作。
SQL SERVER仅具有单通道语法分析器,因此不能解析对尚未创建的对象所做的前向参考。
换言之,跳转到某标签的后续语句应该是可执行的(如不存在可能尚未创建的数据对象)。
9.5书写格式
数据库服务器端的触发器和存储过程是一类特殊的文本,为方便开发和维护,提高代码的易读性和可维护性。
规范建议按照分级缩进格式编写该文本。
顺序执行的各命令位于同一级;条件语句块(statenemt block,以begin…end为边界)位于下一级,类推。
SQL语句是该文本的主体。
为适应某些教复杂的用户需求,SQL语句可能比较庞大。
为方便阅读和维护,规范建议按照SQL语句中系统保留字的关键程度再划分为三级。
具体分级请参照下表。
其中,非系统保留字(如字段名、数据表名、标点符号)相对本级保留字再缩进一级。
多个连续的非保留字可以分行书写,也可以写在同一行。
当WHERE包含的条件子句教复杂时,应该每行只写一个条件分句,并为重要的条件字句填写单行注释。
在保证基本缩进格式的前提下,可以通过对齐某些重要关键字(如条件关键字AND、OR,符号= 、<> 等)来进一步提高文本的易读性和可维护性。
相邻两级的缩进量为10个空格。
这也是ISQL编辑器默认的文本缩进量。
另外,在ISQL编辑器中,一个TAB键也相当于10个空格。
注:按照功能,四类SQL语句(SELECT、INSERT、UPDATE、DELETE)的关键字可以划分为三类:主关键字、次关键字、一般关键字。
如下表所示:
主关键字次关键字一般关键字
SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM语句中的SELECT和FROMANDORBETWEENINLIKE
9.6字体
系统保留字应大写,包括系统公共变量等。
其他字符(如用户自定义变量、用户自定义数据对象名)小写。
需要特殊强调的部分可以大写。
一条完整注释语句的首字符应大写。
对某变量、某条件字句的注释可以全部使用小写。
通过下一节中生成表r_a的删除触发器的实例可以部分说明对象命名、注释、基本书写格式和字符大小写方面的一些注意事项。