求候选关键字

首先对于给定的R(U)和函数依赖集F,可以将它的属性划分为4类:L类,仅出现在F的函数依赖左部的属性。R类,仅出现在F的函数依赖右部的属性。N类,在F的函数依赖左部和右部均未出现的属性。LR类,在F的函数依赖左部和右部两部均出现的属性。根据以下定理和推论来求解候选码。定理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的唯一候选码。例:如设有关系模式R(U),其函数依赖集为F,其中:U={A,B,C,D,E}, F={A→C,C→A,B→AC,D→AC}求R的候选码。解:根据函数依赖可得:属性B、D为L类,E为N类,因此属性B、D、E必为候选码的成员,且此三个属性的闭包:B+=ABC,(BD)+=ABCD,(BDE)+=ABCDE,根据推论2可得BDE是R的唯一候选码。所以R的候选码为BDE。如果把例题中关系模式R(U)中的属性E去掉,那么再求R的候选码的话可以根据推论1得出BD为R的唯一候选码。快速求解方法适用于判断有属性是属于L类、N类或其中一种的情况下求解。如果有L类和N类的属性,则求解候选码速度非常快。简而言之:L、R、N、LR类。根据定理,L、N类必为侯选码之一,如果L+包含全部R,则L为唯一侯选。R类不在任何侯选码中。L+N类且(L+N)+包含所有R,则L+N为唯一侯选。(适于有L、N类至少一种的情况。)。

猜你喜欢

转载自blog.csdn.net/weixin_37536336/article/details/96476892