从图表中确定功能依赖性
Determining functional dependencies from a chart
任何人都可以向我解释如何确定以下实例满足哪些依赖项吗?
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 -> A 仅基于具有一个唯一值的一行。就像因为只有一个地方 B = 0 和 A = 1 这是否意味着它自动成立因为 B 没有其他值为 0 ?
回答此类问题的一种方法是查看列的所有可能真子集,我们称它们为 X1、X2, ... ,首先从单列开始(所以在这种情况下我们从 X1=A, X2= B,X3=C,并尝试查看,对于 Xi 中的相同值,哪些其他列具有相同的值。
例如,从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 -> Y 是否成立,我们检查:
如果 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 在三行中具有相同的值 (2),而 A 在相同的行中具有不同的值(1 和 2)。
任何人都可以向我解释如何确定以下实例满足哪些依赖项吗?
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 -> A 仅基于具有一个唯一值的一行。就像因为只有一个地方 B = 0 和 A = 1 这是否意味着它自动成立因为 B 没有其他值为 0 ?
回答此类问题的一种方法是查看列的所有可能真子集,我们称它们为 X1、X2, ... ,首先从单列开始(所以在这种情况下我们从 X1=A, X2= B,X3=C,并尝试查看,对于 Xi 中的相同值,哪些其他列具有相同的值。
例如,从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 -> Y 是否成立,我们检查: 如果 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 在三行中具有相同的值 (2),而 A 在相同的行中具有不同的值(1 和 2)。