Pascal
规则
每个单词开头的字母大写(如:
T
est
C
ounter
).
Camel
规则
除了第一个单词外的其他单词的开头字母大写
. 如:test
Counter.
Upper
规则
仅用于被广泛认可的缩写命名(一般不超过四个字符,超过四个字符长度应该应用Pascal规则
)。如:OLAP、PIN
数据库名定义为
系统名
_
模块名
,
如“
crm_customer
” 表示CRM系统的customer处理模块数据库。
数据库名全部采用小写。
数据文件命名采用
数据库名
+_+
文件类型
+[
文件序号
]+
文件后缀
,[
文件序号
]
为
1
、
2
、
3
…
9
等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时可不加。
文件后缀:主数据文件为
.mdf
,其它数据文件为
.ndf,
日志文件为
.ldf
文件名全部采用小写。
比如系统名为“
crm_customer
”
,
则数据库数据文件命名为“
crm_customer_data.mdf
”,日志文件命名为“
crm_customer_log.ldf
”。
表命名要遵循以下原则:
Ø
直接使用表义名,不使用任何前缀。
Ø
整个表名的长度不要超过
30
个字符
Ø
表义名需遵循[3.1]表述的规则,尽量以英文命名,也可使用
汉语拼音的首字符
命名。表义名中汉语拼音均采用小写,且字符间不加分割符;单词命名的表义名采用名词性质的单词,各单词的首字符大写,其它字符小写。多个单词间不加任何分割符,如果整个单词太长,则使用完整的第一音节或经过仔细选择的缩写词。
名词全部采用单数形式。
Ø
表别名
取表义名的前
3
个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前
4
个字符加最后一个字符等)
Ø
关联表
命名为“
Re_
表
A_
表
B
”形式,Re
是
Relative
的缩写,表
A
和表
B
均采用其表义名或缩写形式。
属性命名遵循以下原则:
Ø
采用有意义的列名,尽量使用英文,或有
实际含义的汉语拼音的首字符
,且字符间不加任何分割符。
Ø
属性名前不要加表名等作为前缀。
Ø
属性后不加任何类型标识作为后缀。
Ø
关联字段命名以 “
cd+_+
关联表的表义名(或缩写)
+_+
字段名”进行
任何表都必须定义与业务无关的自增形式的键值,一律命名为ID。
表主键命名为“表名+ID”,如Customer表的主键命名为CustomerID。
外键名称为主表名
+
对应列名,如
在表
Department
中,其字段有:
ID, DepartmentName
在表
UserInfo
中,其字段有:
UserId,UserName,DepartmentsID
其中,
DepartmentID
为外键,参照
Depertment
表的
ID
字段
索引的命名为:“idx_
表名(或缩写)
+_+
列名
”。
其中多单词组成的属性列列名取前几个单词首字符,加末单词组成,如
Customer
表中字段LastName
上的
索引可命名为idx_Customer_LastName
由“
df+_+<default
标识名
>
”组成
由“
ru+_+<Rule
标识名
>
”组成
自定义数据类型由
“
ud+_+<
自定义数据类型标识
>+_+<
数据类型
>
”
组成
Ø
AFTER
型
触发器
系统名
+tr_+<
表名
>_+<i,u,d
的任意组合
>
其中
i
,
u
,
d
分别表示
insert
、
update
和
delete
Ø
INSTEAD OF
型
触发器
系统名
+
ti_+<
表名
>+_+<i,u,d
的任意组合
>
其中
i
,
u
,
d
分别表示
insert
、
update
和
delete
视图命名由v_+
表名+描述,如v_Customer_Top100
存储过程命名由“usp+_+
存储过程标识
”组成
存储过程标识要以
实际含义的汉语拼音的首字符或以动宾形式
构成,并用下划线分割各个组成部分。对于在某个表上进行操作的存储过程可以 命名为“usp_表明_操作”方式,如在Customer表上进行插入操作的存储过程命名为usp_Customer_Insert
函数命名由“ufn_+
函数标识
”组成
Ø
变量命名采用Camel规则,使用有明确说明性的名字。
全部使用小写字符命名
由“
系统名称
+_+role+_+
名词
(
或缩写
)
或名词短语
(
或缩写
)
”组成
如用电系统的查询角色:
yd_role_query
全部使用小写字符命名
由“
系统名称
+_+user+_+
名词
(
或缩写
)
或名词短语
(
或缩写
)
”组成。
如用电系统的管理用户:
yd_user_sa
Ø
命名都不得超过
30
个字符。变量名长度不要超过
29
个字符(不包括标识字符
@
)
Ø
不要在对象名的字符之间留空格
Ø
要保证命名没有和保留词、数据库系统或者常用访问方法冲突
注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将会大大增加文本
的可读性和可维护性。
4.1.1
注释尽可能详细、全面。
4.1.2
创建每一数据对象前,应具体描述该对象的功能和用途。
4.1.3
传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如
boolean
类型变量),应给出每个值的含义。
4.1.4
注释语法包含两种情况:单行注释、多行注释
单行注释:注释前有两个连字符(
--
),最后以行尾序列(
CR-LF
)结束。一般,对变量、条件子句可以采用该类注释。
多行注释:符号
/*
和
*/
之间的内容为注释内容。对某项完整的操作建议使用该类注释。
4.1.5
注释应当简洁,同时应描述清晰。
编写函数文本
--
如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:
/************************************************************************
*name : --
函数名
*function : --
函数功能
*input : --
输入参数
*output : --
输出参数
*author : --
作者
*CreatedDate : --
创建时间
*UpdateDate : --
函数更改信息(包括作者、时间、更改内容等)
*************************************************************************/
CREATE PROCEDURE dfsp_xxx
SQL
语句的所有表名、字段名全部小写,系统保留字、内置函数名、
sql
保留字大写。
4.4.1
一行有多列,超过
80
个字符时,基于列对齐原则,采用下行缩进
4.4.2
where
子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。
多表连接时,使用表的别名来引用列。表别名的命名参见[3.4]。
常用
SQL
语句的编写示例如下
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')
)
SELECT <
选择列列表
>
[ INTO <
新表名
> ]
FROM <
要选择的表名
>
[ WHERE <
搜索条件
> ]
[ GROUP BY <
分组条件
> ]
[ HAVING <
搜索条件
> ]
[ ORDER BY <
排序规则
> [ ASC | DESC ] ]
禁止使用SELECT *
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'
条件执行语句
IF
…
ELSE
按以下格式编写
IF <
条件表达式
>
BEGIN
<
命令行或程序块
>
END
[ELSE IF <
条件表达式
>
BEGIN
<
命令行或程序块
>
END]
注:
<1>
上式若
BEGIN
…
END
之间只包含单独一命令行,为使代码紧凑,
BEGIN
和
END
边界
也常省略
<2>IF
…
ELSE
语句可以嵌套,为提高代码的可读性,嵌套层次不应多于
5
层。当嵌套
层次太多时应考虑使用
CASE
语句。
条件选择语句
CASE
…
WHEN
按以下格式编写
CASE <
运算式
>
WHEN <
运算式
> THEN <
运算式
>
…
第
8/8
页
WHEN <
运算式
> THEN <
运算式
>
[ELSE <
运算式
>]
END
或
CASE
WHEN <
条件表达式
> THEN <
运算式
>
…
WHEN <
条件表达式
> THEN <
运算式
>
[ELSE <
运算式
>]
END
循环执行语句
WHILE
…
CONTINUE
…
BREAK
按以下格式编写
WHILE <
条件表达式
>
BEGIN
<
命令行或程序块
>
[BREAK]
[CONTINUE]
…
<
命令行或程序块
>
END