数据库 | 您所在的位置:网站首页 › 不出现候选圈 › 数据库 |
设关系模式R,F是R的函数依赖集,求候选码:
求解步骤:
第一步:列出L、R、N、LR属性包含的元素 (在此之前可以先去求L属性的闭包,如果其包含R中所有元素,那么L属性对应的元素就是唯一候选码)第二步:设X、Y——X代表L与N类属性,Y代表LR类属性 第三步:求X的闭包 第四步: (1)如果X的闭包包含R的全部属性元素,X即为R的唯一候选码,结束。 (2)[若X+不全包含R的元素] 第五步:从Y中依次取出一个元素,设该元素为A,求(XA)+, 若取出元素和X组合求得的闭包包含关系模式中的所有属性,直到试完Y中全部的元素。 [若Y中的元素取出与X组合均包含R全部属性,此时所有候选码被找出。] [若Y中还有元素与X组合求得的闭包不包含全部元素,则从这些元素中依次取出两 个开始继续与X组合] 涉及知识点——属性分类L类属性:关系模式中的属性,只出现在函数依赖集左边的属性 R类属性:关系模式中的属性,只出现在函数依赖集右边的属性 N类属性:关系模式中的属性,没有出现在函数依赖集里的属性 LR类属性:关系模式中的属性,出现在函数依赖集左、右两边的属性 例题1:设有关系模式R(A, B, C), 其中:F={B→C ,AC →B } 求出R的所有候选键。 第一步——列属性: L={A} R={Ø} N={Ø} LR={BC} L+=A+={A},不是唯一候选码 第二步——设XY: X=(L∪N)=A Y=LR=BC 第三步——求X+: X+=A+={A} 第四步——从Y依次取出元素与X组合求闭包: 从Y中取出B与X组合,(AB)+={ABC},包含R中全部属性,AB为R的候选键 从Y中取出C与X组合,(AC)+={ACB},包含R中全部属性,AC为R是候选键 因为Y中B、C均和A组合为候选键,所以无需再进行下一步取两个元素BC与A组合 所以,R的候选键有AB、AC 例题2:设有关系模式R(A,B,C,D,E),其中:F={B→CD,DE→A,C→E,A→B} 求出R的所有候选键。 第一步——列属性: L={Ø} R={Ø} N={Ø} LR={ABCDE} 第二步——设XY: X=(L∪N)=Ø Y=LR=ABCDE 第三步——求X+: X+={Ø} 第四步——从Y依次取出元素与X组合求闭包: 从Y中取出A与X组合,XA+=(A)+={ABCDE},包含R中全部属性,A为R的候选键 从Y中取出B与X组合,XB+=(B)+={BCDEA},包含R中全部属性,B为R的候选键 从Y中取出C与X组合,XC+=(C)+={CE},没有包含R中全部属性,C不是R的候选键 从Y中取出D与X组合,XD+=(D)+={D},没有包含R中全部属性,D不是R的候选键 从Y中取出E与X组合,XE+=(E)+={E},没有包含R中全部属性,E不是R的候选键 这里单个元素的组合均求完闭包,只有A、B与X组合求得的闭包包含R的全部属性,所以还需要从剩下的CDE中依次取出两个和X组合求闭包: XCD+=(CD)+={CDEAB},包含R中全部属性,CD为R的候选键 XCE+=(CE)+={CE},没有包含R中全部属性,CE不是R的候选键 XDE+=(DE)+={DEABC},包含R中全部属性,DE为R的候选键 所以,R的候选键有A、B、CD和DE |
CopyRight 2018-2019 实验室设备网 版权所有 |