功能依赖的属性

时间:2016-07-18 17:04:25

标签: database functional-dependencies

如果我的关系R与模式S = {A,B,C},并且我知道A-> B。这是否意味着A,C-> B是真的吗?我知道增强公理告诉我A,C-> B,C,但如果两个元组t1和t2在A和C上达成一致,则他们特别同意A,这意味着他们会同意B我的推理好吗?还有更多"正式"推断它的方式?

2 个答案:

答案 0 :(得分:2)

您可以通过两种不同的方式正式显示AC→B。

首先,通过应用阿姆斯特朗的公理,简单的方法:

1. A → B    (given)
2. AC → A   (by reflexivity)
3. AC → B   (by transitivity from 2 and 1)

其次,证明它。

如果A→B,那么,在R的每个实例r中,∀t 1 ,t 2 ∈r,t 1 [ A] = t 2 [A]⇒t 1 [B] = t 2 [B]

这意味着在每个具有相同A值的元组中,您具有相同的B值。换句话说,B的值仅取决于A的值。因此,显然对于每个实例r的R,∀t 1 ,t 2 ∈r,t 1 [AC] = t 2 [AC]⇒t 1 [B] = t 2 [B],假设元组在A上重合。

答案 1 :(得分:1)

  

这是否意味着A,C-> B是真的吗?

是的,这意味着A,C-> B。您通过增强显示A,C-> B,C。 A,C-> B随后分解。你的论点也是正确的。

如果您继续尝试将您允许的所有正式规则应用于您已经获得或生成的所有FD,直到没有规则生成另一个FD,那么您将生成以下每个FD来自给定的,没有其他的,即当给定的持有时持有。阿姆斯特朗的声音是“健全的”,因为他们只会产生一些FD,这些FD可以保留给其他人,而且他们“完整”,因为他们会生成所有这些。

在实践中,我们可以善于直观地找到FD所持有的派生词。