版本记录:

当前版本:

作 者:

完成日期:

签 收 人:

文件状态:

[ ] 草稿

[√] 正式发布

[ ] 正在修改

签收日期:

1、 编写目的

使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和

继承。

2、 适用范围

本规范适用于公司范围内所有以SQL SERVER 2000 作为后台数据库的应用系统和项目

开发工作。

3、 对象命名规范

3.1 数据库名

数据库名定义为系统名+_+模块名,

如“yd_df” 表示用电系统的电费处理模块数据库。

数据库名全部采用小写。

3.2 数据库文件

数据文件命名采用数据库名+_+文件类型+[文件序号]+文件后缀,

[文件序号]为1、2、3…9 等数值,当数据库中某一文件类型的文件有多个时加上文

件序号以区别。只有一个时可不加。

第2/8页

文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf

文件名全部采用小写。

比如系统名为“yd_df”,则数据库数据文件命名为“yd_df_data.mdf”,日志文件命

名为“yd_df_log.ldf”。

3.3 表

表命名要遵循以下原则:

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

Ø 若数据库中只含有单个模块,命名可采用“系统名+t_+表义名”格式构成

Ø 整个表名的长度不要超过30 个字符

Ø 系统名、模块名均采用小写字符

Ø 模块名或表义名均以其汉语拼音的首字符命名,但常用词也可使用英文单词命名

(如 UserType、UserInfo 等),表义名中汉语拼音均采用小写,且字符间不加分割

符;单词命名的表表义名中单词的首字符大写,其它字符小写,多个单词间也不加

任何分割符,单词全部采用单数形式

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

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

Ø 表的命名如

dft_gy_cbap:系统名(电费 df)+t_+模块名(高压 gy)+_+表义名(抄表安排 cbap)

dft_cbbj: 系统名(电费 df)+t_+表义名(抄表标记 cbbj)

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

缩写形式。

3.4 属性(列或字段)

属性命名遵循以下原则:

Ø 采用有意义的列名,为实际含义的汉语拼音的首字符,且字符间不加任何分割符。

Ø 属性名前不要加表名等作为前缀。

Ø 属性后不加任何类型标识作为后缀。

Ø 不要使用“ID”作为列名。

Ø 关联字段命名以 “cd+_+关联表的表义名(或缩写)+_+字段名”进行

第3/8页

3.5 主键

Ø 任何表都必须定义主键

Ø 表主键命名为:“pk+_+表名(或缩写)+_+主键标识”

如“pk_YHXX_IDKH”等

3.6 外键

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

如“fk_YHLX_YHXX_idcard”等

3.7 索引

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

其中多单词组成的属性列列名取前几个单词首字符,加末单词组成

如yd_kh 表khid 上的index: yd_kh_khid_idx

3.8 Default 标识

由“df+_+<default 标识名>”组成

3.9 Rule 标识

由“ru+_+<Rule 标识名>”组成

3.10 自定义数据类型

自定义数据类型由“ud+_+<自定义数据类型标识>+_+<数据类型>”组成

3.11 触发器

Ø AFTER型触发器

系统名+tr_+<表名>_+<i,u,d的任意组合>

其中i,u,d 分别表示insert、update和delete

Ø INSTEAD OF型触发器

第4/8页

系统名+ti_+<表名>+_+<i,u,d的任意组合>

其中i,u,d 分别表示insert、update和delete

3.12 视图

视图命名以系统名v_+模块名作为前缀,其他命名规则和表的命名类似

3.13 存储过程

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

存储过程标识要以实际含义的汉语拼音的首字符或以动宾形式构成,并用下划线分割各个

组成部分。

如增加代理商的帐户的存储过程为“sfsp_Ins_Agent_Account”。

3.14 函数

函数命名由“系统名+f+_+函数标识”组成

3.15 变量名

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

Ø 过程变量命名采用“l+_+ 名称”形式

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

3.16 角色

Ø 全部使用小写字符命名

Ø 由“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成

如用电系统的查询角色:yd_role_query

3.17 用户

Ø 全部使用小写字符命名

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

如用电系统的管理用户:yd_user_sa

第5/8页

3.18 命名中的其它注意事项

Ø 命名都不得超过30 个字符。变量名长度不要超过29个字符(不包括标识字符@)

Ø 不要在对象名的字符之间留空格

Ø 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突

4、 编码规范

4.1 一般性注释

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

的可读性和可维护性。

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

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

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

的变量(如boolean类型变量),应给出每个值的含义。

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

单行注释:注释前有两个连字符(--),最后以行尾序列(CR-LF)结束。一般,对变

量、条件子句可以采用该类注释。

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

4.1.5 注释应当简洁,同时应描述清晰。

4.2 函数头注释

编写函数文本--如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个

函数增加适当注释。该注释以多行注释为主,主要结构如下:

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

*name : --函数名

*function : --函数功能

*input : --输入参数

*output : --输出参数

*author : --作者

第6/8页

*CreateDate : --创建时间

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

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

CREATE PROCEDURE dfsp_xxx


4.3 大小写约定

SQL语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql 保留字大写。

4.4 代码缩进约定

4.4.1 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进

4.4.2 where 子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连

接符右对齐。

4.5 多表连接时,使用表的别名来引用列

4.6 常用SQL 语句的编写规范

常用SQL 语句的编写示例如下

4.6.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')

)

4.6.2 SELECT语句

SELECT <选择列列表>

[ INTO <新表名> ]

FROM <要选择的表名>

第7/8页

[ WHERE <搜索条件> ]

[ GROUP BY <分组条件> ]

[ HAVING <搜索条件> ]

[ ORDER BY <排序规则> [ ASC | DESC ] ]

4.6.3 INSERT语句

INSERT INTO <要插入的表名>

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

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

4.6.4 UPDATE语句

UPDATE <要更新的表名>

SET <要更新的列> = <列值>

4.6.5 DELETE语句

DELETE FROM authors

WHERE au_lname = 'McBadden'

4.7 条件执行语句(IF)编写规范

条件执行语句IF…ELSE 按以下格式编写

IF <条件表达式>

BEGIN

<命令行或程序块>

END

[ELSE IF <条件表达式>

BEGIN

<命令行或程序块>

END]

注:<1>上式若BEGIN…END 之间只包含单独一命令行,为使代码紧凑,BEGIN和END边界

也常省略

<2>IF…ELSE 语句可以嵌套,为提高代码的可读性,嵌套层次不应多于5 层。当嵌套

层次太多时应考虑使用CASE 语句。

4.8 条件选择语句(CASE)编写规范

条件选择语句CASE…WHEN 按以下格式编写

CASE <运算式>

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


第8/8页

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

[ELSE <运算式>]

END


CASE

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


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

[ELSE <运算式>]

END

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

循环执行语句WHILE…CONTINUE…BREAK按以下格式编写

WHILE <条件表达式>

BEGIN

<命令行或程序块>

[BREAK]

[CONTINUE]


<命令行或程序块>

END