对于给定的关系R(A1,A2,……,An)和其上的函数依赖集F,可将其属性分为如下四类:
- L类:仅出现在F的函数依赖左侧的属性
- R类:仅出现在F的函数依赖右侧的属性
- N类:在F的函数依赖左右两侧均未出现的属性
- LR类:在F的函数依赖左右两侧均出现的属性
§1快速求解候选关键字的一个充分条件(无独立回路时)
【定理一】:对于给定的关系模式R(U,F),若X(X属于U)是L类属性,则X必为R的任一候选码的成员(组成部分)。【定理一】:对于给定的关系模式R(U,F),若X(X属于U)是L类属性,则X必为R的任一候选码的成员(组成部分)。
【例-1】设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B→D,AD→B,AC→D},求R的所有候选关键字。【解】:显然A、C为L属性,据定理一知,AC必须为R的候选码的成员。又∵(AC)+F=ABCD=U∴AC是R的唯一候选码。
【推论一】:已知R(U,F),若X(X属于U)是L属性,且X+F包含了R的全部属性U,则X必为R的唯一候选码。【定理二】:给定R(U,F),若X(X属于U)是R类属性,则X不在任何候选码中。
【定理三】:给定R(U,F),若X是R的N类属性,则X必包含在R的任一候选码中。
【例-2】已知R(U,F),其中 U={A,B,C,D,E,P} F={A→D,E→D,D→B,BC→D,DC→A} 求R的所有候选码。【解】:显见: L类属性:C,E——故CE必在R的候选码中 N类属性:P——故P也必在R的候选码中又∵(CEP)+F =ABCDEP=U ∴CEP是R的唯一候选码。
【推论二】:已知R(U,F),若X是R的N类和L类属性组成的属性集,且X+F包含了R的全部属性U,则X是R的唯一候选码。
参考: