如何判断候选码

判断候选码的方法
(1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中;
(2)如果有属性只在函数依赖集右边出现,那么它必不包含在候选码中;
(3)如果有属性只在函数依赖集的左边出现,则该属性一定包含在候选码中。
(4)如果有属性或属性组能唯一标识元组,则它就是候选码,也就是说,通过函数依赖所求出的候选码的闭包中,能够包含所有的属性。

举个例子
有关系模式R<U,F>,U={A,B,C,D},
1)F={A→B,B→C,C→D,D→A}
2)F=Φ(空集)
3)F={A→B,B→A,A→C}
4)F={(A,B)→C,D→A}
5)F={(A,B)→C,C→A}
求它们的候选码

1):所有属性ABCD在左右两侧均出现,因此前三条判断均不起作用。通过(4)的判断方法可以得知,A的闭包为{A,B,C,D};B的闭包为{A,B,C,D};C的闭包为{A,B,C,D};D的闭包为{A,B,C,D}。四者的闭包均包含了所有的属性,因此此关系模式的候选码为A、B、C、D。
2):函数依赖为空集,根据(1)可知,此关系模式的候选码为A、B、C、D。
3):属性D在函数依赖集中从未出现,因此候选码中一定有它,而属性C只在右侧出现,因此候选码中一定没有它,结合上述方法(4)闭包的判断,候选码为(A,D),(B,D)。
4):同上,C只在右侧出现,而B和D只在左侧出现,因此候选码中一定有D无C,最后判断A,可知候选码为(B,D)
5):同理,候选码为(A,B,D)和(B,C,D)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值