数据库系统4——设计篇:概念数据库设计、逻辑数据库设计、物理数据库设计。
数据库设计概述与需求分析
概念:对于一个给定的应用领域,设计优化的数据库逻辑和物理结构,使之满足用户的信息管理要求和数据操作要求,有效地支持各种应用系统的开发和运行。
- 信息管理要求:在数据库中应该存储和管理哪些数据对象
- 数据操作要求:对数据对象需要进行哪些操作
数据库设计目标
为用户和各种应用系统提供一个基础设施和高效的运行环境
- 数据信息完整、冗余度低
- 存取效率高
- 运行管理效率高
数据库设计
中心:用户需求
数据库设计包括:
- 设计数据库模式
- 设计访问和更新数据的程序
- 设计数据访问的安全模式
各级模式形成过程:
需求分析$\rightarrow$概念数据库设计$\rightarrow$逻辑数据库设计$\rightarrow$物理数据库设计
- 需求分析:综合应用需求
- 概念数据库设计:形成概念模式(E-R图)
- 逻辑数据库设计:首先将E-R图转换成数据模型(如关系模型),形成逻辑模式,再根据安全性和用户需求形成外模式
- 物理数据库设计:进行物理存储安排
概念数据库设计
概述
设计任务:
- 概念数据库模式设计
- 事务设计
概念数据库模式独立于任何数据库管理系统,不能直接用于数据库的实现。
用于概念数据库设计的高级数据模型——实体联系模型
实体联系(E-R)模型
三个主要元素:实体、属性、联系
实体
- ER模型的基本对象
- 每个实体都有一组特征或性质——属性
- 实体属性的一组特定值确定了一个特定的实体
- 实体的属性值是数据库中存储的主要数据
- 实体集:相同类型的实体的集合
- 实体集不必互不相交
属性
- 单值属性、多值属性
- 一些属性的取值可能是多个(eg:联系方式)
- 简单属性、复合属性
- 符合熟悉具有层次结构(eg:家庭住址可再分)
- 派生属性
- 可以由其他属性导出(eg:年龄可由生日导出)
- 码的概念
联系
不同实体集的实体之间存在的某种关联
联系集:同类联系的集合
- 称一个联系集所关联的实体集的数量为这个联系集的阶
- 阶为n的联系集称为n元联系集
- 联系集的属性
约束
- 映射基数
- 一个实体通过一个联系能关联的实体的个数
- 一对一、一对多、多对多
- 一个实体通过一个联系能关联的实体的个数
- 参与约束
- 全城关联约束
- eg:每个教研室必须属于一个系,则教研室实体集与属于联系集有全程关联约束
- 部分关联约束
- eg:不是每个教师都是主任
- 全城关联约束
- 映射基数
弱实体集
必须有一个或多个属性,使得这些属性可以与主实体集的码相结合,形成相应弱实体的码
- 上述属性称为弱实体集的部分码
- eg:父亲实体集与孩子实体集(不同父亲的孩子名字可以相同,同一个父亲的孩子姓名一定不同)
实体联系图(ER图)
这部分略了先qvq…
事务设计
事务:一个或多个数据操作构成的集合,这组操作满足原子性
设计任务:定义事务功能、说明事务的输入输出。
本章重点:实体联系模型、实体联系图、账务概念数据库设计方法
逻辑数据库设计
设计任务:把概念数据库设计产生的概念数据库模式变换为逻辑数据库模式。
- ER图$\rightarrow$关系表
逻辑数据库设计的步骤
- 形成初始关系数据库模式
- 关系模式规范化
- 关系模式优化
- 定义关系上的完整性和安全性约束
- 子模式定义
- 性能估计
形成初始关系模式
- 普通实体集变换
- 弱实体的变换
- 主实体集的码和弱实体集的部分码构成关系的主码
- 多值属性的变换
- 为每个多值属性建立一个关系
- 实体间联系的变换
- 一对一:在其中一个关系中增加有关信息、或建立单独关系
- 一对多:可以不建立新关系、也可以建立
- 多对多:建立新关系
- n元联系的变换:和多对多类似
关系模式规范化
为了避免由函数依赖引起的冗余问题、插入问题、更新问题和删除问题
函数依赖
定义:设R是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R的任意实例r,r中任意两个元组t1和t2,如果t1[X]=t2[X],则t1[Y]=t2[Y],我们称X函数地确定Y,或Y函数依赖于X,记作X→Y。
- 如果X→Y且Y不是X的子集,则称X→Y是非平凡函数依赖
- 如果X→Y,称X为这个函数依赖的决定属性集
完全函数依赖与部分函数依赖
- X取任何真子集都不能使依赖成立——完全函数依赖
传递地函数依赖
各种码:
- 超码:可以唯一地识别关系的元组
- 候选码:超码且不能取真子集
- 主码:被选中的孩子!(x候选码)
- 键属性:包含在某个候选码中的属性
- 非键属性:不包含在任何候选码中的属性
- 全键:候选码包含所有属性
- 外码:某个属性子集合是另一个关系模式的主码
函数依赖的公理系统
Armstrong公理系统——模式分解算法的理论基础
设R是一个具有属性集合U的关系模式,F是R上的函数依赖集合。如果对于R的任何一个使F称的关系实例r,函数依赖X→Y都成立,则称F逻辑蕴含X→Y。
Armstrong公理系统
- 自反率:$Y \subseteq X \subseteq U,$则 X→Y 为F所蕴含。
- 增广率:若 X→Y 为F所蕴含,且$Z \subseteq U$,则XZ→YZ为F所蕴含。
- 传递率:若 X→Y 及 Y→Z 为F所蕴含,则 X→Z为F所蕴含。
- 导出规则:
- 合并规则(左部相同右部可合并)
- 伪传递规则(X→Y,WY→Z,则XW→Z)
- 分解规则(Z $\subseteq$ Y,X→Y,则X→Z)
闭包:大概就是给的能推出来的都加进去
对于给定关系模式和函数依赖集,可将属性分为四类
- L类:仅出现在函数依赖左部
- 必为任一候选码的成员
- R类:仅出现在右部
- 不在任何候选码中
- N类:在两边都未出现
- 必包含在任一候选码中
- LR类:两边都出现
- 推论:如果X是N、L两类属性组成的属性集且X的闭包包含了R的全部属性,则X是R的候选码
- L类:仅出现在函数依赖左部
极小函数依赖集:
- F中任一函数依赖右部仅含有一个属性
- 不存在X→Y使得F与F-{X→Y}等价
- 不存在X→Y,X有真子集Z使得F-{X→Y}∪{Z→Y}与F等价
- 极小函数依赖集不唯一
计算极小函数依赖集的方法:
- 拆分右部
- 逐一去掉某函数依赖(X→Y)判断剩余是否仍满足X→Y(计算闭包)
- 逐一判断能否去掉右部某一部分使其仍成立
关系模式的规范形式
$1NF \supset 2NF \supset 3NF \supset BCNF \supset 4NF$
第一范式(1NF)
- 每个属性的值域是不可分的简单数据项的集合
- 问题
- 插入异常、删除异常、数据冗余度大、修改复杂
- 存在部分函数依赖
第二范式(2NF)
- 每一个非键属性都完全函数依赖于候选码
- 可以由1NF模式分解得到多个2NF,减轻了问题。
- 存在非键属性对候选码的传递函数依赖
第三范式(3NF)
- 任何一个非键属性都不传递依赖与任何候选码
- 仍不能完全消除问题
- 键属性部分依赖于候选码
BC范式(BCNF)
- 1NF且对于每个函数依赖,左部必为候选码
- 性质:
- 所有非键属性都完全依赖于每个候选码
- 所有键属性都完全依赖于不包含它的候选码
- 没有任何属性依赖于非键的一组属性
- 满足BCNF一定满足3NF
- 效处理插入和删除异常
关系模式的分类
- 静态关系:一旦数据已经加载,只能查询不能插入删除更新
- 需满足1NF
- 动态关系:经常插入删除更新
- 需满足3NF
不能说规范化程度越高的关系模式就越好(考虑实际情况和用户需求)
分解时的要求:既可以通过自然连接恢复为原来的关系(无损连接性),也不丢失函数依赖
判断无损连接性:分解后的函数依赖的并集是否完全包含原本的函数依赖集
分解为具有无损连接和保持函数依赖的3NF
- 根据绩效函数依赖及合并左部相同部分
- 分解后判断是否包含候选码,不包含加入
- 合并包含关系
关系模式优化
提高数据的操作效率和存储空间利用率
常用分解方法
- 水平分解:把元组分成若干个子集,定义每个子集为一个子关系
- 垂直分解:需要注意保持无损连接性和函数依赖
定义关系上的完整性和安全性约束
- 完整性约束
- 属性上的完整性约束
- 多个属性键的完整性约束
- 不同关系模式的完整性约束
- 安全性约束
- 属性上的安全性约束
- 关系模式上的安全性约束
子模式定义
利用视图定义外模式
- 属性重命名
- 不同级别不同视图
- 简化用户使用
性能估计
对时间复杂性和空间复杂性进行估算
三个测度:逻辑记录存取数、信息传输量、存储空间占用量
本章小结:熟练掌握实体联系模型向关系模式的转换;掌握函数依赖,Armstrong公理系统,各种NF;掌握无损连接性、函数依赖保持性,关系模式分解算法。
物理数据库设计
设计任务:选择合适的存储结构和存取方法,是数据库上的事务可以高效率允许
设计步骤
- 分析影响物理数据库设计因素
- 为关系模式选择存取方法
- 设计关系、索引等数据库文件的物理存储结构
常用存取方法
- 聚集方法
- 把经常进行连接操作的多个关系的记录以链接属性为中心分类存储
- 一个物理数据库可以由多个聚集存储,但是一个关系只能加入一个聚集存储
- 选择方法
- 确定聚集关系组:
- 经常连接操作的关系
- 一个关系的某组属性经常出现在相等比较条件中
- 某一(组)属性实例重复率很高
- 取消不必要关系:经常全关系扫面的,更细删除操作远大于连接操作的。
- 确定优化的聚集方案
- 确定聚集关系组:
- 索引方法
- 确定候选索引方法:
- 经常出现在查询操作条件
- 经常作为聚集函数参数
- 经常在连接操作的连接条件中
- 经常作为投影属性使用
- 索引存取方法的选择
- 确定候选索引方法:
- HASH方法
- 选择规则:经常出现在相等连接操作条件中或相等比较选择条件中,且满足:
- 如果关系大小可预知且不变
- 如果关系大小动态改变且数据库管理系统提供了动态HSAH存取方法
- 选择规则:经常出现在相等连接操作条件中或相等比较选择条件中,且满足:
物理存储结构设计
确定如何在磁盘存储器上存储关系、索引和聚集,使得空间利用率最大化,数据操作引起的系统开销最小化。
本章重点:掌握数据库物理存储结构和存取方法的设计
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!