定义
——我们在书本上或者网上都是可以查询到完整的概念以及定义,但是不了解的朋友就算是看到定义也看不懂,所以这里只讲做题方法,等学会了之后可以根据做题方法反向理解概念以及定义
求候选码
关系模式
R<U,F>
U=(A,B,C,D,E,G),
F={AB–>C,CD–>E,E–>A,A–>G}
解题步骤
第一步:
F如下:
AB–>C
CD–>E
E–>A
A–>G
第二步:
L(左边有右边没有的元素):BD
R(右边有左边没有的元素):G
N(两边都没有的元素):∅
LR:(两边都有的元素):ACE
第三步:
合并L和N的元素为X
则有X:B,D
有首先求X的闭包:(BD)+=BD(不是全集U)
则从LR中依次取一个元素到X中,先取A,则有(ABD)
第一次求闭包(ABD)+=ABDGC(元素顺序无关)
第二次求闭包(ABCDG)+=ABCDGE(全集U)
所以A,B,D是一个候选码
再从LR中取C加入X有X=(BCD)
第一次求闭包(BCD)+=BCDE
第二次求闭包( BCDE)+=BCDEA
第三次求闭包(ABCDE)+=ABCDEG(全集U)
所以ABD是一个候选码
再从LR中取E加入X有X=(BDE)
第一次求闭包(BDE)+=BDEA
第二次求闭包( ABDE)+=ABDECG(全集U)
所以EBD是一个候选码
因为(ABD)(BCD)(BDE)的闭包都是U(ABCDEG),所以本题有三个候选码分别是(ABD)(BCD)(BDE)。
求最小函数依赖集
F={ABD->E,AB->G,B->F,C->J,CJ->I,G->H}
解题步骤
第一步:
ABD->E
AB->G
B->F
C->J
CJ->I
G->H
第二步:
1.将F中的所有依赖右边化为单一元素(左边不可拆分)
此题F={ABD->E,AB->G,B->F,C->J,CJ->I,G->H};已经满足
备注:如果有AB->EG,化为单一元素则为AB->E,AB->G
2.去掉F中的所有依赖左边的冗余属性.
做法是属性中去掉其中的一个,看看是否依然可以推导
此题:ABD->E去掉A,则(BD)+不含E,故不能去掉,同理B,D都不是冗余属性
AB->G,也没有
对于CJ->I,因为C->J,然后CJ->I所以J是冗余的,CJ->I将成为C->I
F={ABD->E,AB->G,B->F,C->J,C->I,G->H};
3.去掉F中所有冗余依赖关系.
做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉.
此题如果F去掉ABD->E,F将等于{AB->G,B->F,C->J,C->I,G->H},而(ABD)+={A,D,B,F,G,H},其中不包含E所以不是多余的.
同理(AB)+={A,B,F}也不包含G,故不是多余的.
B+={B}不多余,C+={C,I}不多余.
C->I,G->H不多余.
故都不能去掉.
所以所求最小函数依赖集为 F={ABD->E,AB->G,B->F,C->J,C->I,G->H}.
结束
本案例来自网络整理,若有问题请联系QQ:1490981733,也可评论区沟通