数据依赖对关系模式的影响
数据依赖
数据依赖 是一个关系内部属性和属性之间的一种约束关系。
关系模式的规范化
函数依赖
“X函数确定Y” 或 “Y函数依赖于X”,记作X→Y
平凡函数依赖与非平凡函数依赖
在关系SC(Sno, Cno, Grade)中,
- 非平凡函数依赖:
- (Sno, Cno) → Grade
- 平凡函数依赖:
- (
Sno
, Cno) →Sno
- (Sno,
Cno
) →Cno
- (
完全函数依赖与部分函数依赖
- 完全函数依赖
- (Sno,Cno)→Grade
- 部分函数依赖
- (Sno,Cno)→Sdept
传递函数依赖
在关系Std(Sno, Sdept, Mname)中,有:
- Sno → Sdept
- Sdept → Mname
Mname传递函数依赖于Sno
码
- 超键:能够唯一标识一个元祖的属性或属性集
- 候选键(候选码):不含有多余属性的超键
- 主键(主码):多个候选键中的一个
- 外键:如果关系R的某一属性不是自身的主键,而是另一关系S的主键,则称该属性是R的外键
- 全码:关系模式的所有属性是该关系的候选码,称为全码
- 主属性:候选码的诸属性
- 非主属性:不包含任何候选码的属性
范式
关系模式满足的确定的约束条件称为范式
-
第一范式(1F):关系模式的所有域均为简单域,其元素不可再分,即属性不能再分,每个属性是数据项,而不是属性组
-
第二范式(2F):任何一个非主属性都完全依赖于他的每个候选键
-
第三范式(3F):任何一个非主属性都不传递依赖于他的任何一个候选键
-
BC范式(BCNF):
- 非主属性对候选键完全依赖
- 非主属性不传递依赖于任何一个候选键
- 主属性对不含它的候选键完全依赖
- 主属性不传递依赖于任何一个候选键
多值依赖与第四范式
多值依赖
下表所表示的现实世界的情形,变成数据库的关系,就会形成多值依赖
![](https://i-blog.csdnimg.cn/blog_migrate/3fef3c437b3f09d12dcec9821b1354b2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b38d588d209063639b5caf331b6ae4b.png)
数据依赖的公理系统
Armstrong公理系统
Armstrong公理系统用处
- 可用于从一组函数依赖F求得蕴含(导出)的函数依赖
- 可用于求得关系模式的码
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,X→Z,有X→YZ
- 伪传递规则:由X→Y,WY→Z,有XW→Z
- 分解规则:由X→Y及 Z ⊆ \subseteq ⊆Y,有X→Z
闭包
在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记为 F + F^{+} F+
求闭包的算法
求闭包就是由一个属性直接或间接推导出的所有属性的集合,例如:
f={ a->b, b->c, a->d, e->f }
由a
可直接得到b
和d
,间接得到c
,则a
的闭包就是{ a, b, c, d }
。
例 设关系R(A, B, C, D, E, G)有函数依赖集F={AB→C, BC→AD,D→E, CG→B},求AB的闭包。
- 首先从AB出发,令
X={A, B}
,由于函数依赖AB→C左边的所有属性都在X中,所以可以把右边的C添加到X中,这时X={A, B, C}
- 其次考虑函数依赖BC→AD,左边B,C均在X中,右边D不在X中,将其添加到X中,此时X={A, B, C, D}
- 再考虑函数依赖D→E,同理可将E添加到X中,此时X={A, B, C, D, E}。
- 上述方法再不能向X中添加属性,所以得到 A B + = { A , B , C , D , E } AB^{+}=\{A, B, C, D, E\} AB+={A,B,C,D,E}。
最小依赖集
最小依赖集定义
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。
- F中任一函数依赖的右部仅含有一个属性。
- F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
- F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。