设关系模式Rm<U,F>,其中U={H,I,J,K,L},若F={H→IJ,J→K,IJK→L,L→H,L→K},则F 的最小函数依赖集Fmin={ (1) }。关系模式R 的候选关键字有 (2) 个,R 属于 (3) 。
1()
A.H→I,H→J,J→K,IJK→L,L→H
B.H→I,H→J,J→K,IJ→L,L→H
C.H→I,H→J,J→K,IJ→L,L→K
D.H→I,J→K IJ→L,L→H,L→K
参考答案:B
解析:
如果函数依赖集F 满足下列条件,则称F 为最小函数依赖集或最小覆盖:
·F中的任何一个函数依赖的右部仅含有一个属性:
·F中不存在这样一个函数依赖X→A,使得F与F→{X→A}等价;
·F中不存在这样一个函数依赖X→A,X有真子集Z使F-{X→A}∪(Z→A}与F等价。
试题(35)选项A中,由于J→K,故IJK→L中K是冗余属性,因此选项A.是错误的:选项C中的L→H被去掉了,导致无法从选项C中根据Armstrong 公理系统导出L→ H,因此选项D是错误的;选项D中的H→J被去掉了,导致无法从选项D中根据Armstrong公理系统导出H→J,因此选项D是错误的。
试题(36)候选键共有3个,分析如下:
算法:对于给定的关系模式R<U,P>,其中U为属性集合,F为函数依赖集。
1)依照函数依赖集F将R中的所有属性分为L类、R类、LR 类和N 类属性,令X 为L、 N 类属性的集合,Y 为LR 类属性集合;
2)若X=U,则X 为R 的唯一候选码,结束;否则,转3);
3)逐一取Y 中的单一属性A,若(XA)=U,则XA 为候选码,令Y=Y-{A},转(4):
4)依次取Y中的任意两个、三个……属性与XZ 组成属性组,若XZ 不包含已求得的候选码,关于F 的闭包(XZ),若(XZ)
=U,则XZ 为候选码。直到取完Y 中的所有属性为止,算法结束。
本题在函数依赖集F 中无L 类和N 类属性,所有属性都是LR 类属性,因此,X=Φ,Y={H,l J,K,L}。
1)我们分别取Y 中的单一属性求闭包。
(H)=U,H 是候选码。
(I)=I≠U,I 不是候选码。
(J)=JK≠U,J 不是候选码。
(K)=K≠U,K 不是候选码。
(L)=U,L 是候选码。
此时Y 去掉H和L,Y{I,J,K}。
2)取Y 中的两个属性求闭包。
(IJ)=U,IJ 是候选码。
(IK)≠U,IK 不是候选码。
(jK)≠U,JK 不是候选码。
本题的候选码为:H、L和IJ。故试题(36)的正确答案为C。
关系模式R 属于第1范式(1NF)。因为按照第2范式定义,若关系模式R∈1NF,且每一个非主属性完全依赖于码,则关系模式R∈2NF。而试题(37)中,非主属性K不是完全依赖于码。