6.3 数据依赖的公理系统
➢ 数据依赖的公理系统是模式分界算法的理论基础
➢ 函数依赖的一个有效而玩呗的公理系统——Armstrong公理系统,一套推理规则,是模式分界算法的理论基础。
用途:
◾ 从一组函数依赖求得蕴含的函数依赖。例如求X→Y是否被F所蕴含
◾ 求给定关系模式的码
➢ 逻辑蕴含
定义6.11 对于满足一组函数依赖F的关系模式R<U, F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组 t, s,若t[X] = s[X]),则t[Y] = s[Y]),则称F逻辑蕴含X→Y
Armstrong公理系统
设U是属性集总体,F是U上的一组函数依赖,于是有关系模式R<U, F>。对R<U, F>来说有一下的推理规则:
◾ A1.自反律(Reflexivity):若Y⊆X⊆U,则X→Y为F所蕴含
◾ A2.增广律(Augmentation):若X→Y为F所蕴含,且Z⊆U,则XZ→YZ为F所蕴含
◾ A3.传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
1.根据A1,A2,A3这三条推理规则可以得到下面三条推理规则
◾ 合并规则:由X→Y,X→Z,有X→YZ
◾ 伪传递规则:由X→Y,WY→Z,有XW→Z
◾ 分解规则:由X→Y及Z⊆Y,X→Z
2.根据合并规则和分解规则,可得引理6.1
引理6.1 X→
A
1
A
2
.
.
.
A
k
A_1A_2...A_k
A1A2...Ak成立的充分必要条件
X
→
A
i
X→Ai
X→Ai成立(i = 1, 2, …, k)
➢ 闭包
F
+
F^+
F+
定义6.12 在关系模式R<U, F>中为F所逻辑蕴含的函数依赖的全体叫做F的闭包(closure),记为
F
+
F^+
F+
➢ X关于函数依赖集F的闭包
F
+
F^+
F+
定义6.13 设F为属性集U上的一组函数依赖X⊆U,
X
F
+
X_F+
XF+ = {A | X→A能有F根据ArmStrong公理导出},
X
F
+
X_F+
XF+称为属性集X关于函数依赖集F的闭包。
➢ 关于闭包的引理
引理6.2 设F为属性集U上的一组函数依赖,X,Y⊆U,X→Y能由F根据Armstrong功力导出的充分必要条件是Y⊆
X
F
+
X_F+
XF+
➢ 引理6.2的用途
- 将判定X→Y是否能由F根据Armstrong公理导出的问题,就转化为求出 X F + X_F+ XF+,判定Y是否为 X F + X_F+ XF+的子集的问题
- 如果 X F + X_F+ XF+=U,X是R<U, F>的候选码
➢ X F + X_F+ XF+可以用算法来求得!
算法6.1
对于R<U, F>,求属性集X(X⊆U)关于U上的函数依赖集F的闭包
X
F
+
X_F+
XF+
输入:X,F
输出:
X
F
+
X_F+
XF+
步骤:是一个迭代算法
(1)令
X
(
0
)
X^{(0)}
X(0) = X,i=0
(2)求B,这里B = {A | (∃V)(∃W)(V→W∈F ⋀ V ⊆
X
(
i
)
X^{(i)}
X(i) ⋀ A ∈ W)}
对
X
(
i
)
X^{(i)}
X(i)中的每个元素,依次检查相应的函数依赖,将依赖他的属性加入B
(3)
X
(
i
+
1
)
X^{(i+1)}
X(i+1) = B ∪
X
(
i
)
X^{(i)}
X(i)
(4)判断
X
(
i
+
1
)
X^{(i+1)}
X(i+1) =
X
(
i
)
X^{(i)}
X(i)吗?
(5)若相等或
X
(
i
)
X^{(i)}
X(i) = U,则
X
(
i
)
X^{(i)}
X(i)就是
X
F
+
X_F+
XF+,算法终止
(6)若否,则i=i+1,返回第(2)步
[例 1] 已知关系模式R<U, F>,其中U={A,B,C,D,E};F={AB→C, B→D, C→E, EC→B, AC→B}。
求
(
A
B
)
F
+
(AB)_F^+
(AB)F+
解:
设
X
0
X^0
X0 = AB
计算
X
1
X^1
X1:由AB→C, B→D得
X
1
X^1
X1 = AB ∪ CD = ABCD
因为
X
0
X^0
X0≠
X
1
X^1
X1
计算
X
2
X^2
X2:由C→E, AC→B得
X
2
X^2
X2 =
X
1
X^1
X1 ∪ BE = ABCDE
这是
X
2
X^2
X2 ≠
X
1
X^1
X1,但是
X
2
X^2
X2已等于全部属性集合,所以
(
A
B
)
F
+
(AB)_F^+
(AB)F+ = ABCDE
注:还有一种情况:如果
X
i
X^i
Xi =
X
i
−
1
X^{i-1}
Xi−1,则
X
i
X^i
Xi即为所求的闭包
➢ Armstrong公理系统的有效性和完备性
➢ 有效性和完备性的含义
◾ 有效性:由F触发根据Armstrong公理系统倒出来的每一个函数依赖一定在
F
+
F^+
F+中
◾ 完备性:
F
+
F^+
F+中的每一个函数依赖,必定可以由F根据Armstrong公理推导出来
定理6.2 Armstrong公理系统是有效的、完备的
➢ 函数依赖集等价的定义
定义6.14 如果
G
+
G^+
G+=
F
+
F^+
F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价
(即:判断两个函数依赖集是不是等价,就是判断两个函数依赖集的闭包是否相等——两个函数依赖集等价是指它们的闭包等价)
➢ 最小依赖集
➢ 也称为极小函数依赖集,最小覆盖
定义6.15 如果函数依赖集F满足下列条件,则称F为一个最小依赖集
(1)F中任一函数依赖的右部仅含有一个属性
(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价(即F中的函数依赖均不能由F中其他函数依赖导出)
(3)F中不存在这样的函数依赖X→A,X有真子集Z是的F-{X→A} ∪ {Z→A}与F等价即F中各函数依赖左部为最小属性集(不存在冗余属性))
➢ R<U, F>, U=ABCD
函数依赖集F = {A→BD, AB→C, C→D}
求:F最小函数依赖集
解法步骤:
◾ 1.将F中所有函数依赖的右边化为单一属性
◾ 2.去掉F中所有函数依赖左边的冗余属性
◾ 3.去掉F中所有冗余的函数依赖
(1)将F中所有函数依赖的右边化为单一属性
F = {A→BD, AB→C, C→D}——>F = {A→B, A→D, AB→C, C→D}
(2)去掉F中所有函数依赖左边的冗余属性
➢ F的最小依赖集
F
m
F_m
Fm不是唯一的
[例] F = {A→B, B→A, B→C, A→C, C→A}
F的最小依赖集:
F
m
1
F_{m1}
Fm1 = {A→B, B→C, C→A}
F
m
2
F_{m2}
Fm2 ={A→B, B→A, A→C, C→A}
F的最小依赖集
F
m
F_m
Fm不是唯一的,它与对各函数依赖
F
D
i
FD_i
FDi及X→A中X各属性的处置的顺序有关