数据库候选码和最小依赖集的求解

数据库 候选码 最小函数依赖集

定义

——我们在书本上或者网上都是可以查询到完整的概念以及定义,但是不了解的朋友就算是看到定义也看不懂,所以这里只讲做题方法,等学会了之后可以根据做题方法反向理解概念以及定义

求候选码

关系模式
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,也可评论区沟通

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值