给定关系模式R(A1,A2,A3,A4),R上的函数依赖集F={A1A3→A2,A2→A3},则R (问题1) 。若将R分解为p={(A1,A2),(A1,A3)},那么该分解 (问题2) 。
候选关键字判定时,需先确定关系中不被任何函数依赖决定的属性,这类属性是候选码的必选成分,再将其与其他属性组合计算属性闭包,能覆盖关系全部属性且任意真子集无法覆盖全属性的组合即为候选码,一个关系模式可能存在多个候选码。关系模式的二元分解判断是否为无损连接,可通过子关系公共属性集能否决定其中一个子关系的非公共属性来判定,满足则为无损连接分解,否则为有损;若为多关系分解,可采用无损连接表法,通过函数依赖标记表中元素,出现全标记行则为无损。函数依赖保持性需看原函数依赖集中的所有依赖,是否都能在分解后的子关系的依赖集中直接体现或推导得出,若存在原依赖无法通过子关系依赖推导且不落在单个子关系中,则该分解不保持函数依赖。
本题考察的是候选码判定、无损分解与函数依赖保持。
问题1:由F={A1A3→A2,A2→A3}可知,A1与A4不被任何依赖决定,因此想要成为候选码,必须包含A1与A4。
检验A1A4的闭包仅能得到A1、A4,无法推出A2或A3,不是码;检验A1A3A4:因A1A3→A2,得出A2,进而由A2→A3(已含),故能推出A1A2A3A4,为候选码;
检验A1A2A4:由A2→A3得A3,再由A1A3→A2(已含),同样能推出全属性,为候选码;其真子集均不足以推出全属性,故有且仅有A1A3A4、A1A2A4两组候选码。
A选项A1A3缺少A4,不能覆盖A4;
B选项A1A4不能推出A2、A3;
D选项列出的三个都不满足或不全。
故选C。
问题2:分解p={R1(A1,A2), R2(A1,A3)}。
无损判定依据是R1∩R2→R1-R2或R1∩R2→R2-R1成立。此处R1∩R2={A1},但由F并不能推出A1→A2(R1-R2)或A1→A3(R2-R1),故不是无损,为有损分解。
依赖保持性:原依赖A1A3→A2跨越R1与R2,投影到R1或R2均不可直接表示;A2→A3在R1缺少A3、在R2缺少A2,同样无法保留,故不保持函数依赖。
因此选择D。
