我是一名计算机科学专业的学生,正在学习数据库模块,现在教授规范化和功能依赖。然后我遇到了这个问题,我无法弄明白。如果您有任何想法,请提供帮助。
问:R(A,B,C,D)与函数依赖集F有关系。
F = {{A}→{B},{B}→{C},{C}→{A},{C}→{A,B},{C,A,D}→{A ,D},{C}→{B}}
找到F的最小封面。
正确答案:{{A}→{B},{A}→{C},{C}→{A},{B}→{A}}
我的程序:
第1步:{C}→{A,B}可以成为{C}→{A}和{C}→{B}因此{C}→{A,B}被删除
第二步:{C,A,D}→{A,D}可以成为{C,A,D}→{A}和{C,A,D}→{D},但因为{C} →{A},{C,A,D}→{A}被删除,{C,A,D}→{D}变为{C,D}→{D}
两个步骤使我的回答变为{{A}→{B},{B}→{C},{C}→{A},{C}→{B},{C,D}→{D但是,我无法达到正确的答案,任何人都知道如何继续?感谢
答案 0 :(得分:0)
我认为正确的答案是,嗯,不正确。
纠正答案:{{A}→{B},{A}→{C}, {C}→{A},{B}→{A}}
由于{B}→{A}
和{A}→{C}
,您不能用{B}→{C}
替换这两个FD吗?
你也可以从{C, D}→{D}
消除属性C,对吗?
答案 1 :(得分:0)
首先,CAD-> AD是微不足道的,因为如果你知道CAD的价值是什么,显然你知道什么是AD的值。
目前为止:F = {{A}→{B},{B}→{C},{C}→{A},{C}→{A,B},{C}→{B }}
其次,如你所提到的,{C}→{A,B}是多余的。
所以现在:F = {{A}→{B},{B}→{C},{C}→{A},{C}→{B}}
第三,你可以看到B存在于F- {C-> B}的C +中,因此C-> B是冗余的。
所以这是F的许多最小封面之一:G = {{A}→{B},{B}→{C},{C}→{A}}
你的proffesor建议的Minimal Cover也是有效的,因为集合中没有redundent依赖。