周末无事水文章,期末备考的总结资料
第八章 关系数据库设计
8.1 好的关系设计的特点
- 数据库逻辑设计主要解决的问题:
–关系数据库应该组织成几个关系模式
–关系模式中有包括哪些属性 - 从不良的设计模式到良好的设计模式的过程
- 不良的设计模式(各种异常)
A)数据冗余:看图不解释
B)插入异常:如果某个新学院没有招生,尚无学生时,则学院名和院长的信息无法插入到数据库中
C)删除异常:如果某个学生因为中途休学,而停选了所有课程,则他的所有信息都会被删除
D)更新异常:如果学生改名,则该学生的所有记录都要逐一修改SN
8.2 原子域和第一范式
- 一个域是原子的(atomic),如果该域的元素被认为是不可分的单元。我们称一个关系模式R属于第一范式(First Normal Form,1NF)【关系中每一分量不可再分。即不能以集合、序列等作为属性值】
8.3 使用函数依赖进行分解
8.3.1 码和函数依赖(Functional Dependency)
- 关系模式中的各属性之间相互依赖、相互制约的联系称为数据依赖
- 数据依赖一般分为函数依赖、多值依赖和连接依赖。其中,函数依赖是最重要的数据依赖
- 平凡/非平凡的函数依赖
- 完全函数依赖
- 传递函数依赖
8.4 函数依赖理论
8.4.1 函数依赖集的闭包
- 令F为一个函数依赖集。F的闭包是被F逻辑蕴含的所有函数依赖的集合,记作F+
- Armstrong公理系统
–三条规则
–简化后的规则
–名词英文解释:自反律(reflexivity rule)、增补律(augmentation rule)、传递律(transitivity rule)、合并律(union rule)、分解律(decomposition)、伪传递律(pseudotransitivity rule)
8.4.2 属性集的闭包
8.4.3 正则覆盖
- 无关属性(extraneous attribute)
- 正则覆盖(canonical cover)
–函数依赖集的等价性:函数依赖集F,G,若F+ = G+,则称F与G等价
–F的正则覆盖Fc是与F等价的“最小”的依赖集,Fc满足以下性质:
8.4.4 无损分解
- 定义
–具有无损连接性的分解保证不丢失信息;无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题
·定理
8.4.5 保持依赖
- 定义
- 例子
8.5 分解算法
- 主属性:候选码中的属性
- 非主属性:不包含在任何一个候选码中的属性
- 范式
–定义:范式是对关系的不同数据依赖程度的要求
–类型
*1NF:关系中每一分量不可再分。即不能以集合、序列等作为属性值
*2NF:每个非主属性完全依赖于R的每一个候选关键字(消除非主属性对码的部分依赖)
*3NF:如果R的任何一个非主属性都不传递依赖于它的任何一个侯选关键字,则称R是第三范式,简记为3NF(消除非主属性对码的传递依赖)
*BCNF:BC范式要求所有非平凡函数依赖都形如X→Y,其中X是一个超码 - 关系
- 算法
–分解为BCNF(可能会丢失函数依赖)
–分解为3NF(无损)