关系代数
关系代数的应用解过程
关系代数:
- 确定查询目标
- 明确查询条件
- 选择查找路径, 确定操作对象
- 关系的合并: 据3, 联结
- 元组的选择: 据2, 条件
- 属性的指定: 据1, 投影
第八章
概述
- 关系模式设计: 同一个关系数据库系统 有 多种不同的关系模式设计方案
- 好的设计方案: 既有合理的数据冗余度, 又没有插入和删除操作异常
- 不同设计结果有区别的原因: 函数依赖(属性间的语义相关性)不同
- 关系的规范化
- 函数依赖: 一个关系中 两组属性之间的 取值约束
- 表示: X→YX→Y: YY函数依赖于XX
- 直观: 在关系RR中, 每个XX的值都有唯一的一个YY值与之对应
- 定义: 关系模式R(U)R(U)中, 关系rr中元组riri在XX中的取值确定后, YY中取值必被确定, 则X→YX→Y
- XX决定因素, YY依赖因素
- 发现函数依赖
- 直接根据语义
- 根据取值对应关系
- 一一对应: X→YX→Y, Y→XY→X
- 一多对应/多一对应: Y→XY→X, X→YX→Y
- 多多对应: 没有
- 平凡函数依赖
- 非平凡函数依赖: X→Y,Y⊈XX→Y,Y⊈X, 默认是这个
- 平凡函数依赖: 反之
- 完全函数依赖
- 完全函数依赖: X→Y,∀X′⊂X,X′↛YX→Y,∀X′⊂X,X′↛Y, 则Xf→YXf→Y
- 部分函数依赖: X→Y,∃X′⊂X,X′→YX→Y,∃X′⊂X,X′→Y, 则Xp→YXp→Y
- 传递函数依赖
- X→Y,Y⊄X,Y↛X,Y→ZX→Y,Y⊄X,Y↛X,Y→Z, 则 X→ZX→Z为传递函数依赖
- Armstrong公理系统
- 基本规则
- 自反规则: Y⊆XY⊆X, 则X→YX→Y
- 增广规则: X→YX→Y, 则XZ→YZXZ→YZ
- 传递规则: X→Y∧Y→ZX→Y∧Y→Z, 则X→ZX→Z
- 扩充规则
- 分解规则: X→YZX→YZ, 则X→Y∧X→ZX→Y∧X→Z
- 合并规则: X→Y∧X→ZX→Y∧X→Z则X→YZX→YZ
- 伪传递规则: X→Y∧WY→ZX→Y∧WY→Z, 则WX→ZWX→Z
- 基本规则
- 函数依赖的逻辑蕴含概念
- FF为关系模式R(U)R(U)的一个函数依赖集
- 从已有的函数依赖出发, 利用公理系统可以推导出X→YX→Y, 则F⊨X→YF⊨X→Y
- 函数依赖集FF的闭包F+F+: F+={X→Y|F⊨X→Y}F+={X→Y|F⊨X→Y}
- 函数依赖集的等价
- 可以互相推导出其中的函数依赖
- 最小函数依赖集
- 与FF等价的, 最小的集合
- [解题] 寻找最小依赖集
- 首先得到题目中的所有函数依赖, 分解成右端只有一个的依赖
- 画箭头图, 用那堆公理尽可能减少集合大小
- 合并依赖
- 属性集XX在函数依赖集F+F+上的闭包X+FX+F: X+F={A|F⊨X→A}X+F={A|F⊨X→A}
- [解题] 计算闭包
- X+=XX+=X
- 不断重复: 对每一个FF中的依赖Y→ZY→Z, 若Y⊆X+Y⊆X+, 则X+=X+∪ZX+=X+∪Z
- 直到不再变化
- [解题] 计算闭包
- 关键字
- 模式分解
- 分解结果: 子关系模式, 满足
- Head(R)=⋃nHead(Ri)Head(R)=⋃nHead(Ri)
- Fi={X→Y|X→Y∈F+∧(X∪Y)∈Head(Ri)}Fi={X→Y|X→Y∈F+∧(X∪Y)∈Head(Ri)}
- 分解方法
- 找出所有不满足范式的依赖
- 选择一个依赖, 设Xf→YXf→Y为这个依赖, 则将这个依赖所在的关系RR分解为
- R1={X∪Y,{X→Y}}R1={X∪Y,{X→Y}}
- R2={Head(R)−Y,F2}R2={Head(R)−Y,F2}
- 其中F2={A→B|A→B∈F+∧(A∪B)⊆Head(R2)}F2={A→B|A→B∈F+∧(A∪B)⊆Head(R2)}
- 分解结果: 子关系模式, 满足
- 1NF: 属性值不可分割, 全都满足
- 2NF: 满足1NF, 每个非主属性都完全依赖于关键字
- 检查:
- 找到所有非主属性 和 所有候选关键字
- 检查每一个非主属性AA和每一个候选关键字KK之间的函数依赖, 看看有没有部分依赖
- 检查:
- 3NF: 满足2NF, 每个非主属性都不传递依赖于关键字
- 检查: 不满足3NF, 则必然存在下列情况之一, 其中Xf→YXf→Y
- XX是某个关键字的真子集
- XX不是关键字
- 检查: 不满足3NF, 则必然存在下列情况之一, 其中Xf→YXf→Y
- BCNF: 满足1NF, 若X→YX→Y则XX必含有该模式的关键字
- 检查: 每个函数依赖, 是否满足XX是关键字
- BCNF -> 3NF
多值依赖与第四范式
- 多值依赖: X→→YX→→Y
- 定义: 对XX的一个取值, 存在一组YY与其对应; YY的取值与U−X−YU−X−Y不相关
- 成因: 两个一对多关系C→TC→T, C→LC→L, 其合并后TT与LL就是多值依赖
- 平凡多值依赖
- 非平凡多值依赖: U−X−YU−X−Y不为空集
- 平凡多值依赖: 反之
- 多值依赖有关的推理规则(需要掌握)
- 求补规则: 若X→YX→Y, 则U−X−YU−X−Y
- 转换规则: 若X→YX→Y, 则X→→YX→→Y
- 4NF
- 无损联结性
- 设ρ={R1,⋯,Rk}ρ={R1,⋯,Rk}是对RR的一个分解
- 如果对每个满足FF的关系实例rr都满足r=πR1(r)⋈⋯⋈πRk(r)r=πR1(r)⋈⋯⋈πRk(r)
- 则ρρ是无损联接分解
- 充要条件(ρ={R1,R2}ρ={R1,R2})
- R1∩R2→(R1−R2)R1∩R2→(R1−R2) 或 R1∩R2→(R2−R1)R1∩R2→(R2−R1)
- 依赖保持性
- 计算最小依赖集, 代替FF进行分解
- S=∅S=∅
- 对每一个函数X→YX→Y依赖进行
- 若在SS中找不到子关系模式ZZ, 使得X∪Y⊆Head(Z)X∪Y⊆Head(Z)
- XX和YY合并成新的子关系模式, 加入SS
- 如果RR中的每个候选关键字KK均不在SS中, 则任选一个关键字, 其属性单独构成一个子关系模式, 加入SS
v1.5.2