1 / 19
文档名称:

数据库开发规范.docx

格式:docx   大小:2,864KB   页数:19页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库开发规范.docx

上传人:HShess 2022/3/30 文件大小:2.80 MB

下载得到文件列表

数据库开发规范.docx

相关文档

文档介绍

文档介绍:数据库开发规范
ACC数据库开发规范
编程规范
1:所有数据库关键字和保留字都大写;字段、变量的大小写
2:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2/4个。
必须使用空格,不允许当引起,复杂的SQL考虑用程序块来执行。
处理的优先级
静态SQL>动态SQL
绑定变量的SQL>动态SQL
SQL>PL/SQL过程
SQL>游标遍历
ORACLE函数>自定义函数
16: 使用ORACLE分析函数来代替同一表多次的关联。
17: 使用动态SQL时要绑定变量。
18:不要把空的变量直接与比较运算符比较,如果结果可能为空,应使用IS NULL货IS NOT NULL 或NVL函数进行比较。
19:order by 后面字段不唯一时分页会出现问题,分页时如果order by 后面的字段不唯一,一定要让order by 唯一,最佳方案是增加一pk,如实在没办法则可以追加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)、经常出现在where 子句中的字段且过滤性极强的,特别是大表的字段,应该建立索引
5)、索引字段,尽量避免值为null
6)、复合索引的建立需要仔细分析; 尽量考虑用单字段索引代替;
A. 正确选择复合索引中的第一个字段,一般是选择性较好的且在where 子句中常的字段上;
B. 复合索引的几个字段是否经常同时以and 方式出现在where 子句中? 单字段查询是否极少其至没有? 如果是,则可以建立复合索引; 否则考虑单字段索引;
C. 如果复合索引中包含的字段经常单独出现在where 子句中,则分解为多个单字段索引;
D. 如果复合索引所包含的字段超过3 个,那么仔细考虑其必要性,考虑减少复合的字段;
E. 如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
7). 频繁DDL 的表,不要建立太多的索引;
8). 删除无用的索引,避免对执行计划造成负面影响;让SQL 语句用上合理的索引。
合理让SQL 语句使用索引的原则如下:
首先,看是否用上了索引,对于该使用索引而没有用上索引的SQL 语句,应该想办法用上索引。
其次,看是否用上了索引,特别复杂的SQL 语句,当其中where 子句包含多个带有索引的字段时,更应该注意索引的选择是否合理。错误的索引不仅不会带来性能的提高,相反往往导致性能的降低。

26:like 子句尽量前端匹配
数据库设计
1:数据库设计文档中,必须包含表数据保留时间;
2:数据库设计文档中,必须包含表在最大保留时间下的数据量;
3:数据库设计文档中,如果表为分区表,必须包含分区条件;
4:数据库设计文档中,必须包含表的读写频率;
5:单SEGMENT (如单个普通表,分区表的单个分区,单个普通索引,分区索引的单个分区)原则上不得超过2GB大小;
6:和其他表有关联的表,和其他表功能一致的字段类型以及长度,尽量使用相同的列名;
7:禁止依靠设计数据库表之间的主外键关系来保证数据一致性;
:
8:需要UPDATE的字段,不得设计为分区条件字段;
9:如无特别需要,原则上,字符类型选择变长字段,数字类型选择NUMBER;
10:如无特别需要,原则上不得设定表的并发度,压缩等属性;
11:无特别说明,每个表的索引,不得超过5个;单字段上的索引不得超过2个;(即一个单字段最多可在上面建立一个单字段索引和一个组合索引包含这个字段);复合索引原则上不得超过3个字段;
12:原则上,分区表的索引必须是分区索引;
13:频繁出现在where字句里的字段建议建立索引;
14:用来和其他表关联的字段建议建立索引;
15:索引字段建议有高的选择性和过滤性(count(distinctid)/count(*)>);
16:在where子句里作为函数参数的字段,不能创建