资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
文件标识 QD 30 08 密级 内部 版本号 Ver1 0 大庆金桥软件开发作业体系大庆金桥软件开发作业体系 OracleOracle 数据库命名编码规范数据库命名编码规范 oracle 编码规范 大庆金桥信息技术工程有限公司 1 变更历史变更历史 操作操作责任人责任人日期日期版本版本变更内容变更内容 创建李富华 2010 04 20 无创建文档 编辑周强 2010 04 21 无修改文档 oracle 编码规范 大庆金桥信息技术工程有限公司 2 目录目录 1 文档介绍文档介绍 4 1 1文档目的 4 1 2文档范围 4 1 3定义 4 1 4参考资料 4 2 命名规范命名规范 4 2 1一般规则 4 2 2对象命名汇总表 5 3 编码规范编码规范 6 3 1一般性规定 6 3 2CREATE 语句 7 3 3SELECT 语句 7 3 4INSERT 语句 8 3 5UPDATE 语句 8 3 6DELETE 语句 9 3 7游标语句 9 3 8IF 语句 9 3 9简单循环语句 11 3 10FOR 循环语句 11 3 11WHILE 循环语句 11 3 12程序块规范 12 3 13语法规范 12 4 设计规范设计规范 14 4 1一般表设计 14 4 2特殊表设计原则 15 4 3索引设计原则 15 4 4完整性设计原则 15 4 5触发器 15 4 6视图设计 15 4 7性能优化 16 5 书写规范书写规范 20 5 1缩进风格 20 5 2空格及换行 20 6 注释说明注释说明 21 6 1一般性注释 21 oracle 编码规范 大庆金桥信息技术工程有限公司 3 6 2函数文本注释 21 7 异常规范异常规范 22 7 1PL SQL异常规范 22 7 2后台验证异常信息规范 23 8 附录附录 23 8 1附一 开发工具 23 8 2附二 预定义异常 24 8 3附三 范式 25 8 3 1 第一范式 25 8 3 2 第二范式 25 8 3 3 第三范式 25 8 3 4 Boyce Codd 范式 26 8 3 5 第四范式 26 8 3 6 第五范式 26 8 3 7 反规范化 26 oracle 编码规范 大庆金桥信息技术工程有限公司 4 1 文档介绍文档介绍 1 1 文文档档目目的的 本文档用于指导开发设计人员对 Oracle 数据库进行设计和编码 使用统一的命名 和编码规范 使数据库对象命名及编码风格标准化 可增加程序的可读性 增强系统 的可维护性 提高软件的质量 本文档仅仅针对 Oracle 数据库做的规范 对其他数据库不具有指导意义 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 数据对象尽量不要使用缩写 如要缩写最好使用容易看懂的缩写 2 2 对对象象命命名名汇汇总总表表 对象对象 对象名对象名前缀前缀范例范例描述描述 表 table t t user 表名长度原则上不超过25 个字符 表 视图 字段 oracle 编码规范 大庆金桥信息技术工程有限公司 5 名中不出现复数 创建表 必须要注释 comments 必须要填写 视图 view v v user 如果表名或字段名过长 则用表名或字段名的缩写 序列 sequence s s user 一般索引 normal index i i user userna me field 字段名 遇上 长字段名可采用缩写 唯一索引 unique index i u i u user birt hday 主键 primary key pk pk user useri d 外键 foreign key fk fk student us er userid 簇 cluster cl cl user stude nt 触发器 triger tr i tr u tr d tr iud tr i add user birt hday i insert u update d delete 存储过程 procedure p i p u p d p s p i user birt hday 函数 function f f get usernam e by userid 包及包体 package SELECT col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 FROM sb sbqkxx sb bb011101 WHERE sb sbqkxx czwdbh sb bb czwdbh AND sb sbqkxx swdjbh avc swdjbh oracle 编码规范 大庆金桥信息技术工程有限公司 8 AND sb sbqkxx sbsssq avc sbsssq 3 4INSERT 语语句句 关键字用大写 列名和表名采用小写 推荐 语句中嵌入逗号时 在逗号后面加一空格 当逗号是最后一个字符时 把它放在本 行 当语句的同一部分要延续到下一行时 按下列格式排列 当语句中出现括号时 括号的两边不留空格 格式如下 推荐 INSERT INTO VALUES 例如 insert into sm user user id user name login name values p user id p user name p login name insert into sm duty bak duty id duty name created by creation date last updated by last update date disable date select duty id duty name created by creation date last updated by last update date disable date from sm duty where duty id duty id 3 5UPDATE 语语句句 关键字右对齐 格式如下 推荐 UPDATE SET oracle 编码规范 大庆金桥信息技术工程有限公司 9 3 6DELETE 语语句句 格式如下 推荐 DELETE FROM table1 WHERE col1 3 7 游游标标语语句句 格式如下 推荐 程序中使用显示游标 格式如下 OPEN cur name LOOP FETCH cur into EXIT WHEN cur name notfound END LOOP CLOSE cur name 3 8IF 语语句句 条件执行语句 IF ELSE 按以下格式编写 推荐 IF THEN ELSE 或 ELSIF THEN END IF 在 IF THEN 和 ELSE 或 ELSIF 及 ELSE THEN 和 ENDIF 间可包含一条或多条 PL SQL 语句 而不需要加 BEGIN 和 END IF ELSE ENDIF 语句可以嵌套 注意 ELSIF 的写法 if 后的条件要用括号括起来 括号内每行最多两个条件 例如 if v count 1 or v count 2 or v count 5 or v count 6 then select sysdate into v date from dual end if oracle 编码规范 大庆金桥信息技术工程有限公司 10 减少控制语句的检查次数 如在 else if else 控制语句中 对最常用符合条件 尽 量往前被检查到 例如 以下例如不符合规范 假设 v count 1 条件大数情况会被满足 if v count 0 then null elsif v count 1 then null end if 应如下书写 应如下书写 if v count 1 then null elsif v count 0 then null end if 尽量避免使用嵌套的 if 语句 在这种情况应使用多个 if 语句来判断其可能 例如 例如 以下例如不符合规范 if v count 0 then if v flag 0 then null else null end if else v count 1 then if v flag 0 then null else null end if end if oracle 编码规范 大庆金桥信息技术工程有限公司 11 应如下书写 应如下书写 if v count 0 and v flag 0 then null elsif v count 0 and v flag 1 then null elsif v count 1 and v flag 0 then null elsif v count 1 and v flag 1 then null end if 3 9 简简单单循循环环语语句句 LOOP EXIT WHEN END LOOP 3 10FOR 循循环环语语句句 FOR 变量 IN 变量取值范围 LOOP END LOOP 3 11WHILE 循循环环语语句句 WHILE LOOP END LOOP 3 12 程程序序块块规规范范 在 sql 代码块中尽量使用 begin end 语句块 提高代码可读性 对于触发器 存储过程 函数等带名的程序块 要使用块结束标识 oracle 编码规范 大庆金桥信息技术工程有限公司 12 如 CREATE OR REPLACE PROCEDURE p get userinfo BEGIN END p get userinfo 此处的过程名 p get userinfo 是可选的 规范要求写上 与 块开始的 CREATE 相对应 3 13 语语法法规规范范 避免隐式的数据类型转换 说明 在书写代码时 必须确定表的结构和表中各个字段的数据类型 特别是书 写查询条件时的字段就更要注意了 例如 以下代码不符合规范 status type 是 number 型数据 select wdj wip entity id from wip wip discrete jobs wdj where wdj status 3 应如下书写 select wdj wip entity id from wip wip discrete jobs wdj where wdj status 3 不要将空的变量值直接与比较运算符 符号 比较 如果变量可能为空 应使用 is null 或 is not null 或 nvl 函数进行比较 例如 以下代码不符合规范 if v user name null then dbms output put line user name is null end if 应该如下书写 if v user name is null then dbms output put line user name is null end if 对于非常复杂的 sql 特别是多层嵌套 带子句或相关的查询 应该先考虑是否设 计不当引起的 对于复杂的一些 sql 可以考虑使用程序实现 原则上遵循一句话只 做一件事情 尽可能地使用相关表字段的类型定义 形如 type rowtype oracle 编码规范 大庆金桥信息技术工程有限公司 13 存储过程中变量的声明应集中在 as 和 begin 关键字之间 不允许在代码中随意定 义变量 定义变量时 完成相同
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号