版本记录: 当前版本: 作 者: 完成日期: 签 收 人: 文件状态: [ ] 草稿 [√] 正式发布 [ ] 正在修改 签收日期: 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 |