您的当前位置:首页正文

SQL数据库设计命名规范

2020-05-27 来源:榕意旅游网
附录2 SQL Server数据库命名与编码规范

一.数据库对象命名基本规范

1. 总体命名规范

 名称的长度不超过32个字符。

 名称采用英文单词、英文单词缩写和数字,单词之间用“_”分隔。

说明:除非用户提供文档化的行业标准(例如,国标或部颁标准),否则不得违反本规范。

 数据库对象名称首字母必须小写。

 不得采用“_”作为名称的起始字母和终止字母。  名称必须望文知意。

 名称不得与数据库管理系统保留字冲突。  不要在对象名的字符之间留空格。 2. 数据库名

数据库名定义为系统名+模块名,或直接采用系统名。 数据库名全部采用小写。 3. 数据库文件

数据文件命名采用数据库名+_+文件类型+[文件序号].文件后缀,文件序号为1、2、3…9等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时可不加。

文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf。 文件名全部采用小写。 4. 表

表命名要遵循以下原则:

 采用“系统名+_+t_+模块名+_+表义名”格式构成。

 若数据库中只含有单个模块,命名可采用“系统名+t_+表义名”格式构成。  整个表名的长度不要超过30个字符。  系统名、模块名均采用小写字符。

 模块名或表义名均以其英文单词命名,且字符间不加分割符;表义名中单词的首

字符大写,其它字符小写,多个单词间也不加任何分割符,单词全部采用单数形式。

 表别名命名规则:取表义名的前3个字符加最后一个字符。如果存在冲突,适当

增加字符(如取表义名的前4个字符加最后一个字符等)。

 关联表命名为Re_表A_表B,Re 是Relative的缩写,表A 和表B均采用其表义名

或缩写形式。

 数据库设计规范

 数据库中不论是表名还是字段名,都一律用英文,不准出现其它语言;

 为了不增加数据库当中的表名的长度,一般不允许出现如Form或者Table的字样,

如:记录表:应为Record,而不是RecordTable

 数据库当中的表名的命名,不允许出现空格,假如有几个单词出现的话,每个单

词之间用 ”_” 隔开如人事信息表:应为Human_Info,而不是Human Info;每个单词的第一个字母必须大写;如果太长,为了不增加编程的难度可采用缩写的方式,每个单词可取三到四个字母表示,也可根据实际情况,实际习惯进行缩写

5. 属性(列或字段) 属性命名遵循以下原则:

 采用有意义的列名,为实际含义的英文单词,且字符间不加任何分割符。  属性名前不要加表名等作为前缀。  属性后不加任何类型标识作为后缀。

 不要使用“ID”等与系统保留关键字冲突的单词作为列名。 6. 主键

 任何表都必须定义主键。

 表主键命名为:“pk+_+表名(或缩写)+_+主键标识”。 7. 外键

表外键命名为:“fk+_+表名(或缩写)+_主表名(或缩写)+_+主键标识”。 8. 索引

索引的命名为:“表名(或缩写)+_+列名+_idx”。

其中多单词组成的属性列列名取前几个单词首字符,加末单词组成。 9. Default 标识

由“df+_+”组成。 10. Rule 标识

由“ru+_+”组成。 11. 自定义数据类型

自定义数据类型由“ud+_+<自定义数据类型标识>+_+<数据类型>”组成。 12. 触发器

 AFTER型触发器:

系统名+tr_+<表名>_+,其中i,u,d 分别表示insert、update和delete。  INSTEAD OF型触发器:

系统名+ti_+<表名>+_+,其中i,u,d 分别表示insert、update和delete。 13. 视图

视图命名以系统名+v_+模块名作为前缀,其他命名规则和表的命名类似。 14. 存储过程

存储过程命名由“系统名+sp+_+存储过程标识(缩写)”组成。

存储过程标识要以实际含义的英文单词构成,并用下划线分割各个组成部分。 15. 函数

函数命名由“系统名+f+_+函数标识”组成。 16. 变量名

 参数变量命名采用“i (o或io)+_+ 名称”形式,前缀i 或o 表示输入还是输出参数。  过程变量命名采用“l+_+名称”形式。

 变量名采用小写,若属于词组形式,用下划线分隔每个单词。 17. 角色

 全部使用小写字符命名。

 由“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成。 18. 用户

 全部使用小写字符命名。

 由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成。

二.Transact-SQL编程基本规范

1. 一般性注释

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

 注释尽可能详细、全面。

 创建每一个数据对象前,应具体描述该对象的功能和用途。

 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定

含义的变量(如boolean类型变量),应给出每个值的含义。  注释语法包含两种情况:单行注释、多行注释。

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

多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。  注释应当简洁,同时应描述清晰。 2. 函数文本注释

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

/****************************************************************** *name : --函数名 *function : --函数功能 *input : --输入参数 *output : --输出参数 *author : --作者 *CreateDate : --创建时间

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

******************************************************************/ CREATE [OR REPLACE] FUNCTION dfsp_xxx …。

 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。

 在每一个变量声明之后添加注释。说明该变量的用途,通常,简单使用单行注释。  在块的每个主要部分之前添加注释,在块的每个主要部分之前增加注释,解释下—组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述。

 在块和过程的开头注释中还可以增加要访问的数据库等信息。 3. 常用SQL语句的编写基本规范 (1) CREATE 语句 CREATE TABLE publishers (

pub_id char(4) NOT NULL --标识

CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756') OR pub_id LIKE '99[0-9][0-9]'), pub_name varchar(40) NULL, --名称 city varchar(20) NULL, --城市 state char(2) NULL, --州 country varchar(30) NULL --国家 DEFAULT('USA') )

(2) SELECT语句

查询语句采用以下原则编写(可最大化重用共享池中的SQL语句,提高应用程序性能):  将SELECT 语句分为5部分:

由SELECT 开头,后跟一个显示查询结果的列表; 由FROM 开头,后跟一个或多个获取数据所涉及的表; 由WHERE 开头,后跟一个或多个确定所需值的条件;

由GROUP BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总; 由ORDER BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。  每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐,如 SELECT col1, col2, col3 FROM table1 WHERE col1 > col2

GROUP BY col1, col2 ORDER BY col1;

 关键字用大写,列名和表名采用小写。

 语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放在本行。

 当语句的同一部分要延续到下一行时,按下列格式排列: SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10

 将语句中WHERE 和AND 部分格式化,书写布局类似于 WHERE AND AND

 当语句中出现括号时,括号的两边不留空格。

 在SQL语句使用运算符时,操作两边应各留一个空格,如 WHERE X = Y AND A = B AND C = D

(3) INSERT语句 INSERT INTO <要插入的表名>

(<列1>, <列2>, .., <列n-1>, <列n>)

VALUES (<列1值>, <列2值>, .., <列n-1值>, <列n值>) (4) UPDATE语句 UPDATE <要更新的表名> SET <要更新的列> = <列值> (5) DELETE语句 DELETE FROM authors WHERE name = 'McBadden' 4. 条件执行语句(IF)编写规范 条件执行语句IF„ELSE 按以下格式编写 IF <条件表达式> BEGIN

<命令行或程序块> END

[ELSE IF<条件表达式> BEGIN

<命令行或程序块> END]

注:

 若BEGIN…END 之间只包含单独一命令行,为使代码紧凑,BEGIN和END边界也常省略。

 IF„ELSE 语句可以嵌套,为提高代码的可读性,嵌套层次不应多于5 层。  当嵌套层次太多时应考虑使用CASE 语句。 5. 条件选择语句(CASE)编写规范

条件选择语句CASE„WHEN 按以下格式编写 CASE <运算式>

WHEN <运算式> THEN <运算式> „

WHEN <运算式> THEN <运算式> [ELSE <运算式>] END 或者 CASE

WHEN <条件表达式> THEN <运算式> „

WHEN <条件表达式> THEN <运算式> [ELSE <运算式>] END

6. 循环执行语句(WHILE)编写规范

循环执行语句WHILE„CONTINUE„BREAK按以下格式编写 WHILE <条件表达式> BEGIN

<命令行或程序块> [BREAK] [CONTINUE] „

<命令行或程序块> END

因篇幅问题不能全部显示,请点此查看更多更全内容