给出关系R(U,F),U={A,B,C,D,E}, F={A→B,D→C,BC→E,AC→B},求属性闭包的等式成立的是() 。R的候选关键字为(AD)。
属性闭包是关系数据库中从某一属性集出发,依据给定函数依赖可推导出的所有属性的集合,计算时先将结果集初始化为目标属性集,再反复应用所有函数依赖,把能推导的新属性加入结果集,直到没有属性可添加为止,它是判断超键、候选码的关键依据,若某属性或属性组的闭包等于全属性集U,则其为超键。候选码是能唯一标识关系中元组且无冗余的属性或属性组,计算可采用有向图作图法,即根据函数依赖绘制有向图,寻找入度为0的属性或属性组合,验证其能否遍历图中所有节点,这类属性或组合通常是候选码的核心;也可通过属性闭包验证,从超键中剔除冗余属性得到候选码,候选码可能是单个属性,也可能是多个属性的组合。
此题考察关系数据库的基本理论。
问题 1:考察属性闭包的计算方法。
关系数据库中的 [X]+F=Y 闭包求法包括以下三个步骤:(1)将最终结果属性集设为Y,并将Y初始化为空。(2)检查F中的每一个函数依赖 A→B,如果属性集 A 中所有属性均在 Y 中,而B中有的属性不在 Y 中,则将其加入到 Y 中。(3)重复第二步,直到没有属性可以添加到属性集 Y 中为止,得到的 Y 就是 X 的闭包。
A选项(A)+ F根据 A→B 可得(A)+ F = {A,B} ,B选项(B)+ F 因为不存在B为左侧决定因素的函数依赖,所以(B)+ F = {B} ,C 选项(AC)+ F 根据 A→B,BC→E,AC→B 可得(AC)+ F ={A,B,C,E} ,D 选项(AD)+ F 根据 A→B,D→C, BC→E 可得(AD)+ F ={A,B,C,D,E} = U。所以选 D 选项。
问题 2:考察候选码的计算方法。
如果有属性或属性组能唯一标识元组,则它就是候选码。候选码的计算分方法有分析法和作图法。个人建议用作图法。作图法就是根据题目给出的函数依赖画出有向图。然后从起点出发找,看是否能遍历所有节点。一个不行再试另一个起点。最后的结果就是候选码。如下图所示。从图很直观地可以看出,入度为零的结点是 A 与 D,从这两个结点的组合出发,能遍历全图,所以候选码是 AD。

可以看到属性闭包也可以通过先做出有向图,然后从某个点出发遍历得到。比如 A 在 F 上的闭包从图中看出就是 (A,D)。
