lxypeter 2011-01-21
命名和编码过程中,定义有意义的名称,以易于理解、方便书写为原则。
(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*
FROMSCHEMA_NAME.TABLE_NAME
WHERECOL_NAME='XXX'
3.5、可编程对象
3.5.1、代码模板
推荐使用SQLSERVER开发工具中的模板来生成格式,再根据个人习惯进行适当修改即可。
3.5.2、全文注释
/******************************************************************
用途:
作者:
创建日期:
调用举例:
修订记录:
<修订日期><修订人>:修改内容简要说明
******************************************************************/
/******************************************************************
Function:
Author:
Createdate:
executee.g:
modifyrecord:
<date><whom>:description
******************************************************************/
3.5.3、返回值
存储过程中的返回值,分两种:RETURN和OUTPUT参数。
(1)RETURN值作为存储过程的执行状态,0为正常结束,非0为异常结束。
(2)使用OUTPUT参数返回错误编号和错误文本,以供弹出提示;