求最小函数依赖集

参考:https://blog.csdn.net/prdslf001001/article/details/80336835

例1:关系模式R(U,F)中,U=ABCDEG,F={B->D,DG->C,BD->E,AG->B,ADG->BC};求F的最小函数依赖集

(1)用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;得到:

F={B->D,DG->C,BD->E,AG->B,ADG->BADG->C};

(2)去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,依次做下去。直到找不到冗余的函数依赖;

① 去掉B->D,此时F={DG->C,BD->E,AG->B,ADG->B,ADG->C},此条件下得出B的闭包 B+ = B;B+不包含D,所以B->D保留。

②去掉DG->C,此时F={B->D,BD->E,AG->B,ADG->B,ADG->C},此时DG闭包DG+ = DG,不包含C,所以不能去掉DG->C.

③ 去掉BD->E,此时F={B->D,DG->C,AG->B,ADG->B,ADG->C},此时闭包BD+ = BD,不包含E,所以不能去掉BD->E,继续保留。

④去掉AG->B,此时F={B->D,DG->C,BD->E,ADG->B,ADG->C};此时AG+ = AG,不包含B,所以不能去掉AG->B,继续保留。

⑤去掉ADG->B,此时F={B->D,DG->C,BD->E,AG->B,ADG->C},此时ADG+ = ADGCBE,包含了B,所以删除ADG->B,不保留。

⑥去掉ADG->C,此时F={B->D,DG->C,BD->E,AG->B},此时ADG+ = ADGCBD,包含了C,所以删除ADG->C,不保留。

综上所得,此时得到F={B->D,DG->C,BD->E,AG->B};

(3)去掉各依赖左部多余的属性。一个一个地检查函数依赖左部非单个属性的依赖。

此时函数依赖左边非单个属性有:DG->C,BD->E,AG->B;所以做如下操作:

①先来看DG->C,首先去掉D,则此时G的闭包G+ = G,不包含C,保留D。再次去掉G,此时D+ = D,不包含C,所以G也不能去掉;

②再来看BD->E,首先去掉B,得到此时D的闭包D+ = D,不含E,保留B。然后去掉D,此时B+ = BDE,包含了E,所以去掉D,即得出:B->E;

③最后再来看AG->B,去掉A,G+ = G,不包含B,不能去掉A。去掉G的时候,A的闭包A+ =A,不含B,不能去掉A,还是AG->B ;

所以最后得出:F的最小函数依赖集是:F={B->D,DG->C,B->E,AG->B};

参考:https://blog.csdn.net/prdslf001001/article/details/80336835

 

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eva_5433

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值