您的位置:首页 > 数据库

MS SQL Server命名及编码规范

2009-04-13 10:15 281 查看
[align=left]3.1 通用规则[/align]
[align=left]Pascal 规则[/align]
[align=left]每个单词开头的字母大写(如: TestCounter).[/align]
[align=left]Camel 规则[/align]
除了第一个单词外的其他单词的开头字母大写. 如:testCounter.
[align=left]Upper 规则[/align]
[align=left]仅用于被广泛认可的缩写命名(一般不超过四个字符,超过四个字符长度应该应用Pascal规则)。如:OLAP、PIN[/align]
[align=left]3.2 数据库名[/align]
[align=left]数据库名定义为系统名_模块名,如“crm_customer” 表示CRM系统的customer处理模块数据库。[/align]
[align=left]数据库名全部采用小写。[/align]
[align=left]3.3 数据库文件[/align]
[align=left]数据文件命名采用数据库名+_+文件类型+[文件序号]+文件后缀,[文件序号]为1、2、3…9 等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时可不加。[/align]
[align=left]文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf[/align]
[align=left]文件名全部采用小写。[/align]
[align=left]比如系统名为“crm_customer”,则数据库数据文件命名为“crm_customer_data.mdf”,日志文件命名为“crm_customer_log.ldf”。[/align]
[align=left]3.4 [/align]
[align=left]表命名要遵循以下原则:[/align]
[align=left]Ø 直接使用表义名,不使用任何前缀。[/align]
[align=left]Ø 整个表名的长度不要超过30 个字符[/align]
[align=left]Ø 表义名需遵循[3.1]表述的规则,尽量以英文命名,也可使用汉语拼音的首字符命名。表义名中汉语拼音均采用小写,且字符间不加分割符;单词命名的表义名采用名词性质的单词,各单词的首字符大写,其它字符小写。多个单词间不加任何分割符,如果整个单词太长,则使用完整的第一音节或经过仔细选择的缩写词。名词全部采用单数形式。[/align]
[align=left]Ø 表别名取表义名的前3 个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4 个字符加最后一个字符等)[/align]
[align=left]Ø 关联表命名为“Re_表A_表B”形式,Re 是Relative的缩写,表A 和表B均采用其表义名或缩写形式。[/align]
[align=left]3.5 属性(列或字段)[/align]
[align=left]属性命名遵循以下原则:[/align]
[align=left]Ø 采用有意义的列名,尽量使用英文,或有实际含义的汉语拼音的首字符,且字符间不加任何分割符。[/align]
[align=left]Ø 属性名前不要加表名等作为前缀。[/align]
[align=left]Ø 属性后不加任何类型标识作为后缀。[/align]
[align=left]Ø 关联字段命名以 “cd+_+关联表的表义名(或缩写)+_+字段名”进行[/align]
[align=left]3.6 主键[/align]
[align=left]任何表都必须定义与业务无关的自增形式的键值,一律命名为ID。[/align]
[align=left]表主键命名为“表名+ID”,如Customer表的主键命名为CustomerID。[/align]
[align=left]3.7 外键[/align]
[align=left]外键名称为主表名+对应列名,如[/align]
[align=left]在表Department中,其字段有:ID, DepartmentName
在表UserInfo中,其字段有:UserId,UserName,DepartmentsID [/align]
[align=left]其中,DepartmentID为外键,参照Depertment表的ID字段[/align]
[align=left]3.8 索引[/align]
[align=left]索引的命名为:“idx_表名(或缩写)+_+列名”。[/align]
[align=left]其中多单词组成的属性列列名取前几个单词首字符,加末单词组成,如Customer表中字段LastName上的索引可命名为idx_Customer_LastName[/align]
[align=left]3.9 Default 标识[/align]
[align=left]由“df+_+<default 标识名>”组成[/align]
[align=left]3.10 Rule 标识[/align]
[align=left]由“ru+_+<Rule 标识名>”组成[/align]
[align=left]3.11 自定义数据类型[/align]
[align=left]自定义数据类型由ud+_+<自定义数据类型标识>+_+<数据类型>组成[/align]
[align=left]3.12 触发器[/align]
[align=left]Ø AFTER触发器[/align]
[align=left]系统名+tr_+<表名>_+<i,u,d的任意组合>[/align]
[align=left]其中i,u,d 分别表示insert、update和delete[/align]
[align=left]Ø INSTEAD OF触发器[/align]
[align=left]系统名+ti_+<表名>+_+<i,u,d的任意组合>[/align]
[align=left]其中i,u,d 分别表示insert、update和delete[/align]
[align=left]3.13 视图[/align]
[align=left]视图命名由v_+表名+描述,如v_Customer_Top100[/align]
[align=left]3.14 存储过程[/align]
[align=left]存储过程命名由“usp+_+存储过程标识”组成[/align]
[align=left]存储过程标识要以实际含义的汉语拼音的首字符或以动宾形式构成,并用下划线分割各个组成部分。对于在某个表上进行操作的存储过程可以 命名为“usp_表明_操作”方式,如在Customer表上进行插入操作的存储过程命名为usp_Customer_Insert[/align]
[align=left]3.15 函数[/align]
[align=left]函数命名由“ufn_+函数标识”组成[/align]
[align=left]3.16 变量名[/align]
[align=left]Ø 变量命名采用Camel规则,使用有明确说明性的名字。[/align]
[align=left]3.17 角色[/align]
[align=left]全部使用小写字符命名[/align]
[align=left]由“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成[/align]
[align=left]如用电系统的查询角色:yd_role_query[/align]
[align=left]3.18 用户[/align]
[align=left]全部使用小写字符命名[/align]
[align=left]由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成。如用电系统的管理用户:yd_user_sa[/align]
[align=left]3.19 命名中的其它注意事项[/align]
[align=left]Ø 命名都不得超过30 个字符。变量名长度不要超过29个字符(不包括标识字符@)[/align]
[align=left]Ø 不要在对象名的字符之间留空格[/align]
[align=left]Ø 要保证命名没有和保留词、数据库系统或者常用访问方法冲突[/align]
[align=left]4 编码规范[/align]
[align=left]4.1 一般性注释[/align]
[align=left]注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将会大大增加文本[/align]
[align=left]的可读性和可维护性。[/align]
[align=left]4.1.1 注释尽可能详细、全面。[/align]
[align=left]4.1.2 创建每一数据对象前,应具体描述该对象的功能和用途。[/align]
[align=left]4.1.3 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。[/align]
[align=left]4.1.4 注释语法包含两种情况:单行注释、多行注释[/align]
[align=left]单行注释:注释前有两个连字符(--),最后以行尾序列(CR-LF)结束。一般,对变量、条件子句可以采用该类注释。[/align]
[align=left]多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。[/align]
[align=left]4.1.5 注释应当简洁,同时应描述清晰。[/align]
[align=left]4.2 函数头注释[/align]
[align=left]编写函数文本--如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:[/align]
[align=left]/************************************************************************[/align]
[align=left]*name : --函数名[/align]
[align=left]*function : --函数功能[/align]
[align=left]*input : --输入参数[/align]
[align=left]*output : --输出参数[/align]
[align=left]*author : --作者[/align]
[align=left]*CreatedDate : --创建时间[/align]
[align=left]*UpdateDate : --函数更改信息(包括作者、时间、更改内容等)[/align]
[align=left]*************************************************************************/[/align]
[align=left]CREATE PROCEDURE dfsp_xxx[/align]
[align=left]4.3 大小写约定[/align]
[align=left]SQL语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql 保留字大写。[/align]
[align=left]4.4 代码缩进约定[/align]
[align=left]4.4.1 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进[/align]
[align=left]4.4.2 where 子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。[/align]
[align=left]4.5 多表连接约定[/align]
多表连接时,使用表的别名来引用列。表别名的命名参见[3.4]。
[align=left]4.6 常用[b]SQL [b]语句的编写规范[/b][/b][/align]
[align=left]常用SQL 语句的编写示例如下[/align]
[align=left]4.6.1 CREATE 语句[/align]
[align=left]CREATE TABLE publishers[/align]
[align=left]([/align]
[align=left]pub_id char(4) NOT NULL --标识[/align]
[align=left]CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED[/align]
[align=left]CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756')[/align]
[align=left]OR pub_id LIKE '99[0-9][0-9]'),[/align]
[align=left]pub_name varchar(40) NULL, --名称[/align]
[align=left]city varchar(20) NULL, --城市[/align]
[align=left]state char(2) NULL, --州[/align]
[align=left]country varchar(30) NULL --国家[/align]
[align=left]DEFAULT('USA')[/align]
[align=left])[/align]
[align=left]4.6.2 SELECT语句[/align]
[align=left]SELECT <选择列列表>[/align]
[align=left][ INTO <新表名> ][/align]
[align=left]FROM <要选择的表名>[/align]
[align=left][ WHERE <搜索条件> ][/align]
[align=left][ GROUP BY <分组条件> ][/align]
[align=left][ HAVING <搜索条件> ][/align]
[align=left][ ORDER BY <排序规则> [ ASC | DESC ] ][/align]
[align=left] [/align]
[align=left]禁止使用SELECT *[/align]
[align=left]4.6.3 INSERT语句[/align]
[align=left]INSERT INTO <要插入的表名>[/align]
[align=left](<列1>, <列2>, .., <列n-1>, <列n>)[/align]
[align=left]VALUES (<列1值>, <列2值>, .., <列n-1值>, <列n值>)[/align]
[align=left]4.6.4 UPDATE语句[/align]
[align=left]UPDATE <要更新的表名>[/align]
[align=left]SET <要更新的列> = <列值>[/align]
[align=left]4.6.5 DELETE语句[/align]
[align=left]DELETE FROM authors[/align]
[align=left]WHERE au_lname = 'McBadden'[/align]
[align=left]4.7 条件执行语句[b](IF)[b]编写规范[/b][/b][/align]
[align=left]条件执行语句IF…ELSE 按以下格式编写[/align]
[align=left]IF <条件表达式>[/align]
[align=left]BEGIN[/align]
[align=left]<命令行或程序块>[/align]
[align=left]END[/align]
[align=left][ELSE IF <条件表达式>[/align]
[align=left]BEGIN[/align]
[align=left]<命令行或程序块>[/align]
[align=left]END][/align]
[align=left]注:<1>上式若BEGIN…END 之间只包含单独一命令行,为使代码紧凑,BEGIN和END边界[/align]
[align=left]也常省略[/align]
[align=left]<2>IF…ELSE 语句可以嵌套,为提高代码的可读性,嵌套层次不应多于5 层。当嵌套[/align]
[align=left]层次太多时应考虑使用CASE 语句。[/align]
[align=left]4.8 条件选择语句[b](CASE)[b]编写规范[/b][/b][/align]
[align=left]条件选择语句CASE…WHEN 按以下格式编写[/align]
[align=left]CASE <运算式>[/align]
[align=left]WHEN <运算式> THEN <运算式>[/align]
[align=left]…[/align]
[align=left]第8/8页[/align]
[align=left]WHEN <运算式> THEN <运算式>[/align]
[align=left][ELSE <运算式>][/align]
[align=left]END[/align]
[align=left]或[/align]
[align=left]CASE[/align]
[align=left]WHEN <条件表达式> THEN <运算式>[/align]
[align=left]…[/align]
[align=left]WHEN <条件表达式> THEN <运算式>[/align]
[align=left][ELSE <运算式>][/align]
[align=left]END[/align]
[align=left]4.9 循环执行语句[b](WHILE)[b]编写规范[/b][/b][/align]
[align=left]循环执行语句WHILE…CONTINUE…BREAK按以下格式编写[/align]
[align=left]WHILE <条件表达式>[/align]
[align=left]BEGIN[/align]
[align=left]<命令行或程序块>[/align]
[align=left][BREAK][/align]
[align=left][CONTINUE][/align]
[align=left]…[/align]
[align=left]<命令行或程序块>[/align]
[align=left]END[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: