当我遇到这个示例时,我正在浏览幻灯片,我认为这是错误的。我的讲师无法澄清。如果能得到澄清,我将不胜感激。
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>
答案 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
我们可以这样说:
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}
。
B→A很简单,不是因为LHS不是候选密钥,而是因为B
不是{A}
的子集。
最后一点,该关系不是Boyce-Codd范式。遵循该正规形式的分解是{B}
,R1(A, B)
。