数据库系统概论课堂笔记-规范化理论3

常用的候选码的求解理论和算法

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

    L类  仅出现在函数依赖左部的属性。

    R 类  仅出现在函数依赖右部的属性。

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

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

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

               解释:若X是L类属性,说明没有人可以推导出X,只有自己能推导出自己,结合候选码是能推导出R的属性,那么X必是候选码的属性。

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

  例(2):设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B →D,AD →B,AC →D},求R的所有候选码。

         解:考察F发现,A,C两属性是L类属性,所以AC必是R的候选码成员,又因为(AC)+=ABCD,所以AC是R的唯一候选码。

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

               解释:若X是R类属性,则X不能推导出任何属性,那么X不可能是候选码的属性。

  定理3:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是N类属性,则X必包含在R的任一候选码中。

               解释:若X是N类属性,根据候选码的定义,X必须是候选码的一个属性,这样X才能自身推出自身,即推出R,否则没有属性能够推导出X。

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

具体的步骤:

算法描述
(1)将R 的所有属性分为L、R、LR 和N 四类,并令X 代表L、N 类,Y 代表LR 类。
(2)求X+。若X+包含了R 的全部属性,则即为R 的唯一候选码,转(5);否则,转(3)。

(3)在Y 中取一属性A,求(XA)+ ,若它包含了R 的全部属性,则是候选码,转(4);否则,调换一属性反复进行这一过程,直到试完所有Y 中的属性。
(4)如果已找出所有候选码,则转(5);否则在Y 中依次取2 个、3 个、…,求它们的属性闭包,若其闭包包含R 的全部属性,则是候选码。 

(5)结束。

二、依次递推法(没有属于L集或N集的属性的求解方法)

详情以及更多求候选码的方法请见:https://wenku.baidu.com/view/2438f21c650e52ea5518987f.html

三、注意

同一关系模式的不同候选码之间是不可能相包含的,这也提供了求候选码的一个思考思路。

 

你可能感兴趣的:(计算机基础知识)