数据库-最小函数依赖集
2018-03-03 11:52阅读:
最小函数依赖集求法: 引用王珊《概论》的求法

个人总结是:
X->Y分成2个部分:1)右边拆成单属性,某一依赖可以通过其他依赖推出则删去;
2)左边去掉某些属性依旧可以推出右边,删去改属性;
例1:设有函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→H,ABC→PG},求与F等价的最小函数依赖集。
解:(1).将F中依赖右部属性单一化:
F1=
AB→C
HB→P
br> AB→E
D→H
A→C
D→G
GP→B
ABC→P
EP→A
ABC→G
CDE→P
(2).对于AB→C,由于有A→C,则为多余的:
F2=
AB→E
HB→P
A→C
D→H
GP→B
D→G
EP→A
ABC→P
CDE→P
ABC→G
(3).通过分析没有多余的依赖,则:
F3=AB→E
HB→P
A→C
D→H
GP→B
D→G
EP→A
ABC→P
CDE→P
ABC→G
例2:设有关系模式R(U,F),其中:
U={E,F,G,H},F={E→G,G→E,F→EG,H→EG,FH→E}
求F的最小依赖集。
解:1)右边拆成单属性
F={E→G,G→E,F→E,F->G,H→E,H-->G,FH→E}
2)查找多余函数依赖,已知左边单个属性的有E,G,F,H,很容易知道E→G,G→E不是多余依赖,
F->E: F+=FGE,故F-->E是多余的。H-->E:
H+=HGE故H-->E是多余的
此时F={E→G,G→E,F->G,H-->G,FH→E}
3)查找左边依赖是否有多余属性。FH-->E:
F+=FGE故H是多余,用F-->E代替,由2)可知F-->E也是多余;
所以F={E→G,G→E,F->G,H-->G}