zoukankan      html  css  js  c++  java
  • sql编程命名规范

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

    一、表名
    1、基础表(一般整个系统都要用到,三个子系统以上用到都算作基础表)    ba开头,后面用英文单词,首字母大写,需要多个英文词的每个单词首字母大写    如baDepartment    baGroup   baDepartmentGroup
    2、专用表(一般只有某几个子系统要用到)    xx开头,xx为主要用得的子系统缩写,后面的同基础表   如:paBalance
    3、临时表(在存储过程和触发器中) #开头后面是来源的表名如:#baGroup
        或者##开头   后面是调用的客户端机器名+时间,由存储过程产生,免得冲突

    二、视图
    vi开头   后面基本同基础表,只是有时需要描述固定参数,单词会更多,必要时作一些简化,如:viDeptForProcss

    三、存储过程
    pr开头后面基本同基础表,描述功能,单词会更多,必要时作一些简化

    四、函数
    fn开头 其它同存储过程

    五、字段  
    类型(两位,小写)+字段意义,也是单词首字节大写,其它小写

    六、触发器
    1、tr_表名       for(after) insert,update,delete      (比较多这个类型的触发器)
    2、tr_表名_Insert       for(after) insert
    3、tr_表名_Update       for(after) update
    4、tr_表名_Delete       for(after) delete
    5、ti_表名(或者视图名)       INSTEAD OF insert,update,delete    (没写过这种触发器)
    6、ti_表名(或者视图名)_Insert       INSTEAD OF insert
    7、ti_表名(或者视图名)_Update       INSTEAD OF update
    8、ti_表名(或者视图名)_Delete       INSTEAD OF delete


    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   函数注释:
    编写函数文本--如触发器、存储过程以及其他数据对象--时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:

    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   范例
    下面通过一个例子,说明触发器编程中应遵守的规范:


    CREATE TRIGGER r_a_d ON r_a
           FOR DELETE
    AS
    IF @@ROWCOUNT = 0 -no rows deleted
               RETURN


    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

  • 相关阅读:
    ext数据库读取动态添加window组件
    sony e系列笔记本的OFFICE的序列号
    ext panel 移除item失效的解决办法
    ExtJS xtype class对照表
    Dynamic Form interacting with an embedded Grid
    extjs动态列--editorGridPanel(2.2)
    Ext.form.DisplayField扩展组件:在formpanel中显示html格式的内容
    ExtJS 动态增加与删除items,动态设置textField可见与否
    Extjs formPanel 显示图片 + 上传
    EXTJS的数据存储机制
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912377.html
Copyright © 2011-2022 走看看