MS SQL Server命名及编码规范

      MS SQL Server 命名及编码规范
  
文件类型:项目管理(标准/规范/模板)
文件编号 : SD -0 7 -0 2
版    本 : 1 .0
  A 版权声明
  本文件版权属于北京BRKS,保留所有权利。
本文件中包含的信息属于北京BRKS的资产及机密,文件中的任何部分未经授权不得以任何形式复制(包括复印及以电子文本的形式传播)。
  B.版本历史
 
V      版本号
修订日期
作者
描述
1.0
2007-08-21
栾曙光
创建文档
 
 
 
 
C .分发范围
本文档分发范围包括:公司技术部门管理人员、开发人员、项目管理人员。
编写本文档的目的是在使用MS SQL Server数据库的过程中,使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。
本规范适用于公司范围内所有以 SQL SERVER 2000/2005 作为后台数据库的应用系统和项目开发工作。
3.1 通用规则
Pascal 规则
每个单词开头的字母大写(如: T est C ounter ).
Camel 规则
除了第一个单词外的其他单词的开头字母大写 . 如:test Counter.
Upper 规则
仅用于被广泛认可的缩写命名(一般不超过四个字符,超过四个字符长度应该应用Pascal规则 )。如:OLAP、PIN
3.2 数据库名
数据库名定义为 系统名 _ 模块名 , 如“ crm_customer ” 表示CRM系统的customer处理模块数据库。
数据库名全部采用小写。
3.3 数据库文件
数据文件命名采用 数据库名 +_+ 文件类型 +[ 文件序号 ]+ 文件后缀 ,[ 文件序号 ] 1 2 3 9 等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时可不加。
文件后缀:主数据文件为 .mdf ,其它数据文件为 .ndf, 日志文件为 .ldf
文件名全部采用小写。
比如系统名为“ crm_customer , 则数据库数据文件命名为“ crm_customer_data.mdf ”,日志文件命名为“ crm_customer_log.ldf ”。
3.4
表命名要遵循以下原则:
Ø         直接使用表义名,不使用任何前缀。
Ø         整个表名的长度不要超过 30 个字符
Ø         表义名需遵循[3.1]表述的规则,尽量以英文命名,也可使用 汉语拼音的首字符 命名。表义名中汉语拼音均采用小写,且字符间不加分割符;单词命名的表义名采用名词性质的单词,各单词的首字符大写,其它字符小写。多个单词间不加任何分割符,如果整个单词太长,则使用完整的第一音节或经过仔细选择的缩写词。 名词全部采用单数形式。
Ø         表别名 取表义名的前 3 个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前 4 个字符加最后一个字符等)
Ø         关联表 命名为“ Re_ A_ B ”形式,Re Relative 的缩写,表 A 和表 B 均采用其表义名或缩写形式。
3.5 属性(列或字段)
属性命名遵循以下原则:
Ø         采用有意义的列名,尽量使用英文,或有 实际含义的汉语拼音的首字符 ,且字符间不加任何分割符。
Ø         属性名前不要加表名等作为前缀。
Ø         属性后不加任何类型标识作为后缀。
Ø         关联字段命名以 “ cd+_+ 关联表的表义名(或缩写) +_+ 字段名”进行
3.6 主键
任何表都必须定义与业务无关的自增形式的键值,一律命名为ID。
表主键命名为“表名+ID”,如Customer表的主键命名为CustomerID。
3.7 外键
外键名称为主表名 + 对应列名,如
在表 Department 中,其字段有: ID, DepartmentName
   
在表 UserInfo 中,其字段有: UserId,UserName,DepartmentsID 
其中, DepartmentID 为外键,参照 Depertment 表的 ID 字段
3.8 索引
索引的命名为:“idx_ 表名(或缩写) +_+ 列名 ”。
其中多单词组成的属性列列名取前几个单词首字符,加末单词组成,如 Customer 表中字段LastName 上的 索引可命名为idx_Customer_LastName
3.9 Default 标识
由“ df+_+<default 标识名 > ”组成
3.10 Rule 标识
由“ ru+_+<Rule 标识名 > ”组成
3.11 自定义数据类型
自定义数据类型由 ud+_+< 自定义数据类型标识 >+_+< 数据类型 > 组成
3.12 触发器
Ø         AFTER 触发器
系统名 +tr_+< 表名 >_+<i,u,d 的任意组合 >
其中 i u d 分别表示 insert update delete
Ø         INSTEAD OF 触发器
系统名 + ti_+< 表名 >+_+<i,u,d 的任意组合 >
其中 i u d 分别表示 insert update delete
3.13 视图
视图命名由v_+ 表名+描述,如v_Customer_Top100
3.14 存储过程
存储过程命名由“usp+_+ 存储过程标识 ”组成
存储过程标识要以 实际含义的汉语拼音的首字符或以动宾形式 构成,并用下划线分割各个组成部分。对于在某个表上进行操作的存储过程可以 命名为“usp_表明_操作”方式,如在Customer表上进行插入操作的存储过程命名为usp_Customer_Insert
3.15 函数
函数命名由“ufn_+ 函数标识 ”组成
3.16 变量名
Ø         变量命名采用Camel规则,使用有明确说明性的名字。
3.17 角色
全部使用小写字符命名
由“ 系统名称 +_+role+_+ 名词 ( 或缩写 ) 或名词短语 ( 或缩写 ) ”组成
如用电系统的查询角色: yd_role_query
3.18 用户
全部使用小写字符命名
由“ 系统名称 +_+user+_+ 名词 ( 或缩写 ) 或名词短语 ( 或缩写 ) ”组成。 如用电系统的管理用户: yd_user_sa
3.19 命名中的其它注意事项
Ø         命名都不得超过 30 个字符。变量名长度不要超过 29 个字符(不包括标识字符 @
Ø         不要在对象名的字符之间留空格
Ø         要保证命名没有和保留词、数据库系统或者常用访问方法冲突
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 : -- 作者
*CreatedDate : -- 创建时间
*UpdateDate : -- 函数更改信息(包括作者、时间、更改内容等)
*************************************************************************/
CREATE PROCEDURE dfsp_xxx
4.3 大小写约定
SQL 语句的所有表名、字段名全部小写,系统保留字、内置函数名、 sql 保留字大写。
4.4 代码缩进约定
4.4.1 一行有多列,超过 80 个字符时,基于列对齐原则,采用下行缩进
4.4.2 where 子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。
4.5 多表连接约定
多表连接时,使用表的别名来引用列。表别名的命名参见[3.4]。
4.6 常用SQL 语句的编写规范
常用 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')
)
4.6.2 SELECT 语句
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'
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
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值