文档章节

Oracle数据库设计策略及规范

南哥欠
 南哥欠
发布于 2017/08/16 10:10
字数 2293
阅读 20
收藏 0
点赞 0
评论 0

设计策略及规范

1. 目的

定义Oracle数据库设计规范,作为数据库规划、设计、开发以及维护人员的技术参考资料。用以规范和指导相关人员的设计行为。

2. 概述

本文档根据Oracle数据库性能特点,描述对表、视图、存储过程、对象命名等方面的设计规范。 

3. 基本策略

3.1 设计策略

u 分类拆分数据量大的表。

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

u 分区策略 

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

u 索引设计。

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

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

u 索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡

u 为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象, 确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。

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

4. 逻辑设计规范

4.1 范式

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

u 如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF。

4.2 表设计

u 对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能。如果表按某些字段进行增长,则采用按字段值范围进行范围分区;如果表按某个字段的几个关键值进行分布,则采用列表分区;对于静态表,则采用Hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。

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

u   每个表中需含有如下几个基本字段:一个表的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

更新时间

u  不要用Identify字段作为表的主键与其它表关联。

4.3 索引设计

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

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

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

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

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

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

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

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

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

5. 对象命名规范

5.1 一般规范

5.1.1 语言

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

u 英文单词使用同对象本身意义相对或相近的单词。选择最简单或最通用的单词。不能使用毫不相干的单词来命名。

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

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

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

5.1.2 大小写

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

5.1.3 单词分隔

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

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

5.1.4 保留字

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

5.1.5 命名长度

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

5.1.6 字段名称

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

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

5.2 对象命名规范

5.2.1 表命名

u 必须为表名加入分类。

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

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

PM:权限管理

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

5.2.2 固定表分类名

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

u  CFG_:配置类,CFG_COMPANY公司配置

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

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

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

5.2.3 字段命名

5.2.3.1 字段命名常用字头

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

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

如:NAME_EN

u  统一专用类别字段

船公司:OWNER

堆场:DEPOT

5.2.3.2 主键列

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

u 范例:ROLE_FUNCTION_SEQ(表PUB_TBL_PM_ROLE_FUNCTION的主键)

5.2.3.3 外键列

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

u 范例:表ROLE_FUNCTION中的外键列ROLE_SEQ是表PUB_TBL_PM_ROLE的主键列名

5.2.3.4 一般字段

u 命名:字段友好名

u 范例:COMPANY_NAME_EN(公司英文名称)

5.2.4 索引

u 命名:IX_[表名]_[构成的字段名];其中IX 、PK、 UK、FK分别表示为索引、主键、唯一、外键

u 范例:IX_PUB_PM_USER_TYPE(为表PUB_PM_USER的USER_TYPE字段创建的索引)

5.2.5 视图

u 命名:[数据库名简写]_VIEW_[表A名]_[表B名]

u 范例:

5.2.6 存储过程

u 命名:[数据库名简写]_PRC_[存取过程特性名]

5.2.7 序列

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

u 范例: ROLE_FUNCTION_SEQ(表ROLE_FUNCTION的主键Sequence)

5.2.8 公用表空间

u 命名:TBS_[存储的特性命名]。

u 范例:

5.2.9 专用表空间

u 命名:TBS_[表名]_NN(NN=1,2,3,4……)。

u 范例:

5.2.10 数据文件

u 命名:[表空间名]_NN.DBF(NN=1,2,3,4……)。

u 范例:

6. 设计工具

u 统一使用Sybase Power Designer作为数据库设计工具,在该工具上完成数据库物理模型的设计,并且由该工具产生数据库脚本。

u 所有的数据对象的变更以数据库物理模型为基准。

7. 公共常用字段预定义

u  在SAMPLE.PDM中已经把一些公共常用的字段进行预定义,以后如果有新的公用字段可进行迭代

 

本文转载自:https://wenku.baidu.com/view/3638bf5dfad6195f302ba615.html

共有 人打赏支持
南哥欠
粉丝 1
博文 7
码字总数 8944
作品 0
汕头
程序员
一年走向【Java架构师】之葵花宝典

大多数时候,不是我们不努力,而是不知从何下手,我深知一份好的学习资料是多么的重要,我们通常会把大量的时间都浪费在找资源上,本人搜集学习java架构师的经典学习路线如下可供参考!!! 一...

我一路狂奔
2017/05/20
395
1
Oracle 数据库管理员的任务

设计、实施和维护 Oracle 数据库时,按优先次序排列的步骤将包括以下任务: 1. 确定数据库服务器硬件 2. 安装 Oracle 软件 3. 制定数据库和安全策略的计划 4. 创建、移植和打开数据库 5. 备份...

晨曦之光
2012/03/09
0
0
沈晓军/mini-jdbc

mini-jdbc - 介绍&使用说明 sxjun @2016-01-15 使用MiniJdbc的项目:LarvaFrame(供参考) 该项目仍在持续完善中... 一、mini-jdbc介绍 1、mini-jdbc:针对spring jdbc的一些不方便的地方,做了...

沈晓军
2016/01/28
0
0
Oracle数据库运维优化六脉神剑口诀

我们知道数据库性能是数据库运维中至关重要的一个部分,据传在Oracle数据库的江湖中也有威力无比的六脉神剑技能,下面与大家免费分享Oracle大师们广为流传的六脉神剑口诀,一般人我不告诉他哦...

数据吃货
2013/12/06
0
0
OSC 第 136 期高手问答 — MySQL 开发和运维规范

OSCHINA 本期高手问答(2016 年 12 月 6 日 — 12 月 13 日)我们请来了@叶金荣和@吴炳锡为大家解答 MySQL 开发和运维规范相关的问题。 叶金荣,知数堂培训联合创始人,Oracle MySQL ACE,A...

局长
2016/12/06
8.9K
53
使用2-3法则设计分布式数据访问层

分布式DAL解决的问题 在分布式系统中,每一台服务器都需要访问本地缓存、分布式MC缓存、分布式后台数据库,对于同一个业务模块,随着业务变复杂,需要定义越来越多的数据Model,按照一定的规...

李丁玲
2016/03/04
67
0
数据库的容灾与备份,你是如何处理的?

Topic vage:从备份方式上说,我待过的几家电商,都依赖主、备库方式备份。一主两备,两备之中,一个备库是实时恢复,作为存储级高可用。另一个备库当延时恢复,应对误用户级操作。极少量库有...

dbaplus
2015/09/29
0
0
20年资深Oracle数据库专家:国内应用级DBA的缺失

作者介绍 罗敏,从事Oracle技术研究、开发和服务工作20余年,在Oracle中国公司的10多年,分别在顾问咨询部、技术服务部担任资深技术顾问。曾参与国内银行、电信、政府等多个行业大型IT系统的...

罗敏
2016/08/06
0
0
Oracle、MySQL、云计算、大数据,最热话题好文都在这了!

在过去的九个月里, DBAplus社群始终聚焦各种数据库、云计算、大数据及中间件等热门话题,坚持每天为大家献上最新鲜、最内涵的技术好文!下面小编就把这些优质文章分门别类,给大家做个梳理,...

DBAplus社群
2016/06/29
0
0
1月中旬值得一读的10本技术新书(机器学习、Java、大数据等)!文末有福利!

1月中旬,阿里云云栖社区 联合 博文视点 为大家带来十本技术书籍(机器学习、Java、大数据等)。以下为书籍详情,文末还有福利哦! 书籍名称:Oracle数据库问题解决方案和故障排除手册 内容简...

阿里云云栖社区
01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CoreText进阶(七)-添加自定义View和对其

CoreText进阶(七)-添加自定义View和对其 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更多...

aron1992
9分钟前
0
0
Python爬虫 爬取百合网的女人们和男人们

学Python也有段时间了,目前学到了Python的类。个人感觉Python的类不应称之为类,而应称之为数据类型,只是数据类型而已!只是数据类型而已!只是数据类型而已!重要的事情说三篇。 据书上说...

p柯西
20分钟前
0
0
在Java中,你真的会日期转换吗

1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormatis a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows fo......

Java小铺
29分钟前
0
0
Linux系统梳理---系统搭建(二):tomcat的安装和使用

上一章讲到JDK的安装使用,这一章主要记录下服务器tomcat的安装以及部署一个项目. 1.下载tomcat,这里下载的是apache-tomcat-8.5.32.tar.gz 2.创建文件夹,便于管理,和JDK一样,在usr目录下创建t...

勤奋的蚂蚁
39分钟前
0
0
ES15-聚合

1.Terms Aggregation 分组聚合 2.Filter Aggregation 过滤聚合

贾峰uk
41分钟前
0
0
【2018.07.19学习笔记】【linux高级知识 20.27-20.30】

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数

lgsxp
43分钟前
0
0
10.32/10.33 rsync通过服务同步~10.35 screen工具

通过服务的方式同步要编辑配置文件:[root@linux-xl ~]# vim /etc/rsyncd.confport=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pidaddress=192.168.43.21[tes...

洗香香
46分钟前
0
0
与女儿谈商业模式 (3):沃尔玛的成功模式

分类:与女儿谈商业模式 | 标签: 经济学 沃尔玛 陈志武 2007-05-10 09:09阅读(11279)评论(30) 与女儿谈商业模式 (3):沃尔玛的成功模式 陈志武 /文 沃尔玛(Wal-Mart)是另一个有意思的财...

祖冲之
53分钟前
0
0
网页加载速度优化方法总结

1、减少请求 最大的性能漏洞就是一个页面需要发起几十个网络请求来获取诸如样式表、脚本或者图片这样的资源,这个在相对低带宽和高延迟的移动设备连接上来说影响更严重。 2、整合资源 对开发...

Jack088
59分钟前
0
0
dubbo学习

https://blog.csdn.net/houshaolin/article/details/76408399

喵五郎
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部