设关系模式R(U,F),其中R上的属性集U={A, B, C,D, E},R上的函数依赖集F={A→B,DE→B,CB→E,E→A, B→D}。 (??)为关系R的候选关键字。分解(??)是无损连接,并保持函数依赖的
A.p = { R1(AC), R2 (ED), R3 (B)} :
B. p={R1 (AC), R2 (E), R3 (DB) }
C. p={R1(AC), R2 (ED), R3 (AB)}
D.p= {R1 (ABC), R2 (ED), R3 (ACE) }
对于候选关键字,这个比较简单,结果为CE
当分解ρ大于两组的时候,需要列出初始判断表,根据已知条件在初始判断表里修改,最终表里如果有一行全部为a的即为无损连接。
正确答案为D,以D为例子进行分析:
A→B:
分解的关系模式 | A | B | C | D | E |
---|---|---|---|---|---|
R1(ABC) | a1 | a2 | a3 | b14 | b15 |
R2(ED) | b21 | b22 | b23 | a4 | a5 |
R3(ACE) | a1 | a2 | a3 | b34 | a5 |
DE→B没变化,CB→E:
分解的关系模式 | A | B | C | D | E |
---|---|---|---|---|---|
R1(ABC) | a1 | a2 | a3 | b14 | a5 |
R2(ED) | b21 | b22 | b23 | a4 | a5 |
R3(ACE) | a1 | a2 | a3 | b34 | a5 |
E→A:
分解的关系模式 | A | B | C | D | E |
---|---|---|---|---|---|
R1(ABC) | a1 | a2 | a3 | b14 | a5 |
R2(ED) | a1 | b22 | b23 | a4 | a5 |
R3(ACE) | a1 | a2 | a3 | b34 | a5 |
B→D:属性B的第一行和第3行相同,而D属性没有一行为a4,则将其改为统一符号,取最小为吧b14。
分解的关系模式 | A | B | C | D | E |
---|---|---|---|---|---|
R1(ABC) | a1 | a2 | a3 | b14 | a5 |
R2(ED) | a1 | b22 | b23 | a4 | a5 |
R3(ACE) | a1 | a2 | a3 | b14 | a5 |
再次检查函数依赖集F,由E→A,A→B, B→D,推出 E→D
所以最后的值为如下:
分解的关系模式 | 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 |
对于候选关键字可看这题:
给出关系R(U,F), ∪= {A,B,C,D,E), F={A-→B,D→C,BC→E,AC-→B), 求R的候选关键字为??