Prime属性和部分依赖关系澄清

问题描述 投票:0回答:1

当我遇到这个我认为错误的例子时,我正在阅读我的演讲幻灯片。我的讲师无法澄清。如果我能得到一些澄清,我将不胜感激。

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

该例子表明,上述的最高正常形式是1NF,因为A-> B形成部分依赖。

我的解决方案

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不是主要属性,因此部分依赖性站立

functional-dependencies
1个回答
1
投票

假设给定的函数依赖关系是关系模式的所有函数依赖关系的掩盖,所呈现的模式在3NF中,如您所发现的。事实上,唯一的候选键是(A, C)(B, C),所以每个属性都是素数,并且根据定义,关系是3NF。 (注意,prime属性取决于候选键,而不是主键)。

一般来说,X → Y中的依赖关系F+(关系的依赖关系集的闭包)被称为partial,如果Y也依赖于X的适当子集。 (更确切地说,Y被部分地依赖于X。)如果每个非素数属性完全依赖于每个候选键,则关系是第二范式。在这种情况下,你是正确的说A → B是一个非部分依赖(但不是因为B是一个主要属性。例如,B不完全依赖于候选键A C(因为存在部分A C → B中的依赖性F+。然而,事实上,B是一个主要属性意味着模式是2NF。

换句话说,考虑到先前对部分依赖的定义,关于这部分问题:

我是否正确地这样说:

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.

我们可以说:

  1. A→B是非部分依赖性,不是因为B是素数,而是因为没有适当的{A}子集可以确定B
  2. B→A不重要,不是因为LHS不是候选键,而是因为{A}不是{B}的子集。

作为最后的注释,这种关系不是Boyce-Codd Normal Form。尊重正常形式的分解是R1(A, B)R2(A C)

© www.soinside.com 2019 - 2024. All rights reserved.