求候选键/候选码

求候选键/候选码要先会求闭包,如果不会可以参考我的这篇文章

下面给出一个方法,我称它为“LRN法”。

对于给定的关系R(A1,A2,…, An)和函数依赖集F,可将其属性分为四类:

L类:仅出现在F的函数依赖左部的属性;

R类:仅出现在F的函数依赖右部的属性;

N类:在F的函数依赖左右两边均未出现的属性;

LR类:在F的函数依赖左右两边均出现的属性。

这里还有几个定理,非常有用(我一般用定理1/2/3和推论1)。

定理1:对于给定的关系模式R及其函数依赖集F,若X(X属于R)是L类属性,则X必为R的任一候选关键字的成员

推论1:对于给定的关系模式R及其函数依赖集F,若X(X属于R)是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选关键字

定理2:对于给定的关系模式R及其函数依赖集F,若X(X属于R)是R类属性,则X不在任何候选关键字中。

定理3:对于给定的关系模式R及其函数依赖集F,若X(X属于R)是N类属性,则X必为R的任一候选关键字的成员

推论2:对于给定的关系模式R及其函数依赖集F,若X(X属于R)是N类和L类组成的属性集,且X+包含了R的全部属性,则X必为R的唯一候选关键字

例:关系模式R(U,F),其中U={A,B,C},F={AB→C,C→A},试求此关系的候选键。

解:

第一步:用“LRN法”求出L、R、N、LR各有哪些元素。一般都是先写N、LR,再写L、R。防止冲突。

L:B

R:none

N:none

LR:A,C

第二步:

先求B的闭包(B)+ 。发现就是{B}。所以B不符合,于是要和LR里的元素组合。

再求(AB)+=ABC=U,所以AB是候选键。

再求(BC)+=ABC=U,所有BC也是候选键。

于是:候选键为AB,BC。

这里总结一下解题套路

第一步:用“LRN法”求出L、R、N、LR各有哪些元素。

第二步:根据三个定理、两个推论,一般都是先求L中元素的闭包。如果是U,则符合推论1,候选码唯一。如果不是U,这时就要并上LR中的元素,继续求闭包,一般都是两两组合。然后如果其中有一组闭包是U,其他一组不是U,那就不用再三个组合了,因为这样会产生冗余,除非三个一组里面不包含前面求到的闭包是U的两个元素。

版权声明:本文为博主原创文章,未经博主允许不得转载。

全部评论

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务