5-2数据库设计
tags:数据库
基本步骤
步骤:
1. 需求分析阶段
进行数据库设计首先必须准确了解与分析用户需求.需求分析是整个设计过程的基础,是最困难和最耗费时间的一步.
2. 概念结构设计阶段
概念设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,行程一个独立于具体数据库管理系统的概念模型.
在概念结构设计阶段行程独立于机器特点,独立于各个关系数据库管理系统产品的概念模式,一般用ER图表示
3. 逻辑结构设计阶段
逻辑结构设计是将概念结构转为某个数据库管理系统所支持的数据模型,并对其进行优化.
在逻辑结构设计阶段将ER图转为具体的数据库产品支持的数据模型,如关系模型,行程数据库逻辑模式,然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图,行程数据库的外模式.
4. 物理结构设计阶段
物理结构设计是为逻辑数据模型选取一个最合适应用环境的物理结构.报过存储结构和存取方法.
在物理结构设计阶段,根据关系数据库管理系统的特点和处理的需要进行物理存储安排,建立索引,行程数据库内模式
5. 数据库实施阶段
在数据库实施阶段,设计人员运用数据库管理系统提供的数据库语言及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行试运行
6. 数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行.在数据库系统运行过程中必须不断地对其进行评估调整与修改.
需求分析
需求分析调查的重点是”数据”和”处理”,通过调查、收集与分析,获得用户对数据库的如下要求:
1. 信息要求.指用户需要从数据库中获得信息的内容与性质.由信息要求可以导出数据要求,即在数据库中需要存储哪些数据.
2. 处理要求.指用户要完成的数据处理功能,对处理性能的要求.
3. 安全性与完整性要求.
概念设计
将需求分析得到的用户需求抽象为信息结构的过程就是概念结构的设计.
它是整个数据库设计的关键.
概念模型的主要特点
特点:
1. 能真实,充分的反映现实世界,包括事物和事物之间的联系,能满足对数据的处理要求,是现实世界的一个真是模型.
2. 易于理解,可以用它和不熟悉计算机的用户交换意见.
3. 易于更改,当应用环境的应用要求概念时容易对概念模型修改和扩充.
4. 易于向关系,网状,层次等各种数据模型转换.
ER模型
实体之间的联系
联系:
1. 两个实体型之间的联系,一对一,一对多,多对多.
2. 两个以上的实体型之间的联系,一对一,一对多,多对多.
3. 单个实体型内的联系,一对一,一对多,多对多.
ER图画法
画法:
1. 实体型用矩形表示,矩形框内写明实体名.
2. 属性用椭圆形表示,并用无向边将其与相应实体型连接起来.
3. 联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边上表上联系的类型.
4. 如果一个实体型的存在依赖于其他实体型存在,则这个实体型叫弱实体型,否则叫强实体型.
ER图的集成
集成方法:
1. 合并,解决各分ER图之间的冲突,将ER图合并起来生成初步ER图.
各个局部应用所面向的问题不同,且通常是由不同的设计人员进行局部视图设计,这就导致各个子系统的ER图之间必定会存在许多不一致的地方,称之为冲突.
2. 修改和重构,消除不必要的冗余,生成基本ER图.消除属性冲突,命名冲突,结构冲突.
不是所有的冗余数据与冗余练习都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价.因此在设计数据库概念结构时,哪些冗余ixnxi必须消除,哪些冗余信息允许存在,需要根据用户的整体需求来确定。
逻辑设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构.
关系模型转换方法
转换方法:
1. 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
2. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并.
3. 一个m:n联系转为一个关系模式,与该联系相关联的实体的码以及联系本身的属性均转换为关系的属性.
4. 三个或者三个以上的实体间的一个多元联系可以转换为一个关系模式.
5. 具有相同码的关系模式可合并.
关系模型的优化
数据库逻辑设计的结果不是唯一的.为了进一步提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整数据模型的结构,这就是数据哦行的优化.
优化方法:
1. 确定依赖.按照需求分析阶段得到的语义,分别写出每个关系模式内部各个属性之间的数据依赖以及不同关系模式属性之间的数据依赖.
2. 对各个关系模式之间的数据依赖进行极小化处理,消除冗余联系.
3. 按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖,传递函数依赖,多值依赖等,确定各个关系模式分别属于第几范式.
4. 根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定对某些模式进行合并或者分解.
5. 对关系模式进行必要的分解,提高数据操作效率和存储空间利用率.常用的两种分解方法是水平分解和垂直分解.
设计用户子模式
将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体关系数据库管理系统的特点设计用户的外模式.
目前关系数据库管理系统一般都提供了视图概念,可以利用视图公呢个设计更符合用户需要的用户外模式.
定义数据库全局模式主要草丛时间,空间,易维护等三个角度触发.而定义用户外模式时一般考虑以下几个方面:
1. 使用更符合用户习惯的别名.
2. 对不同级别的用户定义不同的视图,以保证系统的安全性.
3. 简化用户对系统的使用.
名词解释
水平分解
水平分解是把基本关系的元组分为若干子集合,定义每一个子关系,以提高系统的效率.根据80/20原则,一个大关系中经常被使用的数据只是关系的一部分,约20%,可以把经常使用的数据分解出来,行程一个子关系,如果关系R上具有n个事务,而且多数事务存取的数据不相交,则R可以分解为少于或者等于n个子关系,让每个事务的存取对应一个关系.
垂直分解
垂直分解是把关系模式R的属性分解为若干子集合,形成若干子关系模式,垂直分解的原则是,将经常在一起使用的属性从R中分解出来,行程一个子关系模式.垂直分解可以提高某些事务的效率,但也可能使另一些事务不得不进行链接操作,从而降低了效率,因此是否进行垂直分解取决于分解后R上的所有事务的总效率时候得到了提高.垂直分解需要确保无损连接性和保持函数依赖,即保证分解后的关系具有无损连接和保持函数依赖性.
数据字典
数据字典在需求分析阶段被建立。
数据字典是一个预留空间,一个数据库,这是用来储存信息数据库本身。
数据字典还有另一种含义,是在数据库设计时用到的一种工具,用来描述数据库中基本表的设计,主要包括字段名、数据类型、主键、外键等描述表的属性的内容。
数据字典的组成:
1、数据项
2、数据结构
3、数据流
4、数据存储
5、处理过程
数据字典各部分的描述
①数据项:数据流图中数据块的数据结构中的数据项说明
数据项是不可再分的数据单位。对数据项的描述通常包括以下内容:
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,
取值范围,取值含义,与其他数据项的逻辑关系}
其中“取值范围”、“与其他数据项的逻辑关系”定义了数据的完整性约束条件,是设计数据检验功能的依据。
若干个数据项可以组成一个数据结构。
②数据结构:数据流图中数据块的数据结构说明
数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括以下内容:
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
③数据流:数据流图中流线的说明
数据流是数据结构在系统内传输的路径。对数据流的描述通常包括以下内容:
数据流描述={数据流名,说明,数据流来源,数据流去向, 组成:{数据结构},平均流量,高峰期流量}
其中“数据流来源”是说明该数据流来自哪个过程,即数据的来源。“数据流去向”是说明该数据流将到哪个过程去,即数据的去向。“平均流量”是指在单位时间(每天、每周、每月等)里的传输次数。“高峰期流量”则是指在高峰时期的数据流量。
④数据存储:数据流图中数据块的存储特性说明
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括以下内容:
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流, 组成:{数据结构},数据量,存取方式}
其中“数据量”是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息。“存取方法”包括是批处理,还是联机处理;是检索还是更新;是顺序检索还是随机检索等。
另外“流入的数据流”要指出其来源,“流出的数据流”要指出其去向。
⑤处理过程:数据流图中功能块的说明
数据字典中只需要描述处理过程的说明性信息,通常包括以下内容:
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流}, 处理:{简要说明}}
其中“简要说明”中主要说明该处理过程的功能及处理要求。功能是指该处理过程用来做什么(而不是怎么做);处理要求包括处理频度要求,如单位时间里处理多少事务,多少数据量,响应时间要求等,这些处理要求是后面物理设计的输入及性能评价的标准。
物理结构设计
数据库在物理设备上的存储结构与存取方法成为数据库的物理结构,它依赖于选定的数据库管理系统.为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计.
通常关系数据库物理设计的主要内容包括为关系模式选择存取方法, 以及设计关系,索引等数据库文件的物理存储结构.
关系模式存取方法选择
存取方法是快速存取数据库中数据的技术.数据库管理系统一般提供多重存取方法.常用的存取方法为索引方法和聚簇方法.
所谓存取方法的选择,实际上就是根据应用要求确定对关系的哪些属性建立索引,哪些属性建立组合索引,哪些索引要设计为唯一索引等.
B+树索引存取方法的选择
- 如果一个属性或者属性组经常在查询条件中出现,则考虑在这个属性或属性组上建立索引.
- 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引.
- 如果一个属性或者属性组经常在连接操作的连接条件中出现,则考虑在这个属性上建立索引.
hash索引存取方法的选择
如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足以下两个条件之一,则此关系可以夏煊泽hah存取方法.
1. 一个关系的大小可以预知,而且不变.
2. 关系的大小动态改变,但数据管理系统提供了动态hsh存取的方法.
聚簇存取方法的选择
为提高某个属性或者属性组的查询速度,把这个或这些属性上具有相同值的元组几种存放在连续的物理块中称为聚簇.该属性成为聚簇码.
聚簇功能可以大大提高某个属性或者属性组的查询速度
例如,要查询信息系的所有学生名单,设信息系有500名学生,在极端情况下,这500名学生所对应的数据元组分布在500个不同的物理块上,尽管对学生关系已经按照所在系建立索引,由索引可以很快找到元组标志,然而在由元组去访问数据块时就要存取500个物理块,执行500次I/O操作.如果将同一系学生元组几种存放,则每读一个物理块可以得到多个满足查询条件的元组,从而显著的减少了访问磁盘的次数.
必须强调的是,聚簇智能提高某些应用的性能,而且建立与维护聚簇的开销是相当大的.对于已有关系建立聚簇将导致关系中元组移动其物理存储位置,并使此关系上原来建立的所有索引无效,必须重建.