1、2.1一般规则42.2对象命名汇总表53.编码规范63.1一般性规定63.2CREATE语句73.3SELECT语句73.4INSERT语句83.5UPDATE语句83.6DELETE语句93.7游标语句93.8IF语句93.9简单循环语句113.10FOR循环语句113.11WHILE循环语句113.12程序块规范123.13语法规范124.设计规范144.1一般表设计144.2特殊表设计原则154.3索引设计原则154.4完整性设计原则154.5触发器154.6视图设计154.7性能优化165.书写规范205.1缩进风格205.2空格及换行206.注释说明216.1一般性注释216.2函数
2、文本注释217.异常规范227.1pl/sql异常规范227.2后台验证异常信息规范238.附录238.1附一 开发工具238.2附二 预定义异常248.3附三 范式258.3.1第一范式258.3.2第二范式258.3.3第三范式258.3.4Boyce-Codd范式268.3.5第四范式268.3.6第五范式268.3.7反规范化261. 文档介绍1.1 文档目的本文档用于指导开发设计人员对Oracle数据库进行设计和编码。使用统一的命名和编码规范,使数据库对象命名及编码风格标准化,可增加程序的可读性,增强系统的可维护性,提高软件的质量。本文档仅仅针对Oracle数据库做的规范,对其他数据
3、库不具有指导意义。1.2 文档范围本规范适用于公司范围内所有以Oracle作为后台数据库的应用系统和项目开发工作。对公司2010年以前用Oracle数据库开发的项目不做限制。1.3 定义1.4 参考资料2. 命名规范2.1 一般规则Oracle中的各种数据对象,包括实例、数据库、表空间、表、视图、存储过程、函数、解发器等的命名都要遵循Oracle的标准命名规则:1) 以字符打头,30个字符以内,名称超过长度的情况下适当采用缩写。2) 只能包含A-Z,a-z,0-9,_。3) 不能和同一个表空间下的其他对象重名。4) 不能是Oracle服务器的保留字。5) 数据对象尽量不要使用缩写;如要缩写最好
4、使用容易看懂的缩写。2.2 对象命名汇总表对象对象名前缀范例描述表(table)t_t_user表名长度原则上不超过25个字符;表、视图、字段名中不出现复数,创建表必须要注释,comments必须要填写。视图(view)v_v_user如果表名或字段名过长,则用表名或字段名的缩写。序列(sequence)s_s_user一般索引(normalindex)i_i_user_usernamefield:字段名,遇上长字段名可采用缩写唯一索引(uniqueindex)i_u_i_u_user_birthday主键(primarykey)pk_pk_user_userid外键(foreignkey)f
5、k_fk_student_user_userid簇(cluster)cl_table2cl_user_student触发器(triger)tr_i_tr_u_tr_d_tr_iud_tr_i_add_user_birthdayi:insertu:updated:delete存储过程(procedure)p_i_p_u_p_d_p_s_p_i_user_birthday函数(function)f_f_get_username_by_userid包及包体(package&packagebody)pkg_pkg_user_info类及类体(type&typebody)type_type_user_c
6、lass同义词(synonym)inv_inv_user保存点(savepoint)save_表的保存点事务的保存点事务(transaction)trans_trans_insert_userinfo字段(field)create_date单词小写,中间用下划线隔开,字段必须要注释,comments必须要填写。游标(cursor)cur_cur_user_info数据库链接(databaselink)link_数据库名若远程服务器名和数据库名一致,采用link_用户及角色3. 编码规范3.1 一般性规定1、 sql语句中的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字大写。【推
7、荐】2、 连接符OR、IN、AND、以及、=等前后各加上一个空格。当语句中出现括号时,括号的两边不留空格。3、 “不等于”统一使用。虽然!=和是等价的,为了统一,不等于一律使用表示。4、 对较为复杂的sql语句加上注释,说明算法、功能。5、 使用空行将逻辑相关的代码段之间分隔开。6、 程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2个。必须使用空格,不允许使用TAB键,以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐。7、 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进。8、 where子句书写时,每个条件占一行,保留字或者连接符
8、放到行的最后面,含有键的条件放到其他条件的前面。3.2 CREATE语句CREATETABLEt_dksz(YHBSVARCHAR2(20)NOTNULL,ZHGXDATE,DKKHDVARCHAR2(24),CONSTRAINTpk_dksz_yhbsPRIMARYKEY(YHBS)3.3 SELECT语句查询语句采用以下原则编写(可最大化重用共享池中的SQL语句,提高应用程序性能):(1) 由SELECT开头,后跟一个显示查询结果的列表;(2) 语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放在本行;(3) 由FROM开头,后跟一个或多个获取数据所涉及的表,如果后面跟多
9、个表,关键字右对齐;(4) 由WHERE开头,后跟一个或多个确定所需值的条件,如果后面有多个条件,关键字右对齐;(5) 由GROUPBY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总,关键字右对齐;(6) 由ORDERBY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序,关键字右对齐;(7) 当语句中出现括号时,括号的两边不留空格;(8) 在SQL语句使用运算符时,操作两边应各留一个空格;(9) 每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐;例如:SELECTcol1,col2,col3FROMtable1WHEREcol1col2GROUPBY
10、col1,col2ORDERBYcol1;SELECTcol1,col2,col3,col4,col5,col6,col7,col8,col9,col10FROMsb_sbqkxx,sb_bb011101WHEREsb_sbqkxx.czwdbh=sb_bb.czwdbhANDsb_sbqkxx.swdjbh=avc_swdjbhANDsb_sbqkxx.sbsssq=avc_sbsssq;3.4 INSERT语句 关键字用大写,列名和表名采用小写; 语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放在本行; 当语句的同一部分要延续到下一行时,按下列格式排列: 当语句中出现括
11、号时,括号的两边不留空格。格式如下:INSERTINTO(,.,列nVALUES列1值列2值列n-1值列n值insertintosm_user(user_id,user_name,login_name)values(p_user_id,p_user_name,p_login_name)insertintosm_duty_bak(duty_id,duty_name,created_by,creation_date,last_updated_by,last_update_date,disable_date)selectduty_id,duty_name,created_by,creation_da
12、te,last_updated_by,last_update_date,disable_datefromsm_dutywhereduty_id=:duty_id3.5 UPDATE语句 关键字右对齐;UPDATESET=,3.6 DELETE语句DELETEFROMtable1WHEREcol1=?3.7 游标语句程序中使用显示游标。格式如下OPENcur_name;LOOPFETCHcur_into;EXITWHENcur_name%notfound;处理语句ENDLOOP;CLOSEcur_name;3.8 IF语句条件执行语句IFELSE按以下格式编写:IFTHEN一条或多条语句ELSE(或ELSIF)THENENDIF; 在IFTHEN和ELSE(或ELSIF)及ELSETHEN和ENDIF间可包含一条或多条PL/SQL语句,而不需要加BEGIN和END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1