判断函数依赖

① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;

② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。直到找不到冗余的函数依赖;

③ 去掉各依赖左部多余的属性。一个一个地检查经过第②步去掉了多余依赖后的函数依赖左部非单个属性的依赖。例如XY→A,若要判Y为多余的,则以X→A代替XY→A是否等价?若A属于(X)+,则Y是多余属性,可以去掉。

 

对于求最小函数依赖,首先必须将右属性单一化,方便接下来的换算。接下来对于左属性的冗余判断和多余的函数依赖判断没有先后顺序,不过作为个人来说更习惯先将多余的函数依赖去掉,之后的判断多余的左属性更快。

 

已知R(U,F)U={a,b,c,d,e,f,g,h,i,j},F={abd->e,ab->g,b->f,c->j,cj->i,g->h }

求R(U,F)的最小函数依赖集

1.左属性单一化

F={abd->e,ab->g,b->f,c->j,cj->i,g->h};

2.去掉多余的依赖

①假设abd->e冗余,则在

F1={ab->g,b->f,c->j,cj->i,g->h} (abd)的闭包为abdgf,其中不包括e

所以abd->e不冗余

假设ab->g冗余,则在

F2={abd->e,b->f,c->j,cj->i,g->h} (ab)的闭包为abf,其中不包括g

所以ab->g不冗余

、、、、、、

同理如上,将每个依赖判断一下就能得到

F={abd->e,ab->g,b->f,c->j,cj->i,g->h}

 

注意:如果存在冗余的函数依赖,则将相关的函数依赖进行删除,在下面的关系判断中不能上一步出现的冗余函数依赖。

 

3、判断左属性的冗余

假如abd->e中的a冗余,则(bd)的闭包为bdf ,不包含e。同理的abd中不冗余。

cj->i中的c冗余,则(j)的闭包为j,不包含i;如果j冗余,则(c)的闭包为cji,包含i。所以j为冗余,改为c->i。

综上所得:F={abd->e,ab->g,b->f,c->j,c->i,g->h}

  • 18
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值