对数据对象的命名规则(大小写,英文缩写)
如:
部门 Dept
---------------------------------------------------------------
太广泛了,总得指定个范围吧
---------------------------------------------------------------
我一般在日期前加个Dt_,如:
入库日期 Dt_in
出库日期 Dt_out
另举几例:
部门编号 Dept_id
部门名称 Dept_name
...
---------------------------------------------------------------
大力是要具体的?
比如部门编码应该是什么?
而不是象编程规范之类的理论性东西?
---------------------------------------------------------------
看过几个产品的数据库
其实,业内似乎已经有一些约定俗成的规定了
比如,部门编码应该怎么表示之类
不过,的确还没有看到过比较统一的,规范的规则出台
---------------------------------------------------------------
如果你是想用来指导编程或者是作为自己公司的一个规范来用的话,是可以的
但是要做到业内通用,得找些比较有影响力的团体来才行
当然,这个规范本身应该是完美的,最少是行得通的
但是,这个里面所含有的预期经济利益不大,如果能成为某开发工具或者是某学科的范例文档,情况会好很多。
---------------------------------------------------------------
我也经常为命名的问题伤脑筋
拼音(或缩写)是坚决抵制的,看着都恶心
但是英文缩写又经常担心不直观,甚至最后,如果不查文档,自己都看不懂
---------------------------------------------------------------
先来几个以前用过的几个,供参考:
_ID 后缀,用来表示identity字段,或者是整型的普通字段,但一定是某档案的主关键字。
_NO 后缀,用来表示编码,比如商品编码,指有序的清单编码
_CODE 后缀,客户采用的编码,比如,客户为了方便使用自己对商品进行的编码,可能不具有有序性,但应有意义。
---------------------------------------------------------------
回复真难
CSDN真该改进了
---------------------------------------------------------------
我平时基本上是随心所欲,表名、字段名命名时用英文单词串起来,能缩写就缩写(坚决反对拼音),总之不但要自己要能看懂,还要别人一看就知道是什么意思就行
再就是加些前缀,如存储过程前加SP_、触发器前加TR_等等
不过还是想看看有没有正规点的文档
---------------------------------------------------------------
表:子系统名称_XXX
主键索引:PK_XXX
非主键索引:XK_XXX
存储过程:up_XXX
函数:udf_XXX
规则:rule_XXX
domain:domain_XXX
trigger:tr_[I ¦U ¦D]_XXX
列名:英文名称缩写的组合,每个单词首字母大写
供各位参考
---------------------------------------------------------------
我刚才就白写一次了:(
---------------------------------------------------------------
写半天,就是回复不了~
懒得再写了
---------------------------------------------------------------
我觉得这个没必要统一吧?
---------------------------------------------------------------
老衲兄原来有个帖子的,如下
2 命名规则
2.1 表名
XXX相关表以r_作为前缀,YYY相关表以t_作为前缀。如r_acc 、t_bcc。
后台表名尽量与前台表名相同,后台独有的表应以_b作为后缀。如r_gggd_b。
命名应尽量反映存储的数据内容。
2.2 视图名
视图以v_作为前缀。由于前台无视图,故不需加_b。
命名应尽量体现各视图的功能。
2.3 触发器名
触发器名为相应的表名加上后缀,Insert触发器加'_i',Delete触发器加'_d',Update触发器加'u',如:r_bch_i,r_bch_d,r_bch_u。
2.4 存储过程名
存储过程应以'sp'开头,后续部分主要以动宾形式构成,并用下划线分割各个组成部分。如增加BSC机架的DRT单板的存储过程为'sp_ins_board_drt'。
2.5 变量名
变量名采用小写,若属于词组形式,用下划线分隔每个单词,如@my_err_no。
2.6 命名中其他注意事项
以上命名都不得超过30个字符的系统限制。
变量名的长度限制为29(不包括标识字符@)。
数据对象、变量的命名都采用英文字符。禁止使用中文命名。
3 编程结构和描述
SQL SERVER系统中,一个批处理是从客户传给服务器的一个完整的包,可以包含若干条SQL语句。批处理中的语句是作为一组去进行语法分析、编译和执行的。触发器、存储过程等数据对象则是将批处理永久化的方法。
3.1 注释
注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性。本规范建议:
1、 注释以英文为主。
实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用。为避免后续版本执行过程中发生某些异常错误,建议使用英文注释。
2、 注释尽可能详细、全面。
创建每一数据对象前,应具体描述该对象的功能和用途。
传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。
3、 注释语法包含两种情况:单行注释、多行注释
单行注释:注释前有两个连字符(--),最后以行尾序列(CR-LF)结束。一般,对变量、条件子句可以采用该类注释。
多行注释:符号/和/之间的内容为注释内容。对某项完整的操作建议使用该类注释。
4、 注释简洁,同时应描述清晰。
3.2 函数注释:
编写函数文本--如触发器、存储过程以及其他数据对象--时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:
/************************************************************************
*name : --函数名
*function : --函数功能
*input : --输入参数
*output : --输出参数
*author : --作者
*CreateDate : --创建时间
*UpdateDate : --函数更改信息(包括作者、时间、更改内容等)
*************************************************************************/
CREATE PROCEDURE sp_xxx
…
3.3 条件执行语句if…else
条件语句块(statenemt block,以 begin…end为边界)仅在if子句的条件为真时才被执行。为提高代码的可读性,建议嵌套不多于5层。还有,当嵌套层次太多时,应该考虑是否可以使用case语句。
3.4 重复执行while和跳转语句goto
需要多次执行的语句,可以使用while结构。其中,控制while循环的条件在任何处理开始之前需要先执行一次。循环体中的保留字break无条件的退出while循环,然后继续处理后续语句;保留字continue重新计算while条件,如果条件为真,则从循环开始处重新执行各语句。
使用跳转语句goto和标签label也可以方便地实现循环和其他更灵活的操作。SQL SERVER仅具有单通道语法分析器,因此不能解析对尚未创建的对象所做的前向参考。换言之,跳转到某标签的后续语句应该是可执行的(如不存在可能尚未创建的数据对象)。
3.5 书写格式
数据库服务器端的触发器和存储过程是一类特殊的文本,为方便开发和维护,提高代码的易读性和可维护性。规范建议按照分级缩进格式编写该文本。
顺序执行的各命令位于同一级;条件语句块(statenemt block,以 begin…end为边界)位于下一级,类推。
SQL语句是该文本的主体。为适应某些教复杂的用户需求,SQL语句可能比较庞大。为方便阅读和维护,规范建议按照SQL语句中系统保留字的关键程度再划分为三级。具体分级请参照下表。其中,非系统保留字(如字段名、数据表名、标点符号)相对本级保留字再缩进一级。多个连续的非保留字可以分行书写,也可以写在同一行。当WHERE包含的条件子句教复杂时,应该每行只写一个条件分句,并为重要的条件字句填写单行注释。
在保证基本缩进格式的前提下,可以通过对齐某些重要关键字(如条件关键字AND、OR,符号 = 、 <> 等)来进一步提高文本的易读性和可维护性。
相邻两级的缩进量为10个空格。这也是ISQL编辑器默认的文本缩进量。另外,在ISQL编辑器中,一个TAB键也相当于10个空格。
注:按照功能,四类SQL语句(SELECT、INSERT、UPDATE、DELETE)的关键字可以划分为三类:主关键字、次关键字、一般关键字。如下表所示:
主关键字 次关键字 一般关键字
SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM语句中的SELECT和FROM ANDORBETWEENINLIKE
3.6 字体
系统保留字应大写,包括系统公共变量等。其他字符(如用户自定义变量、用户自定义数据对象名)小写。
需要特殊强调的部分可以大写。
一条完整注释语句的首字符应大写。对某变量、某条件字句的注释可以全部使用小写。
通过下一节中生成表r_a的删除触发器的实例可以部分说明对象命名、注释、基本书写格式和字符大小写方面的一些注意事项。
4 触发器编程规范
4.1 范例
下面通过一个例子,说明触发器编程中应遵守的规范:
/* delete related r_a according to deleted table */
CREATE TRIGGER r_a_d ON r_a
FOR DELETE
AS
IF @@ROWCOUNT = 0 -no rows deleted
RETURN
/* delete r_b table related to deleted table */
DELETE r_b
FROM r_b b, deleted d
WHERE b.id=d.id
IF @@ERROR != 0
BEGIN
RAISERROR("Error occurred deleting related records", 16, 1)
ROLLBACK TRAN
END
RETURN
---------------------------------------------------------------
作以下几点说明:
1. 检查是否有行被修改。注意:不论数据是否被修改,触发器都会引发,执行情况取决于T-SQL语句的执行,而和任何潜在的where子句是否执行无关。
2. 因为被删除行在该表中不再可用,所以应在被