-
不合理的关系模式存在的异常问题
- 数据冗余
- 插入异常
- 更新异常
- 删除异常
-
函数依赖
X -> Y :Y函数依赖于X
-
不平凡函数依赖
( X , Y ) - > Z but X -/-> Z and Y -/-> Z
-
完全函数依赖
X -> Y W->V (X,W) -> Z
-
部分函数依赖
X -> Y W->V (X,W)-> Y
-
传递函数依赖
X->Y Y->Z X->Z
-
Armstrong公理:
- 自反性 如果B⊆A,则A->B
- 增广性 如果A->B,则AC->BC
- 传递性 如果A->B 且 B->C 则 A->C
-
推论:
- 合并性:如果A->B A->C 则 A->BC
- 分解性:如果A->BC,则A->B A->C
- 伪传递性:如果A->B BC->D 则 AC->D
- 复合性:如果A->B C-D 则AC->BD
-
给出关系模式和函数依赖集F求闭包F+(简单 不要忘了 Ø->Ø)
-
属性集的闭包
X+ = {属性A|X->A 在F+中}
-
候选码算法
给出R(U) F是R上的函数依赖集
- 找出L、R、LR、N类属性
- 先看L类属性的闭包 如果闭包是全集就是候选码
- 如果L类属性不是,就组合看LR类属性的闭包
-
判断是否等价算法(是否覆盖)
给出函数依赖集F和G
- 检查F中的每一个函数依赖是否能够用G推出
- 检查G中的每一个函数依赖是否能够用F推出
-
判断最小函数依赖集
- F中任一函数依赖的右边只有一个属性
- F中函数依赖的左部无多余属性
- 无多余的函数依赖
-
求最小函数依赖集
- 把右边多属性的拆开
- 去掉左部多余属性
- 去掉多余依赖(传递依赖)
- 再一个个的去掉依赖,求各个闭包
-
关系模式的分解
- 分解具有无损连接性
- 分解要保持函数依赖
- 分解既要保持函数依赖,又要具有无损连接性
-
无损连接性:分解后得到的各个关系可以通过自然连接来实现还原,还原就是不比原来信息多也不比原来信息少
- 建立二维表
- 填充 a1 a2 … an
- 根据函数依赖集判断是否需要将aj替换为bij
- 如果有一行是全a 则是无损连接
-
保持函数依赖:分解后各个具体关系上的函数依赖集的并集刚好等价于原来关系上的依赖集
- 就看ρ里面的在不在F里面的
- F里面有的ρ里面有没有
-
一个无损连接分解不一定是保持函数依赖的,一个保持函数依赖的分解也不一定是无损连接的
-
范式
- 第一范式:满足最基本规范化要求 不可分割的数据项
- 第二范式:每个非主属性都完全函数依赖于任意一个候选码
- 第三范式:非主属性对任何候选码都不存在传递函数依赖
-
把一个关系模式分解为3NF,使它具有保持函数依赖性算法
- 求Fmin 函数最小依赖集
- 判断在Fmin中是否能够组成属性全集的依赖
- 在R中是否有属性在Fmin中没出现
- 分解:每个依赖单独组成一个关系
- 合并:左侧属性相同的依赖合并
-
把一个关系模式分解为3NF,使它具有无损连接性又具有保持函数依赖性算法
- 根据20算法求出保持函数依赖的分解ρ
- 判断ρ是否具有无损连接性
- 若不是就在ρ中加入R的候选码
-
BC范式:不存在任何(主和非主)属性对主码的部分函数依赖和传递函数依赖
-
多值依赖:一个数据项对应多个数据项
-
第四范式:了解
4 关系规范化理论
![](https://img-home.csdnimg.cn/images/20240711042549.png)