问题 单项选择题

设关系模式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不是完全依赖于码。

单项选择题
单项选择题