数据库开发规范标准

上传人:hs****ma 文档编号:421989028 上传时间:2023-09-07 格式:DOC 页数:10 大小:135.50KB
返回 下载 相关 举报
数据库开发规范标准_第1页
第1页 / 共10页
数据库开发规范标准_第2页
第2页 / 共10页
数据库开发规范标准_第3页
第3页 / 共10页
数据库开发规范标准_第4页
第4页 / 共10页
数据库开发规范标准_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数据库开发规范标准》由会员分享,可在线阅读,更多相关《数据库开发规范标准(10页珍藏版)》请在金锄头文库上搜索。

1、. . .ACC数据库开发规编程规1:所有数据库关键字和保留字都大写;字段、变量的大小写2:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2/4个。 必须使用空格,不允许使用tab键。3:当同一条语句暂用多于一行时,每行的其他关键字与第一行的关键字进行右对齐。4:不允许多个语句写到一行,即一行只写一条语句。5:避免把复杂的SQL语句写到同一行,建议要在关键字和谓词处换行。6:相对独立的程序块之间必须加空行。BEGIN、END独立成行。7:太长的表达式应在低优先级操作符处换行,操作符或关键字应放在新行之首。不同类型的操作符混合使用时,用括号隔离,使得代码清晰。8: 不同类型的

2、操作符混合使用时,应使用括号明确的表达运算的先后关系。9:运算符以与比较符左边或者右边只要不是的括弧,则空一格。10:if 后的条件要用括号括起来,括号每行最多两个条件。11:减少控制语句的检查次数,如在 else( if.else)控制语句中,对最常用符合条件,尽量往前被检查到。尽量避免使用嵌套的if 语句,在这种情况应使用多个if 语句来判断其可能。命名规1:不使用数据库关键字和保留字,为了避免不必要的冲突和麻烦。2:严禁使用带空格的名称来给字段和表命名,会出错误而终止。3:用户自定义数据库对象:表,视图,主外键,索引,触发器,函数,存储过程,序列,同义词,数据库连接,包,包体风格要保持一

3、致。 数据库名称1-8个字符,其他对象1-30个字符,数据库连接不操过30个字符。使用英文字母、数字、下划线。 除表外,其他对象命名最好用不同的前缀来区别。 表 t_ 视图 v_ 序列 seq_ 簇 c_ 触发器 trg_ 存储过程 sp_/p_ 函数 f_/fn_ 物化视图 mv_包和包体 pkg_类和类体 typ_ 主键 pk_ 外键 fk_唯一索引 uk_普通索引 idx_位图索引 bk_4:PL/SQL对象和变量命名规则输入变量 i_输出变量 o_输入输出变量 io_普通变量 v_全局变量 gv_ 常量 大写 游标 cur_用户自定义类型 type_ 保存点 spt_不允许使用中文和特

4、殊字符用户对象命名应全部为小写,且不允许使用控制符号强制转换对象为小写字符变量命名,要有具体含义,能说明变量类型。5:注释规源程序有效注释量必须在30%左右。统一文件头的注释,针对存储过程,函数进行功能性描述,入出参数说明。/*名称:功能描述:修订记录版本号 编辑时间 编辑人 修改描述入出参数说明返回值描述(针对函数)*/所有变量定义需要添加注释,说明该变量的用途和含义。程序分支必须书写注释,这些语句是程序实现某一特定功能的关键。在程序块的完毕行加注释,说明程序块完毕。注释应与描述的代码相似,对代码的注释应在其上方或右方现今为止,不能放在下面。禁止在注释中使用缩写,特别是非常用的缩写。注释要与

5、描述的容进行相同的缩排。注释上面的代码应空行隔开。注释用中文书写。尽量使用”-” 进行注注释。 行尾注释须使用”-” 。6:分区表命名分区表的表名可以遵循普通表的正常命名规则。主要用途的缩写+下划线+yymm。按地域分布的子公司库存表(每个区域一个分区),分区名这为表的主要用途的缩写+区域的缩写。最小分区名字为before_data最大分区名字为after_data 子分区的名字为:父分区名+下划线+sub+ 下划线+no( 区域缩写),根据实际情况进行组合。分区表本地索引命名在正常索引名的最后一个下划线前加L。分区表全局索引命名在正常索引名的最后一个下划线前加G。DML操作规1:减少控制语句

6、的检查次数,应将最常用的符合条件前置以便被检查到。2:避免使用 SELECT *语句,给出字段列表,避免出现在表结构变化时程序无法识别的情况。3:INSERT 语句必须给出字段列表,避免在表结构变化时发生编译错误。4:从表中同一笔记录中获取记录的字段值,须使用一SQL 语句得到,不允许分多条SQL 语句。5:当一个PL/SQL 或SQL 语句中涉与到多个表时,始终使用别名来限定字段名,这使其它人阅读起来更方便,避免了含议模糊的引用,其中能够别名中清晰地判断出表名。6:禁止进行字段数据类型的隐式转换,所有转换必须进行明确的数据类型转换说明:隐式转换会导致字段上的索引失效,而进行显式转换,会提醒到

7、开发人员该种操作会导致索引失效7:禁止在多表关联的时候,在非索引字段上的关联;8:进行模糊查询时,禁止条件中字符串直接以“%”开头;9:尽量使用DECODE来简化SQL访问数据库的次数10:避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销.11:当PL/SQL或SQL语句中涉与多个表时,始终使用别名来限定表名和字段名。12:确保变量和参数在类型和长度上与表数据列相匹配,否则较宽或较大数据进来时会异常。13:使用EXISTS/NOT EXISTS替代IN/NOT

8、IN14:采用表连接替代EXIST15:复杂的SQL是否由设计不当引起,复杂的SQL考虑用程序块来执行。处理的优先级静态SQL动态SQL绑定变量的SQL动态SQLSQLPL/SQL过程SQL游标遍历ORACLE函数自定义函数16: 使用ORACLE分析函数来代替同一表多次的关联。17: 使用动态SQL时要绑定变量。18:不要把空的变量直接与比较运算符比较,如果结果可能为空,应使用IS NULL货IS NOT NULL 或NVL函数进行比较。19:order by 后面字段不唯一时分页会出现问题,分页时如果order by 后面的字段不唯一,一定要让order by 唯一,最正确方案是增加一pk

9、,如实在没方法则可以追加rowid,order by 后尽量避免使用rowid。20:聚集函数max、min、sum 在没有记录得符合查询条件的情况下返回null,不会产生no_data_found 异常。21:避免频繁commit,尤其是把commit 写在循环体中每次循环都进行commit。22:使用绑定变量,避免常量的直接引用。23:避免不必要的排序24:对于数字型的唯一键值,用序列sequence 产生。25:索引的规则:建立索引常用的原则如下:1)、表的主键、外键必须有索引2)、数据量超过1000 行的表应该有索引3)、经常与其它表进行连接的表,在边接字段上应建立索引4)、经常出现在

10、where 子句中的字段且过滤性极强的,特别是大表的字段,应该建立索引5)、索引字段,尽量避免值为null 6)、复合索引的建立需要仔细分析;尽量考虑用单字段索引代替;A.正确选择复合索引中的第一个字段,一般是选择性较好的且在where 子句中常的字段上;B.复合索引的几个字段是否经常同时以and 方式出现在where 子句中?单字段查询是否极少其至没有?如果是,则可以建立复合索引;否则考虑单字段索引;C.如果复合索引中包含的字段经常单独出现在where 子句中,则分解为多个单字段索引;D.如果复合索引所包含的字段超过3 个,那么仔细考虑其必要性,考虑减少复合的字段;E.如果既有单字段索引,又

11、有这几个字段上的复合索引,一般可以删除复合索引;7). 频繁DDL 的表,不要建立太多的索引;8). 删除无用的索引,避免对执行计划造成负面影响;让SQL 语句用上合理的索引。合理让SQL 语句使用索引的原则如下:首先,看是否用上了索引,对于该使用索引而没有用上索引的SQL 语句,应该想方法用上索引。其次,看是否用上了索引,特别复杂的SQL 语句,当其中where 子句包含多个带有索引的字段时,更应该注意索引的选择是否合理。错误的索引不仅不会带来性能的提高,相反往往导致性能的降低。26:like 子句尽量前端匹配数据库设计1:数据库设计文档中,必须包含表数据保留时间;2:数据库设计文档中,必须

12、包含表在最大保留时间下的数据量;3:数据库设计文档中,如果表为分区表,必须包含分区条件;4:数据库设计文档中,必须包含表的读写频率;5:单SEGMENT (如单个普通表,分区表的单个分区,单个普通索引,分区索引的单个分区)原则上不得超过2GB大小;6:和其他表有关联的表,和其他表功能一致的字段类型以与长度,尽量使用相同的列名;7:禁止依靠设计数据库表之间的主外键关系来保证数据一致性;:8:需要UPDATE的字段,不得设计为分区条件字段;9:如无特别需要,原则上,字符类型选择变长字段,数字类型选择NUMBER;10:如无特别需要,原则上不得设定表的并发度,压缩等属性;11:无特别说明,每个表的索

13、引,不得超过5个;单字段上的索引不得超过2个;(即一个单字段最多可在上面建立一个单字段索引和一个组合索引包含这个字段);复合索引原则上不得超过3个字段;12:原则上,分区表的索引必须是分区索引;13:频繁出现在where字句里的字段建议建立索引;14:用来和其他表关联的字段建议建立索引;15:索引字段建议有高的选择性和过滤性(count(distinctid)/count(*)0.6);16:在where子句里作为函数参数的字段,不能创建索引,不建议建立函数索引;17:建立索引的时候,建议考虑到SELECT和INSERT,UPDATE,DELETE的平衡;18:一般建议在查询数据量10%以下使

14、用索引;19:WHERE子句的查询条件构成索引字段前导字段;选择性更高的字段放在组合字段索引的前导字段;如果字段选择性接近,则把频繁查询的字段放在前面;如果字段查询频率相同,则把表中的数据的排列顺序所依据的字段放在前面;20:进行GROUP BY或者是ORDER BY的字段应在组合字段索引的前导字段;21:所有序列应设置CACHE值为不低于10022:如果要求获得的字段具有强连续和强排序性,则不适宜使用序列23:视图中不允许出现ORDER BY排序24:基于多表关联的视图,必须在字段名前指定表别名;视图的基础数据尽量从表中获取,尽量不要嵌套视图25:存储过程,必须有异常捕获代码在存储过程中变量的声明集中在AS和BEGIN中完成,不允许在

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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