给定关系模式R < U ,F >, U= {A,B,C,D ,E} , F = {B→A ,D→A ,A→E ,AC→B },则 R 的候选关键字为(CD),分解ρ = { R1(ABCE),R2(CD) } (不具有无损连接性,也不保持函数依赖)。
关系模式候选键判定可通过属性闭包法:先锁定潜在属性或属性组,计算其属性闭包,若闭包覆盖全部属性且无冗余属性,即为候选键;也可借助有向图法,寻找能遍历所有属性节点的最小属性集合,需留意多属性联合决定的依赖对遍历路径的影响。此外要明确,包含候选键的属性集是超键,含冗余属性的超键不属于候选键。
无损连接分解判定:二元分解的充要条件是两个子模式的交集属性集,能决定其中一个子模式的全部属性;针对多子模式分解,可采用无损分解表验证法,依据函数依赖逐步标记表中元素,若最终存在一行全为对应原始属性标记,则为无损分解,该分解能保证还原连接后不丢失原关系信息。
函数依赖保持性判定:需将原函数依赖集分别投影到每个分解后的子模式上,得到各子模式的函数依赖集,合并这些依赖集后,若能通过阿姆斯特朗公理(自反、增广、传递三大公理,及推导而来的合并、分解、伪传递等规则)推导出原所有函数依赖,则分解保持函数依赖,可维持原数据约束,避免数据不一致风险,反之则无法保持原有约束。
本题考察的是候选键判定、无损分解判定与函数依赖保持性。
求候选键可用属性闭包法;二元分解无损的充要条件是交属性集对某一分解分量具决定性;保持性判断看各函数依赖能否由分解后各关系上的投影依赖并集推出。
问题 1:先验证 CD 的闭包。以 CD 为起点,由 D→A 得到 A,由 AC→B 得到 B,由 B→A 仍为 A,由 A→E 得到 E,故 CD⁺={A,B,C,D,E}=U,CD 能唯一决定全体属性,且 C⁺、D⁺以及与 C 或 D 组合的其他二元闭包均不能覆盖 U,因此CD 为最小超键即候选键,A 选项正确。
B 选项 ABD的闭包为 ABD 起步,B→A,A→E,可得 {A,B,D,E},缺少 C,不能成为键。
C 选项 ACD的闭包覆盖全体属性,但其中含有冗余属性 A,因为CD 已经是键,故 ACD 不是最小,不是候选键。
D 选项 ADE的闭包最多由 A→E 得到 E,仍缺少 B、C,不是键。
也可以通过有向图方法来做,但是要注意细节。AC 共同决定 B,用红色标注。同时 D 决定 A,通过传递律我们知道 DC决定 B。D 决定 E。所以 CD 是候选码。

