给定关系模式R<U,F>,其中:属性集U={A,B,C,D,E,G},函数依赖集F={A→BC,C→D,AE→G}。因为()= U, 且满足最小性,所以其为R的候选码;若将R分解为如下两个关系模式( 和 ), 则分解后的关系模式保持函数依赖。
候选码是关系模式中可唯一确定全部属性的最小属性集合,判定核心是属性闭包计算:先识别只出现在函数依赖左部的必选属性(这类属性一定在候选码内)、只出现在右部的非候选码属性,从必选属性的组合开始,借助函数依赖逐步推导属性闭包,当闭包覆盖所有属性且去掉组合中任意属性后无法覆盖全属性时,该组合即为候选码,一个模式可能存在多个候选码。
依赖保持是关系模式分解的关键准则,要求分解后各子模式的投影函数依赖集合的并集,能够蕴涵原函数依赖集的所有依赖,实现要点是将关联紧密的函数依赖(如共享属性、可形成推导链的依赖)整合到同一子模式,避免单个函数依赖的左右属性跨模式拆分导致依赖无法恢复。此外,关系模式分解还常要求无损连接(分解后可通过自然连接恢复原关系),部分分解可同时满足这两个准则,比如两个子模式的交集属性为其中一个子模式的超码时,通常具备无损连接性。
本题考察的是属性闭包、候选码判定与依赖保持分解的知识点。
问题 1:
先分别计算闭包。
(AE)⁺:初始{A,E};由A→BC得{A,E,B,C};由C→D得{A,E,B,C,D};由AE→G得{A,E,B,C,D,G},即得到U,且去掉A或E都不能推出U,最小且能覆盖U,因此AE为候选码。
(AB)⁺:A→BC得{A,B,C},再由C→D得{A,B,C,D},缺E、G,≠U。
(AD)⁺:A→BC得{A,B,C,D},仍缺E、G,≠U。
(CD)⁺:仅由C→D保持不变,缺A、B、E、G,≠U。
所以小题1选C。
