理解对的功能依赖性

时间:2016-09-22 09:16:37

标签: database functional-dependencies

我正在努力解决这些问题应该如何发挥作用。

所以我有一个价值表:

╔════╦════╦════╦════╗
║ A  ║ B  ║ C  ║ D  ║
╠════╬════╬════╬════╣
║ A1 ║ B1 ║ C1 ║ D3 ║
║ A1 ║ B2 ║ C3 ║ D2 ║
║ A2 ║ B2 ║ C3 ║ D4 ║
║ A3 ║ B3 ║ C5 ║ D4 ║
╚════╩════╩════╩════╝

现在,我想我已经对单个值进行了排序。

B在功能上不依赖于A (A->B),因为A1对应B1B2,依此类推。

但现在我被问到{A, B} -> C是否我不确定是否理解。

现在我认为,由于{A1, B2}和{A2,B2}都给C3,因此C不能在功能上依赖于{A,B}。

我甚至不知道如何阅读它。它是否像布尔一样?如果A -> CB -> C表示{A, B} -> C

如果右边的值(例如C3)对应于两个唯一对(A1,B1和A2,B2),那是否意味着它在功能上是否依赖?

1 个答案:

答案 0 :(得分:0)

函数依赖{A,B}→C表示:如果表中有两个元组具有相同的A和B值组合那么 C的值必须相同(并不一定反之亦然。

请注意,通常情况下,函数依赖关系不是针对单个数据集,而是属性应该在关系的每个实例上都为true:它是一个完整性约束,表示何时关系模式的实例是否有效。

这里有一个实例,如果在实例中,依赖关系{A,B}→C是否成立,则必须回答的问题。但唯一合理的答案是“在给定数据的情况下无法回答这个问题,因为没有两个元组具有相同的A和B值组合,因此在这种情况下我们无法看到C的值是相等还是不同” 。当然,您的答案将始终限于该特定实例,并且不具有一般的有效性,就像功能依赖性一样。

另一方面,您也在询问是否可以从其他人那里获得功能依赖性:根据某些规则(在这种情况下不适用),这是可能的。要查看这些规则的示例,您可以在Armstrong’s axiom on Wikipedia上的页面查找实例。