函数依赖集 基本函数依赖集
大家好,今天小编来为大家解答函数依赖集这个问题,基本函数依赖集很多人还不知道,现在让我们一起来看看吧!
R的属性集和函数依赖集
(AB)+只的是闭包,闭包的定义是:
F是属性U上的关系依赖集,X是U的子集,X的闭包满足:
X+={属性A| X->A在 F+中}
也就是说(个人解释):X的闭包是用关系依赖把X这个集合中的属性加到不能再加为止。
例如你这道题:
1、A->B,从A可以把B加进来(当然初始的集合里包含了B)
2、有了B,就可以用B->D,从B可以把D加进来。
所以,(AB)+= ABD
以此类推。
(DE)+如下解:
1、有DE->B,就可以把B加进来,
2、因为有E,所以根据E->A,就可以把A加进来。
所以(DE)+= ABDE
再说说候选键,定义是:X->U在R上成立,但对于X的任意一个真子集X1都有X1->U不成立,则X是R上的候选键。
也就是说(个人解释),X这个集合的子集不能完整地导出U,即X是最小的集合,它里面的元素不能再少了。
最小函数依赖集的解法
求解最小函数依赖集分三步:
1.将F中的所有依赖右边化为单一元素
2.去掉F中的所有依赖左边的冗余属性.
3.去掉F中所有冗余依赖关系.
F={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};已经满足
2.去掉F中的所有依赖左边的冗余属性.
做法是属性中去掉其中的一个,看看是否依然可以推导
此题:abd->e,去掉a,则(bd)+不含e,故不能去掉,同理b,d都不是冗余属性
ab->g,也没有
cj->i,因为c+={c,j,i}其中包含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}.
关系模式与函数依赖集
34、给定关系模式R(U,F),U={A,B,C,D},函数依赖集F={AB→C,CD→B}。关系模式R( 1),且分别有( 2)。若将R分解成p={R1(ABC),R2(CDB)},则分解p( 3)。
(1)
A、只有1个候选关键字ACB
B、只有1个候选关键字BCD
C、有2个候选关键字ACD和ABD
D、有2个候选关键字ACB和BCD
(2)
A、0个非主属性和4个主属性
B、1个非主属性和3个主属性
C、2个非主属性和2个主属性
D、3个非主属性和1个主属性
(3)
A、具有无损连接性、保持函数依赖
B、具有无损连接性、不保持函数依赖
C、不具有无损连接性、保持函数依赖
D、不具有无损连接性、不保持函数依赖
答案【C A C】:
解析:
1、首先清楚候选码是什么:某属性集 A决定另一个属性集 B时,称另一属性集 B依赖于该属性集 A。
由此可知本题是根据函数依赖集求候选码:①∵AB->C∴ C依赖于AB;此时D无法被推出所以再加上D就是【ABD】②同理∵CD->B B依赖于CD A无法被推出∴CD加A【ACD】。
2、主属性的定义“包含在任何一个候选码中的属性叫做主属性(Prime attribute),否则叫做非主属性(Nonprime attribute)“;此时的候选码包括【ABD】【ACD】ABCD都存在不同的候选码∴分别有4个主属性。
3、满足无损连接性的充分条件是R1∩R2→(R1-R2)或R1∩R2→(R2-R1),能由函数依赖集F逻辑推出;| R1∩R2=CB;R1-R2=A;R2-R1=D;∵ CB->A和CB->D不能由函数依赖集F推出∴ p不具有无损连接性。
保持函数依赖:若满足(F1UF2)= F,则分解保持函数依赖,其中Fi是函数依赖集F在Ri上的投影;| F1是F在R1上的投影所以F1={AB->C}同理F2是F在R2上的投影F2={CD->B}|我们现在看一下F1、F2否满足判定:(F1∪F2)={AB->C,CD->B}==F;p满足保持函数依赖
好了,关于函数依赖集和基本函数依赖集的问题到这里结束啦,希望可以解决您的问题哈!