单选题 设关系模式R(U,F),其中R上的属性集U={A,B,C,D,E},R上的函数依赖集F={A→B,DE→B,CB→E,E→A,B→D}。______为关系R的候选关键字。分解______是无损连接,并保持函数依赖。
单选题
  • A.AB
  • B.DE
  • C.CE
  • D.DB
【正确答案】 C
【答案解析】
单选题
  • A.ρ={R1(AC),R2(ED),R3(B)}
  • B.ρ={R1(AC),R2(E),R3(DB)}
  • C.ρ={R1(AC),R2(ED),R3(AB)}
  • D.ρ={R1(ABC),R2(ED),R3(ACE)}
【正确答案】 D
【答案解析】[解析] “候选关键字”定义为:设K为R(U,F)中的属性的组合,若K→U,且对于K的任何一个真子集K',都有K'不能决定U,则K为R的候选码,若有多个候选码,则选一个作为主码。候选码通常也称为候选关键字。候选码选择算法如下(对于给定的关系模式R(U,F),其中U为属性集合,F为函数依赖集)。
①依照函数依赖集F将R中的所有属性分为L类、R类、LR类和N类属性,令X为L、N类属性的集合,Y为LR类属性集合。
②若[*],则X为R的唯一候选码,算法结束,否则,执行下一步骤。
③逐一取Y中的单一属性A,若[*],则XA为候选码,令Y=Y-{A},执行下一步骤。
④依次取Y中的任意2个、3个……属性与XZ组成属性组,若XZ不包含己求得的候选码,关于F的闭包[*],若[*],则XZ为候选码。直到取完Y中的所有属性为止,算法结束。
选项A:[*],所以AB不是关系R的候选关键字。
选项B:
[*]
FR1=A→B,CB→A
(FR1+FR2+FR3)+
所以DE不是关系R的候选关键字。
选项C:[*],所以CE是关系R的候选关键字。
选项D:[*],所以DB不是关系R的候选关键字。
无损连接分解判定定理:关系模式R(U,F)的一个分解,σ={R1(U1,F1),R2(U2,F2)}具有无损连接的充要条件是:(U1∩U2)→(U1-U2)∈F+或(U1∩U2)→(U2-U1)∈F+
对选项A构造初始的判定表,如表1所示。因为A→B,DE→B,CB→E,E→A,B→D的决定因素中没有两行是相同的,所以选项A的分解是有损连接。
{{B}}表1 初始的判定表1{{/B}}
分解的关系模式 A B C D E
R1(AC) a1 b12 a3 b14 b15
R2(ED) b21 b22 b23 a4 a5
R3(B) b31 a2 b33 b34 b35
  对选项B构造初始的判定表,如表2所示。
{{B}}表2 初始的判定表2{{/B}}
分解的关系模式 A B C D E
R1(AC) a1 b12 a3 b14 b15
R2(E) b21 b22 b23 b24 a5
R3(DB) b31 a2 b33 a4 b35
  因为A→B,DE→B,CB→E,E→A,B→D的决定因素中没有两行是相同的,所以选项B的分解是有损连接。
  对选项C构造初始的判定表,如表3所示。
{{B}}表3 初始的判定表3{{/B}}
分解的关系模式 A B C D E
R1(AC) a1 b12 a3 b14 b15
R2(ED) b21 b22 b23 a4 a5
R3(AB) a1 a2 b33 b34 b35
  由于A→B,属性A的第1行和第3行相同,可以将第1行b12改为a2;又由于B→D,属性B的第1行和第3行相同,而属性D的第1行b14和第3行b34没有一行为a4,因此改为同一符号,即取行号值最小的b14。修改后的判定表如表4所示。
{{B}}表4 修改后的判定表1{{/B}}
分解的关系模式 A B C D E
R1(AC) a1 a2 a3 b14 b15
R2(ED) b21 b22 b23 a4 a5
R3(AB) a1 a2 b33 b14 b35
  检查其他函数依赖DE→B,CB→E,E→A,无法修改表4,表中没有两行是相同的,因此选项C的分解是有损连接。
  对选项D构造初始的判定表,如表5所示。
{{B}}表5 初始的判定表4{{/B}}
分解的关系模式 A B C D E
R1(ABC) a1 a2 a3 b14 b15
R2(ED) b21 b22 b23 a4 a5
R3(ACE) a1 b32 a3 b34 a5
  由于A→B,属性A的第1行和第3行相同,可以将第3行的b32改为a2;E→A,属性E的第2行和第3行相同,可以将属性A的第2行b21改为a1;AC→E,属性E的第2行和第3行相同,可以将属性E的第1行b15改为a5;B→D,属性B的第1行和第3行相同,而属性D的第1行b14和第3行b34没有一行为a4,因此改为同一符号,即取行号值最小的b14。根据Armstong公理,系统传递依赖,E→A,A→B,B→D,所以E→D。此时,属性E的第1~3行相同,可以将属性D的第1行b14和第3行b34改为a4。修改后的判定表如表6所示。
{{B}}表6 修改后的判定表2{{/B}}
分解的关系模式 A B C D E
R1(ABC) a1 a2 a3 a4 a5
R2(ED) a1 b22 b23 a4 a5
R3(ACE) a1 a2 a3 a4 a5
由于表6的第1行和第3行全为a,因此选项D的分解是无损连接。
保持函数依赖的定义是:若满足(F1∪F2)+=F+,则分解保持函数依赖,其中Fi函数依赖集F在Ri上的投影。若分解保持函数依赖,那么分解的子模式的函数依赖集[*]。FR1=A→B,CB→A,FR2=E→D,FR3=E→A。可以求证F+与(FR1+FR2+FR3)+等价,即F+=(FR1+FR2+FR3)+=(A→B,CB→A,E→D,E→A)+,所以该分解保持函数依赖。