求最小函数依赖集:
思路:右边化成单一属性,左边去掉某些属性依然可以推出右边,则删除该属性。
例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 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)查找左边依赖是否有多余属性。FH-->E 得:F={E→G,G→E,F→E,F->G,H→E,H-->G}
3)查找多余函数依赖,已知左边单个属性的有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}