如何判断候选码是什么?

候选码只有一个的情况判断

设有关系模式 R(B,C,M,T,A,G),根据语义有如下函数依赖集,F={B->C, (M,T)->B,   (M,C)->T,   (M,A)->T,    (A,B)->G }
则求关系的候选码?

 

**************************************************************************************************************

  确定候选码的规则:

(1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中;
(2)如果有属性不在函数依赖集中任何函数依赖的右边出现,那么它必须包含在候选码中;
(3)如果有属性只在函数依赖集的左边出现,则该属性一定包含在候选码中。
(4)如果有属性或属性组能唯一标识元组,则它就是候选码;

**************************************************************************************************************
根据第一条,发现所有的属性都在函数依赖集中出现了。所以不使用第一条规则
根据第二条,只有M,A没有在函数依赖的右边出现,则,A,M一定是候选码的一部分。
根据第三条,只有M,A只在函数依赖的左边出现,因此可以判定AM一定是候选码的一部分。
根据第四条,只有(M,A)这个属性组可以唯一确定属性集中的每一个属性,因此,(M,A)一定是该关系模式的候选码。
在根据第四条,没有发现还有别的属性或属性组能够确定属性集中的全部属性,因此可以确定,该关系模式只有一个候选码,该候选码就是(M,A),单独的A或M都不是候选码,候选码是M和A的组合。

列题:

关系模式R
其中: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)候选码为A,B,C,D
2)候选码为(A,B,C,D)
3)候选码为(A,D),(B,D)
4)候选码为(B,D)
5)候选码为(A,B,D),(B,C,D) 

解析:
1: A 可以单独推出 B C D ; B可以推出A C D;C可以推出A B D;D可以推出A B C,符合第四条规则
2:空集符合第一条规则,所以需要(A,B,C,D) 四个元素全部集合
3:(A,D)可以推出B C (A->B A->C) ;(B,D)可以推出A C(B->A B->A->C)符合第四条规则
后面类同的方法

你可能感兴趣的:(Database,principle)