主要属性和部分依赖关系的说明

时间:2019-04-09 06:22:20

标签: functional-dependencies

当我遇到这个示例时,我正在浏览幻灯片,我认为这是错误的。我的讲师无法澄清。如果能得到澄清,我将不胜感激。

R = (A, B, C)
Functional Dependencies = (A -> B, B -> A)

该示例指出,由于A-> B形成了部分依赖关系,因此上述形式的最高范式为1NF。

我的解决方案:

AC -> BC (via augmentation axiom)
BC -> AC (via augmentation axiom)

(A,C) and (B,C) are minimal keys and (A, B, C) are prime attributes.

我是说正确的吗?

If (A,C) is the primary key, A -> B is NOT partial FD as RHS is a prime 
attribute. B -> A is a non trivial FD as LHS is not a candidate key.

我的讲师的解释是,如果选择(A,C)作为主键,则不必将(B,C)当作键,如果这样B不是主要属性,则表示部分依赖< / p>

1 个答案:

答案 0 :(得分:1)

假设给定的功能依赖性覆盖了关系模式的所有功能依赖性,那么所提供的模式就以3NF表示。实际上,唯一的候选键是(A, C)(B, C),因此每个属性都是质数,根据定义,该关系为3NF。 (请注意,主属性取决于候选键,而不取决于主键)。

通常,如果X → Y也依赖于{{1}的适当子集,则F+中的依赖项Y(关系的依赖项集合的关闭)被称为局部的。 }。 (更确切地说,X被称为Y的部分依赖。)并且,如果每个非素数属性都完全依赖于每个候选键,则该关系为第二范式。在这种情况下,您正确地说X是非部分依赖关系(但不是因为A → B是质数属性。例如,B是 not 完全依赖于候选键B(由于A C中存在部分依赖A C → B),然而,F+是主要属性这一事实意味着该模式位于2NF中。

换句话说,鉴于先前对部分依赖的定义,与问题的这一部分有关:

  

我是说正确的吗?

     

B

我们可以这样说:

  1. A→B是非部分依赖项,不是因为B是质数,而是因为If (A,C) is the primary key, A → B is NOT partial FD as RHS is a prime attribute. B → A is a non trivial FD as LHS is not a candidate key.的适当子集无法确定{A}

  2. B→A很简单,不是因为LHS不是候选密钥,而是因为B不是{A}的子集。

最后一点,该关系不是Boyce-Codd范式。遵循该正规形式的分解是{B}R1(A, B)