给定关系模式R(U,F),U={A,B,C,D},F={AB→C,CD→B}。关系R (问题1) ,且分别有 (问题2) 。
候选键是关系模式中可唯一标识元组的最小属性集,常用属性闭包法求解:计算属性集X的闭包X⁺,即通过给定函数依赖能推导出的所有属性,若X⁺包含关系的全部属性,且去掉X中任一属性后的属性集闭包无法覆盖全部属性,则X为候选键。实际操作中可先定位仅在函数依赖左部出现的L类属性、未在任何函数依赖中出现的N类属性,这类属性必然属于候选键,再结合其他属性组合验证最小性。主属性是出现在任意候选键中的属性,非主属性是未出现在任何候选键中的属性,若关系的所有属性均为主属性,该模式通常满足更高范式要求,不会存在非主属性对候选键的部分或传递函数依赖问题。
本题考察的是候选键求解与主属性/非主属性判定。
求候选键常用方法是求属性闭包:对一个属性集X,计算X⁺(在F下可推出的所有属性)。当X⁺包含U的全部属性且X为最小的,则X为候选键。
问题1:
A选项只有1个候选关键字ACB:检验ACB⁺。由AB→C可得C,但无法由现有依赖推出D,因此ACB不是键,此项错误。
B选项只有1个候选关键字BCD:检验BCD⁺。由CD→B只得到B,仍得不到A,BCD不是键,此项错误。
C选项有2个候选关键字ACD和ABD:检验ACD⁺与ABD⁺。ACD含有CD,先由CD→B得B,进而有AB→C(已含C),最终ACD⁺=ABCD;去任一属性(AD、AC、CD)都不能推出全属性,故ACD为候选键。同理ABD含AB,先由AB→C得C,再由CD→B(已含B、D),ABD⁺=ABCD,且最小,故ABD为候选键。此项正确。
D选项有2个候选关键字ACB和BCD:如前所述ACB与BCD都不是键,此项错误。
所以选择选项 C。
问题2:
主属性定义为出现在任一候选键中的属性。
本题候选键为ACD与ABD,其并集为A、B、C、D,四个属性全部为主属性,因此非主属性为0个,主属性为4个。
所以选择选项 A。
