规范化
关系模式看为R<U,F>
R 关系名
U 一组属性
F 属性组U上的一组数据依赖
规范化:低级范式通过模式分解转换为高级范式
函数依赖
- 定义:在属性集U上,Y的属性值可由X的属性值唯一确定,则称X函数确定Y或Y函数依赖于X,记作X->Y
- 非平凡的函数依赖:X->Y,但Y⊄X
- 平凡的函数依赖:X->Y,但Y⊆X
- X称为决定因素
- 完全函数依赖:任意X的真子集都不能确定Y
- 部分函数依赖:存在X的真子集能确定Y
- 传递函数依赖:X->Y,Y->Z,则Z对X传递函数依赖
码
- 候选码:K为属性或属性组合,U完全函数依赖于K,K为候选码
- 超码:U部分依赖于K,K为超码
- 主码:候选码中任意一组
- 主属性:包含在任意一个候选码中的属性
- 非主属性:不包含在候选码
- 全码:所有属性都在候选码中
范式
- 第一范式1NF:每一个分量都是不可分的数据项
- 5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF
2NF
- 第二范式2NF:R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码
3NF
- 第三范式3NF:R∈1NF,且每一个非主属性既不传递依赖于码,也不存在部分函数依赖于码
BCNF
- BCNF:R∈1NF,且每个决定因素都包含码
- 所有非主属性对每个码都是完全函数依赖
- 所有主属性对每一个不包含它的码也是完全函数依赖
- 没有任何属性完全依赖于非码的任何一组属性
多值依赖
- 定义:X+Y+Z=U,对关系r,给定一组(x,z),有一组y的值,这组值仅仅由x决定,与z无关,称X->->Y为多值依赖
- 平凡的多值依赖:X->->Y,且Z为空
- 多值依赖具有对称性 X+Y+Z=U,X->->Y,则X->->Z
- 多值依赖具有传递性 X->->Y,Y->->Z,则X->->Z
- 函数依赖可以看作是多值依赖的特殊情况
- 多值依赖的有效性与属性集的范围有关
4NF
- 4NF:R∈1NF,且R的每个非平凡多值依赖包含码
- 4NF不允许属性之间有非平凡且非函数依赖的多值依赖
公理系统
Armstrong公理系统
- 自反律:Y⊆X⊆Z,则Y->X
- 增广律:若Y->X,则ZY->ZX
- 传递律:若Y->X,X->Z,则Y->Z
闭包
- 定义:{A|X->A能由F根据Armstrong公理导出}
- 算法:当Xi=Xi+1或Xi=U时,所得属性集合为闭包
例:AB->C,B->D,C->E,EC->B,AC->B
(1)设X0=AB,由AB->C,B->D得X1=ABCD
(2)由C->E,AC->B得X2=ABCDE
(3)由X2=U得到闭包为ABCDE
最小函数依赖集
- 任一函数依赖右部仅含有一个属性
- 不存在X->A,使F与F-{X->A}等价
- 不存在X->A,X有真子集Z,使F与F-{X->A}∪{Z->A}等价
- 左部尽量简单,减少重复可被替代的依赖
模式分解
- 保持函数依赖,总可以达到3NF,不一定达到BCNF
- 既保持函数依赖,又具有无损连接性,可以达到3NF,不一定达到BCNF
- 具有无损连接性,一定可以达到4NF
三个定义
- 具有无损连接性
分解完成后有一行为a1,a2,a3,a4…an,则为无损分解
通俗来说,就是不丢失信息 - 保持函数依赖
减少异常情况 - 既具有无损连接性,又保持函数依赖
分解算法
- 合成法:转换为3NF的保持函数依赖的分解
- 分解法:转换为BCNF的无损连接分解
- …