数据库设计(6)_命名及编码规范_SQL SERVER

时间:2022-02-25 04:41:24

一、综述

命名和编码过程中,定义有意义的名称,以易于理解、方便书写为原则。
(1)避免使用中文,尽量使用全拼音或全英文,以方便国际化;
(2)避免拼音和英文的中西合璧,如:CAOZUO_TIME;
(3)避免在命名中包括空格及特殊字符;
(4)避免使用保留字;
(5)避免名称太长,注意缩写的使用,缩写规则为单词前4个字母,合成词取每个单词前两位组成4位缩写,对于约定束成的缩写不必遵守取4位的规则,比如:NO代表NUMBER,如果取NUMB反而让人费解。

二、命名规范

2.1、数据库

前缀:使用与数据库业务对象相对应的英文单词或英文缩写;
名称:使用与数据库业务性质相对应的英文单词或英文缩写;
举例:BHO_STATISTIC
注意:
(1)名称一律使用单数形式;
(2)动词一律保持动宾结构,通常增、删、改、查、统计的动作,使用ADD、DEL、UPD、QRY、STA作为缩写,以降低命名的长度;

2.2、数据库文件及文件组

(1)数据库文件存放路径:D:/DATA、E:/LOG;
(2)数据库文件组命名:主文件组 PRIMARY,次文件组 FG_业务模块_数据分类,如:FG_CONFIG_ACCOUNT;
(3)数据库主数据文件命名:DBNAME_DATA.MDF,如:BHO_STATISTIC_DATA.MDF;
(4)数据库从数据文件命名:DBNAME_DATA_XX.NDF,XX为两位整数,不足两位第1位用0补齐,如:BHO_STATISTIC_DATA_01.NDF;
(5)数据库日志文件命名:DBNAME_LOG_XX.LDF,XX为两位整数,不足两位第1位用0补齐,如:BHO_STATISTIC_LOG_01.LDF;

2.3、数据库逻辑对象

2.3.1、架构

通常使用业务模块名作为架构名,如:配置模块(CONFIG)。
(1)方便数据库对象分类;
(2)方便权限管理。

2.3.2、表

前缀、名称、后缀均以下划线(_)间隔,字母均使用大写。

(1) 实体表

前缀:ETB(E表示ENTITY)
名称:架构名.ETB_名词
举例:PUBLIC.ETB_LEAGUE

(2)关系表

前缀:RTB(R表示RELATION)
名称:架构名.RTB_实体英文单词缩写实体英文单词缩写[实体英文单词缩写…]
举例:PUBLIC.RTB_HOPA_LEAG(即CONFIG.RTB_HOMEPAGE_LEAGUE)

(3)事实表

前缀:FACT
名称:架构名.FACT_动宾结构
举例:CONFIG.FACT _ADD_USER

(4)报表

前缀:RPT(REPORT的简写)
名称:架构名.RPT_动宾结构
举例:CONFIG.RPT_ ADD_USER

(5)字段

名称:词_词,全部大写
举例:FIRST_NAME
注意:
a)避免字段名中包含表名,如:EMPLOYEE_FIRST_NAME;
b)避免使用数字,如:COLUMN_1、COLUMN_2;
c)避免字段名包含数据类型,如:COLUMN_CHAR、COLUMN_NUMBER;
c)冗余字段可考虑加上前缀X或R,如:X_COL_NAME

(6)索引

前缀:IX,用两个字母是为了和约束一致起来,约束:PK、FK、UQ、CK、DF、NL;
名称:表名列名1[列名2…],为避免索引名太长,也可以使用表名_N,N为自然数;
举例:IX_ CONFIG FACT_ADD_USER_FACT_ID、IX CONFIG _FACT_ADD_USER_1;

2.3.3、视图

前缀:V
名称:架构名.V_动宾结构
举例:CONFIG .V_QRY_USER

2.3.4、存储过程

前缀:P
名称:架构名.P_动宾结构
举例:CONFIG .P_ADD_USER

2.3.5、触发器

前缀:Tr
名称:架构名.Tr_动宾结构
举例:CONFIG.Tr_ADD_USER

2.3.6、函数

前缀:F
名称:架构名.F_动宾结构
举例:CONFIG.F_QRY_USER

其他未列举的数据库逻辑对象,可参考以上规则进行命名。

三、编码规范

3.1、外部参数

(1)对使用频繁、关键性的变量,请在定义时加上注释标明其含义;
(2)尽量少用单字母变量,禁止使用诸如i、j等作为变量名;
(3)注意小写字母l和数字1之间的区别使用;
(4)参数命名约定:@名称_名称,变量名称全部用小写,以示与表中大写字段区别,如:@user_name;

3.2、内部参数

同外部参数

3.3、关键字及系统内置对象

(1)关键字、系统函数、系统变量等,全部大写;
(2)数据类型使用小写,以与参数一致;

3.4、代码块

(1)使用TAB来缩进,设置TAB = 4,并将TAB自动转换为空格;
(2)每行控制在列边界80以内;
(3)注释全部另起一行,不要和代码合在一行,单行注释采用–,,多行注释采用/* 注释内容 */。另外注释内容尽量使用英文,中文注释在英文版的DBMS中可能会导致错误。
(4)多个Begin…End语句嵌套时采用如下方式

BEGIN /*1*/
...
BEGIN /*1.1*/
...
BEGIN /*1.1.1*/
...
END /*1.1.1*/

BEGIN /*1.1.2*/
...
END /*1.1.2*/
END /*1.1*/
END /*1*/

其中1表示第一级嵌套,1.1表示第二级嵌套,1.1.1表示第三级嵌套,1.1.2表示第三级的第二个嵌套… ,一般不要超过三级嵌套。
(5)在保证缩进格式的前提下,可以通过对齐关键字来提高代码的可读性,如下:

SELECT *
FROM SCHEMA_NAME.TABLE_NAME
WHERE COL_NAME = 'XXX'

3.5、可编程对象

3.5.1、代码模板

推荐使用SQL SERVER开发工具中的模板来生成格式,再根据个人习惯进行适当修改即可。

3.5.2、全文注释

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


用 途:
作 者:
创建日期:
调用举例:
修订记录:
<修订日期> <修订人>:修改内容简要说明
******************************************************************/


/******************************************************************
Function:
Author:
Createdate:
execute e.g:
modify record:
<date> <whom>:description
******************************************************************/

3.5.3、返回值

存储过程中的返回值,分两种:RETURN和OUTPUT参数。
(1)RETURN值作为存储过程的执行状态,0为正常结束,非0为异常结束。
(2)使用OUTPUT参数返回错误编号和错误文本,以供弹出提示;

转载自:http://blog.csdn.net/seusoftware/article/details/5524414