大话数据库编程规范

上传人:人*** 文档编号:498278833 上传时间:2022-11-16 格式:DOC 页数:11 大小:71.51KB
返回 下载 相关 举报
大话数据库编程规范_第1页
第1页 / 共11页
大话数据库编程规范_第2页
第2页 / 共11页
大话数据库编程规范_第3页
第3页 / 共11页
大话数据库编程规范_第4页
第4页 / 共11页
大话数据库编程规范_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《大话数据库编程规范》由会员分享,可在线阅读,更多相关《大话数据库编程规范(11页珍藏版)》请在金锄头文库上搜索。

1、大话数据库编程规范1.1前言目前在软件圈内有这么一个现象,就是:DBA不太懂写PL/SQL,而开发人员写的又是五花八门,而且效率不高。如此以来,造成诸多弊端:1.可读性差。读别人写的一个程序花费的时间,比自己写一个程序的花费时间还要长;非但别人看不懂,时间久了连自己也看不懂了。2.可维护性差。程序越写越长,越改越烂,像懒婆娘的裹脚布,又臭又长。3.可移植性差。今天用oracle写一套,明天换成SQL Server的时候再写一套,众多的数据库开发人员在程序的苦海中重复着低级劳动4.效率和性能差。一个存储过程或SQL执行效率简直可以让你感觉到对时间的绝望,你很快就理解什么是相对论了。1.2编程规范

2、概述事实上为了统一软件开发过程中关于数据库设计时的命名规范和编程规范,正规一些的IT公司都会制定一些关于数据库对象的命名和编程规范。否则的话,你写你的我写我的,各自为战不兼容,彼此看不懂,甚至到最后连自己都弄不明白了,这样的经历相信每个人都曾经遇到过。例如下面这段简单的代码,您看的明白吗?就算暂时明白,过个一年半载您还明白吗?就算您记忆超群,想必也会忘记,不是么?A:=1;b:=2;SeLeCT username from EmPLOyee where id=a aNd Type=b;如果你改为下面这样的写法,相信稍微懂点数据库的人都应该看的明白不是?vID:=1;-A为IDvType=2;-

3、B为类型SELECT username FROM employee WHERE id=vID AND type=vType;1.3书写规范丑陋的书写规范不仅可读性较差,而且给人以敬而远之的感觉,就是您是大侠也不行啊;而良好的书写规范则给人以享受和艺术的体验。大小写风格规则.1所有数据库关键字和保留字均使用大写;关于字段、变量的大小写风格在1.4详细介绍。缩进风格规则.1程序块严格采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2 /4个。必须使用空格,不允许使用TAB键。以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐。规则.2同一条语句需要占用多于

4、一行时,每行的其它关键字与第一行的关键字进行右对齐。IF flag=1 THENSELECT username-同上一行相比缩进4个空格INTO vuserinfo-INTO与SELECT进行右对齐FROM userinfo-FROM与SELECT进行右对齐WHERE userid=:iuserid;-WHERE与SELECT进行右对齐END IF;空格及换行规则.1不允许把多个语句写在一行中,即一行只写一条语句。规则.2避免将复杂的SQL语句写到同一行,建议要在关键字和谓词处换行。规则.3相对独立的程序块之间必须加空行。BEGIN、END独立成行规则.4太长的表达式应在低优先级操作符处换行,

5、操作符或关键字放在新行之首。划分出新行应当适当地缩进,使排版整齐,语句可读。不同类型的操作符混合使用时,建议使用括号进行隔离,以使代码清晰。规则.5减少控制语句的检查次数,如在IFELSE控制语句中,对最常用符合条件,尽量前置以被检查到。DECLARE-定义局部变量vFlag VARCHAR2(10);-判断标志BEGINIF (a=b AND a=c AND a=d) OR-在OR处断行,可使得逻辑更为清晰(a=e AND e=f) THEN-Process somethingIF vFlag=1 THEN-vFlag=1为经常出现之条件,可有效减少判断检查次数-Process someth

6、ingELSIF vFlag=2 THEN-vFlag=2为次之出现的条件-Process somethingELSE-Process somethingEND IF;其它规则.1避免使用SELECT *语句;不要用*来代替所有字段,应给出字段列表,以避免表结构发生变化时应用程序出现无法识别的情况。规则.2INSERT语句必须给出字段列表,以避免表结构发生变化时发生编译错误。规则.3当一个PL/SQL或SQL语句中涉及到多个表时,始终使用别名来限定表名和字段名,这使其它人阅读起来更方便,避免了含义模糊的引用,并能够别名中清晰地判断出表名和相关字段名。规则.4确保变量和参数在类型和长度与表数据列

7、类型和长度相匹配。说明:如果与表数据列宽度不匹配,则当较宽或较大的数据传进来时会产生运行异常。DECLARE-定义相关表字段变量vDeptNosalary.Deptno%type;-not VARCHAR2(10),以适应变化vEmployeeNosalary.EmployeeNo%type; -not VARCHAR2(10),以适应变化vSalarysalary.Salary%type;-not NUMBER,以适应变化BEGIN-Process somethingEND;1.4命名规范一千个读者就有一千个哈姆雷特,对于命名规范来说,想做到完全统一的确是不可能的任务。命名规范更多的是个人层

8、面的爱好,就算有命名规范,也不过是体现制订规范的相关人的爱好而已。因此即使无法完全做到一致,但是我们仍然要尽量去遵守,必要的时候需要通过代码检查和专家评审来进行约束,因为一个不成熟的规范总会胜过没有规范。表和字段命名规范在此仅提供几种常见的命名方法(表和字段的命名方式雷同)。以用户权限字段/表为例:UserPrivilege适合那些英文比较好,并且喜欢抑扬顿挫和有艺术美感的人。userprivilege适合那些英文好,且比较严谨的人,毕竟全部小写很容易与数据库关键字相区别。tbl_user_privilege适合那些做开发的人,开发的人会习惯性的给变量加前缀。(这里指表的命名,字段一般很少加前

9、缀)yhqx热爱中文的人,前提是恐怕您得对这些缩写先做好相关备注,等大家习惯了才行。实际上这几种命名规范各有千秋,很难去指责或否定哪种更好,完全取决于整个公司多数人的习惯,记住没有十全十美的命名规范,只有绝大多数人心甘情愿的去遵从了,那就是好的命名规范。就我个人而言,我更偏向于第一种命名习惯。规则.1不建议使用数据库关键字和保留字(不建议并不意味着不能使用),只是为了避免不必要的冲突和麻烦;例如name,id,level,remark,description等等。有兴趣的话,大家可以参考下SELECT * FROM v$reserved_words WHERE reserved=Y实际上ora

10、cle不建议大家使用v$reserved_words表中所有的关键字,无奈这些关键字太多了;reserved=Y的关键字则是被完全禁止的。规则.2严禁使用带空格的名称来对字段和表命名;在产生数据库脚本并重新加载的时候可能会出现意想不到的错误而被迫终止。其它对象命名用户自定义的数据库对象名包括表、视图、主外键、索引、触发器、函数、存储过程、序列、同义词、数据库链接、包和包体等等。规则.1其它对象的命名也与表和字段的命名规则类似,风格保持一致即可规则.2除数据库名称长度为18个字符,其余为130个字符,database link名称也不要超过30个字符;命名只能使用英文字母,数字和下划线规则.3除

11、表外,其它各种对象的命名最好用不同的前缀加以区别。采用前缀的方式来命名对象则很容易通过排序对对象进行区别。如在命名规范中各组成部分以_分割,则前缀建议也以_分割;反之则可加可不加对象名前缀范例表(table)tbl_/t_(或不加前缀)userinfo/t_user_info/tbl_user_info视图(view)v_/vv_user_info/vuserinfo序列(sequence)seq_seq_user_info簇(cluster)c_c_user_info触发器(trigger)trg_trg_user_info存储过程(procedure)sp_/p_sp_user_info/

12、p_user_info函数(function)f_/fn_fn_user_info/f_user_info物化视图(materialized view)mv_mv_user_info包和包体(package & package body)pkg_pkg_user_info类和类体(type & type body)typ_typ_user_info主键(primary key)pk_pk_user_info外键(foreign key)fk_fk_user_info_fieldname唯一索引(unique index)uk_uk_user_info_fieldname普通索引(normal

13、index)idx_idx_user_info_fieldname位图索引(bitmap index)bk_bk_user_info_fieldname同义词(synonym)依据于所分配的表所属模块/模式数据库链接(database link)无特殊要求1.5变量命名规则所有PL/SQL中的变量与对象命名规则相似变量类型前缀范例输入变量i_/ii_user_id/iuserid输出变量o_/oo_user_name/ousername输出输入变量io_/ioio_user_name/iousername普通变量v_/vv_user_id/vuserid全局变量gv_/gvgv_user_id

14、/gvuserid常量大写PI游标cur_cur_userinfo用户自定义类型type_type_user_info保存点(save point)spt_spt_user_info规则命名不允许使用中文或者特殊字符。命名中若使用特殊约定或缩写,则要注释说明。规则使用有意义、易于记忆、描述性强、简短及唯一的英文单词/拼音缩写。自己特有的命名风格,要自始自终保持一致,不可来回变化。说明:个人命名风格,在符合所在项目组的命名规则的前提下,才可以使用。规则对于变量命名,禁止取单个字符(如i、j),建议除了要有具体含义外,还能表明变量类型等。说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号