PLSQL编写规范v

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 基本策略

3.1 设计策略

分类拆分数据量大的表。

对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大,会影响数据的迅速定位。如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。

分区策略

在拥有数500行以上的表时,采用分区策略。

索引设计。

对于大的数据库表,合理的索引能够提高整个数据库的操作效率。在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。例如,如果对一个5万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近3秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到1秒。因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。

有时候为了提高性能。减少表的关联,恰当的数据冗余是允许的。

索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象,确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。

对于经常发生同时查询或频繁查询的表,最好把他放到不同的磁盘空间上

4. 逻辑设计规范

4.1 范式

如果没有性能上的原因,应该使用关系数据库理论,达到较高的范式,避免数据冗

余。

如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗

余,但基本上要达到3NF。

4.2 表设计

对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能。如果表

按某些字段进行增长,则采用按字段值范围进行范围分区;如果表按某个字段的几

个关键值进行分布,则采用列表分区;对于静态表,则采用Hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。

每个表均创建类型为Sequence的主键字段。

每个表中需含有如下几个基本字段:一个表的SEQ号,4个创建信息字段,5-8字段名类型备注

业务SEQ号整数型作为表主键

OBLIGATE1字符型备用字段

OBLIGATE2

OBLIGATE3

OBLIGATE4

OBLIGATE5

CREATE_USER_ID VARCHAR创建用户ID

CREATE_DATETIME DATE创建时间

LAST_UPDATE_USER_ID VARCHAR更新用户ID

LAST_UPDATE_DATETIME TIMESTAMP更新时间

4.3 索引设计

常规OLTP应用,创建B-TREE索引,不创建位图索引。

不需要为小型数据表(<5000)创建索引。

给单个表创建的索引不超过5个,特别是海量交易类表。

索引条件查询结果记录,不超总记录的20%。

不要给固定选项的字段创建独立索引。

如只有‘男,女’的性别字段;‘是,否’的状态字段等,不要创建独立索引,位可以建立复合索引。

对于复合索引,索引字段顺序比较关键,把查询频率比较高的字段排在索引组合的

最前面。

索引放到独立的表空间,该表空间不需要REDO LOG。

含有外键约束的表的字段,必须有单独索引。如订单明细的表头外键。

5. 对象命名规范

5.1 一般规范

5.1.1 语言

命名使用英文单词,不使用复数。

英文单词使用同对象本身意义相对或相近的单词。选择最简单或最通用的单词。不

能使用毫不相干的单词来命名。

当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用简写或缩写,缩写要基本能表达原单词的意义。

当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。

禁止使用中文或拼音缩写进行命名

5.1.2 大小写

名称一律大写,以方便不同数据库移植,以及避免程序调用问题

5.1.3 单词分隔

命名的各单词之间使用下划线进行分隔。

命名的各单词之间不允许有空格存在

5.1.4 保留字

命名不允许使用SQL保留字。

5.1.5 命名长度

表名、字段名、视图名长度应限制在29个字符内(含前缀)。

5.1.6 字段名称

同一个字段名在一个数据库中只能代表一个意思。

不同的表用于相同内容的字段应该采用同样的名称,字段类型定义。

5.2 对象命名规范

5.2.1 表命名

必须为表名加入分类。

命名:[分类名]_[表友好名](省略前缀:[数据库名简写]_TBL_[分类名])

范例:PM_ROLE_FUNCTION(权限管理_角色功能表)

PM:权限管理

ROLE_FUNCTION:角色功能表(表友好名)

5.2.2 固定表分类名

SYS_:系统信息类,如SYS_LOG日志

CFG_:配置类,CFG_COMPANY公司配置

HIS_:历史信息类,如数据量大则可按时间进行分区配置,如:HIS_01_SI_HEAD一月份的补料历史信息

BUS_:业务类,注意策略中的要求,如果表达到100W以上要用分区

MAP_:映射类,MAP_PACK_LIST包装方式映射表

5.2.3 字段命名

5.2.3.1 字段命名常用字头

布林(BOOL)类字段用IS打头

英名、中文名称用EN和CN结尾区分中英文

如:NAME_EN

统一专用类别字段

船公司:OWNER

堆场:DEPOT

5.2.3.2 主键列

命名:表友好名_SEQ(省略前缀:[数据库名简写]_TBL_[分类名])

范例:ROLE_FUNCTION_SEQ(表PUB_TBL_PM_ROLE_FUNCTION的主键)

5.2.3.3 外键列

命名:相关表主键名(省略前缀:[数据库名简写]_TBL_[分类名])

相关文档
最新文档