有人可以向我解释如何确定以下实例满足哪些依赖项?
A B C
1 0 1
1 1 1
我知道它满足B-> A,B-> C,A-> C,C-> A(以及其他隐含的依赖性) 但我无法掌握如何从这张图表中查看的概念。任何人都可以解释我应该如何阅读它并继续确定它只用0和1来满足什么?
添加另一个示例以帮助更好地理解:
A B C
1 0 1
1 1 1
2 2 1
由于只有一行B = 0且B = 2,你能否以B - >为基础。只有一行,只有一个唯一值。就像因为只有一个地方B = 0而A = 1这意味着它会自动保持,因为没有其他B值与0?
答案 0 :(得分:1)
回答这样的问题的一种方法是查看列的所有可能的正确子集,让它们称为X 1 ,X 2 ,...,首先从单列开始(所以在这种情况下我们从X 1 = A开始,X 2 = B,X 3 = C,并尝试查看X i 中的相同值,其他列具有相同的值。
例如,从A开始,我们发现对于A = 1,B有两个不同的值:这意味着B 不能依赖于A,(它的值不同于A的值,它是函数依赖的定义),而C 具有相同的值(1),因此我们知道这个关系实例满足A→C。
观察B,我们发现所有的值都不同,所以我们可以说所有其他列都依赖于它,我们添加B→A,B→C。最后,在分析C时,我们发现当C的值相等时,只有A的值相等,因此C→A。
我们可以在这里停下来,不考虑AB,AC和BC属性对,因为在这个简单的情况下,每个属性都是某个依赖关系的决定因素,所以依赖关系已经隐含了属性集作为决定因素的依赖关系。找到。
总结
在某种情况下,要知道依赖关系X - >是或否,我们检查: 如果X的所有值都不同,则依赖保持;如果存在具有重复值的行,那么,如果对于具有相同X值的每一行,Y的值始终相同,则依赖性保持不变,否则为否。
这是另一个例子:
A B C
1 2 2
0 3 3
1 2 4
2 2 4
在这种情况下A→B?是的,因为两行(第一行和第四行)具有相同的A(1)值,并且在两行中B的值等于(2)。是A→C?不,因为C在第一行和第四行中有两个不同的值。 B→A?不,因为B有三行具有相同的值(2),并且A在相同的行(1和2)中具有不同的值。