数据库候选码

求候选码的简单方法方法:
  
(1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中;  
  
(2)如果有属性只在函数依赖集的右边出现,则该属性一定不包含在候中。  

 (3)如果有属性只在函数依赖集的左边出现,则该属性一定包含在候选码中。  

(4)如果有属性或属性组能唯一标识元组,则它就是候选码;  

图片替换文本例 1:R<U,F>,U=(A,B,C,D,E,G),F={AB-->C,CD-->E,E-->A.A-->G},求候选码。
       因 G 只在右边出现,所以 G 一定不属于候选码;  
           而 B,D 只在左边出现,所以 B,D 一定属于候选 码;  
           BD 的闭包还是 BD,则对 BD 进行组合,  
           除了 G 以外,BD 可以跟 A,C,E 进行组合  
  
           先看 ABD   
           ABD 本身自包 ABD,而 AB-->C,CD-->E,A-->G,所以 ABD 的闭包为 ABDCEG=U   
           再看 BDC CD-->E,E-->A,A-->G,BDC 本身自包,所以 BDC 的闭包为 BDCEAG=U   
           最后看 BDE E-->A,A-->G,AB-->C,BDE 本身自包,所以 BDE 的闭包为 BDEAGC=U
           因为(ABD)、 (BCD)、 (BDE)的闭包都是 ABCDEG 所以本问题的候选码有 3 个分别是 ABC、BCD 和 BDE
  

图片替换文本例 2:R<U,F>,U=(A,B,C),F={AB-->C,C-->B},求候选码。
       因为A只出现在左边,所以A一定是候选键。  
           A的闭包还是A,则对A进行组合,可以和B,C 进行组合。  

           首先看AB,AB本身自包AB,而AB-->C,所以AB的闭包是ABC=U。
           再看AC,AC本身自包AC,而C-->B,所以AC的闭包是ABC=U。
           因为AB,AC的闭包都是ABC,也就是U,所以候选键是AB,AC。
  

图片替换文本【例 1】关系模型 R<U,F>,U={A,B,C,D},F={B→D,AB→C},求 R 候选码。
在求解之前先要明白一些定理。我们把函数依赖集中 F 中的属性分为四类:
       L 类:A,B
           R 类:C,D
           LR 类:
           N 类:
           AB闭包:AB+=ABCD

   
图片替换文本【例 2】关系模型 R<U,F>,U={A,B,C,D},F={BCD→A,A→C},求 R 候选码。  
       L 类:B,D
           R 类:
           LR 类:A,C
           N 类:  
           BD闭包:BD+=BD
           ABD闭包:ABD+=ABCD是R的一个候选码
           BCD闭包:BCD+=ABCD也是R的一个候选码

       第一步:同样对U中属性进行分类,得出A是LR类,B是L类C是LR类,D是L类。
           第二步:由定理可知,BD必在候选码中,A,C可能在候选码中。假定目前候选码K=BD。
           第三步:求K=BD的闭包。根据闭包算法得,BD+=BD,并不等于U。这时,我们从LR类中取一个属性,和BD组成临时候选码K。
           第四步:先从LR类中取A,得到 K=ABD。再求 K=ABD 的闭包,得到 ABD+=ABCD,正好等于U,说明K=ABD是R的一个候选码。  
           再从LR类中取C,得到K=BCD。再求 K=BCD 的闭包,得到BCD+=ABCD,也等于U,说明K=BCD也是R的一个候选码。所以R的候选码 K={ABD,BCD}。  

           最后,如果第四步中在 LR 类中取一个属性的组合都不满足 K 的闭包等于数据集 U,则从 LR 类中取 2 个,3 个,……n 个,   
           分别组合,直到选出一个数据集 K 的闭包等于属性集 U,K 就是 R 的一个属性集。

L 类:所有依赖关系中仅出现在函数依赖左部的属性。  
R 类:所有依赖关系中仅出现在函数依赖右部的属性。  

LR 类:所有依赖关系中即出现在函数依赖左部又出现在函数依赖右部的属性。  
N 类:所有依赖关系中没有出现的属性。
  

图片替换文本根据以下定理和推论来求解候选码。  
  
定理 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是R的N类属性,则X必包含在R的任一候选码中。  
    
推论 2:对于给定的关系模式R及其函数依赖集F,如果X是R的N类和L类组成的属性集,且X+包含了R的有属性,则X是R的唯一候选码

猜你喜欢

转载自www.cnblogs.com/nn-y/p/13173308.html