1、数据库编程规范数据库编程规范版版本历史状态版本作者参与人起止日期备注草稿2011-4-26 2011-4-28第一部分 概述1.1文档目的本文档的编写目的是为了项目开发人员在使用数据库的过程中,使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。遵守数据库编码规范是提高数据库性能最基本的也是最重要的途径。1.2文档范围本文档适用于合肥公司范围内所有数据库应用系统和项目开发工作。1.3术语定义 缩写、术语解释Database或DB数据库系统ORG合肥1.4参考文献Microsoft SQL Server 2005 联机丛书T-SQL 编码标准编写可移植的 Transa
2、ct-SQL 代码第二部分 对象命名规则22.1通用规则Pascal规则每个单词的首字母大写。如:TestEmployee。Camel规则 除了第一个单词外的其他单词的首字母大写。如:testEmployee。Upper规则 仅用于被广泛认可的缩写命名。一般不超过四个字符,超过四个字符长度应该使用Pascal规则,如:OLAP、PIN。2.2数据库数据库名定义为系统名_模块名,如”crm_customer”,表示CRM系统的Customer模块数据库。数据库名全部采用小写。2.3数据库文件数据文件命名采用数据库名+_+文件类型+文件序号+文件后缀,文件序号为1、2、9等数值,当数据库中某一文件
3、类型的文件有多个时加上文件序号加以区别。只有一个时可以不加。文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf。文件名全部采用小写。比如系统名为“crm_customer”,则数据库数据文件命名为“”,日志文件命名为“”。2.4表表命名要遵循以下原则:规范要求使用表义名,不使用任何前缀。但考虑到有可能存在表重名的问题,建议公司的项目数据库表命名采用 “ORG_”作为前缀。以示区分。整个表名的长度不要超过30 个字符。表义名尽量以英文命名,也可使用汉语拼音的首字符命名。表义名中汉语拼音均采用小写,且字符间不加分割符;单词命名的表义名采用名词性质的单词,各单词的首字符大写,
4、其它字符小写。多个单词间不加任何分割符,如果整个单词太长,则使用完整的第一音节或经过仔细选择的缩写词。名词全部采用单数形式。表别名取表义名(不含前缀)的前3个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4 个字符加最后一个字符等)。关联表命名为“ZD_Re_表A_表B”形式,Re 是Relative的缩写,表A 和表B均采用其表义名或缩写形式。2.5属性(列或字段)属性命名遵循以下原则:采用有意义的列名,尽量使用英文,或有实际含义的汉语拼音的首字符,且字符间不加任何分割符。如果字段为bool型,则使用IsShow, IsValid, HasPassed, HasExamine
5、d, IgnoreCase这种形式表示。属性名前不要加表名等作为前缀。属性后不加任何类型标识作为后缀。关联字段命名以 “cd+_+关联表的表义名(或缩写)+_+字段名”进行。2.6主键任何表都必须定义与业务无关的自增形式的键值,一律命名为ID。表主键命名为“表名+ID”,如Customer表的主键命名为CustomerID。2.7外键外键名称为主表名+对应列名,如:在表Department中,其字段有:ID, DepartmentName在表UserInfo中,其字段有:UserId,UserName,DepartmentsID 其中,DepartmentID为外键,参照Depertment表
6、的ID字段。2.8索引索引的命名为:“idx_表名(或缩写)+_+列名”。其中多单词组成的属性列列名取前几个单词首字符,加末单词组成,如Customer表中字段LastName上的索引可命名为idx_Customer_LastName。2.9Default标识由“df+_+”组成。2.10Rule标识由“ru+_+”组成。2.11自定义数据类型自定义数据类型由“ud+_+_+”组成。2.12触发器AFTER型触发器系统名+tr_+_+,其中i,u,d 分别表示insert、update和delete。INSTEAD OF型触发器系统名+ti_+_+,其中i,u,d 分别表示insert、upd
7、ate和delete。2.13视图视图命名由v_+表名+描述,如v_Customer_Top100。2.14存储过程存储过程命名由“usp+_+存储过程标识”组成。存储过程标识要以实际含义的英语单词或以动宾的形式构成,并用下划线分割各个组成部分。对于在某个表上进行操作的存储过程可以 命名为“usp_表名_操作”方式,如在Customer表上进行插入操作的存储过程命名为usp_Customer_Insert。2.15函数函数命名由“ufn_+函数标识”组成。2.16变量名变量命名采用Camel规则,使用有明确说明性的名字。2.17角色全部使用小写字符命名。由“系统名称+_+role+_+名词(或
8、缩写)或名词短语(或缩写)”组成如用电系统的查询角色:yd_role_query。2.18用户全部使用小写字符命名。由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成。如用电系统的管理用户:yd_user_sa。2.19命名中的其它注意事项命名都不得超过30个字符,变量名长度不要超过29个字符(不包括标识字符)。不要在对象名的字符之间留空格。要保证命名没有和保留词、数据库系统或者常用访问方法冲突。第三部分 编程规范33.1一般性注释注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将会大大增加文本的可读性和可维护性。注释尽可能详细、全面。创建每一数据对象前,应具体
9、描述该对象的功能和用途。传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。注释语法包含两种情况:单行注释、多行注释。单行注释:注释前有两个连字符(-),最后以行尾序列(CR-LF)结束。一般,对变量、条件子句可以采用该类注释。多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。注释应当简洁,同时应描述清晰。3.2函数头注释编写函数文本-如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:/* name : -函数名* fun
10、ction : -函数功能* input : -输入参数* output : -输出参数* author : -作者* CreatedDate : -创建时间* UpdateDate : -函数更改信息(包括作者、时间、更改内容等)*/CREATE PROCEDURE dfsp_xxx3.3大小写约定SQL语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql 保留字大写。3.4代码缩进约定一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进。where 子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。3.5多表连接约定多表连接时,使用表的别名来
11、引用列。表别名的命名参见。3.6常用SQL 语句的编写规范3.6.1CREATE 语句CREATE TABLE publishers(pub_id char(4) NOT NULL -标识CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTEREDCHECK (pub_id IN (1389, 0736, 0877, 1622, 1756)OR pub_id LIKE 990-90-9),pub_name varchar(40) NULL, -名称city varchar(20) NULL, -城市state char(2) NULL, -州country var
12、char(30) NULL -国家DEFAULT(USA)3.6.2SELECT语句SELECT INTO FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC 禁止使用SELECT *3.6.3INSERT语句INSERT INTO (, , ., , )VALUES (, , ., , )3.6.4UPDATE语句UPDATE SET = 3.6.5DELETE语句DELETE FROM authorsWHERE au_lname = McBadden3.7条件执行语句(IF)编写规范条件执行语句IFELSE 按以下格式编写IF BEGINENDEL
13、SE IF BEGINEND注:上式若BEGINEND 之间只包含单独一命令行,为使代码紧凑,BEGIN和END边界也常省略IFELSE 语句可以嵌套,为提高代码的可读性,嵌套层次不应多于5 层。当嵌套层次太多时应考虑使用CASE 语句。3.7.1条件选择语句(CASE)编写规范条件选择语句CASEWHEN 按以下格式编写CASE WHEN THEN WHEN THEN ELSE END或CASEWHEN THEN WHEN THEN ELSE END3.7.2循环执行语句(WHILE)编写规范循环执行语句WHILECONTINUEBREAK按以下格式编写WHILE BEGINBREAKCONTI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1