Database 关于3NF的一个条件

Database 关于3NF的一个条件,database,database-normalization,3nf,Database,Database Normalization,3nf,R={A,B,C,D} 函数依赖项F={A->B,B->C,C->D} 在加工成3NF后: 我们得到{A,B},{B,C},{C,D} 假设X->A表示每个函数依赖项 X表示左手侧,A表示右手侧 我的主要问题是3NF的第二个条件--X是一个超级键 那么X是什么的超级键 在3NF中的R={A,B,C,D}或每个关系的{A,B},{B,C}和{C,D} 例如,B是超级键,也是{B,C}的候选键,但不是R={a,B,C,D}的超级键或候选键 我完全糊涂了 如果对于该关系中的每个X->A,以下条件之一成

R={A,B,C,D} 函数依赖项F={A->B,B->C,C->D}

在加工成3NF后: 我们得到{A,B},{B,C},{C,D}

假设
X->A
表示每个函数依赖项

X
表示左手侧,
A
表示右手侧

我的主要问题是3NF的第二个条件--
X是一个超级键

那么
X
是什么的超级键

在3NF中的
R={A,B,C,D}
或每个关系的
{A,B},{B,C}和{C,D}

例如,
B
是超级键,也是
{B,C}
的候选键,但不是
R={a,B,C,D}
的超级键或候选键


我完全糊涂了

如果对于该关系中的每个
X->A
,以下条件之一成立,则该关系为3NF:

  • X
    包含
    A
    (也就是说,
    X->A
    是微不足道的函数依赖项),或者
  • X
    是超级键,或
  • A-X
    的每个元素,即
    A
    X
    之间的设置差异,都是一个基本属性
R={A,B,C,D}
的情况下,我们有一个FD
B->C
,这样:

  • B
    不包含
    C
    ,并且
  • B
    不是
    R
    的超级键,并且
  • C
    不是
    R
    的主要属性
因此
R
不在3NF中

但是,如果我们查看
R1={B,C}
中的
B->C
,那么:

  • B
    不包含
    C
    ,并且
  • B
    R1
    的超键,并且
  • C
    不是
    R1
    的主要属性

因此,
R1
在3NF中。

当我们说“将R规范化为xNF”时,我们的意思是“用xNF中的一些投影/组件替换R”。R消失了;它等于组件的连接。每个组件都必须使用自己的FD、超键、CKs等满足xNF的条件。

所以在我的示例中
R={A,B,C,D}
F={A->B,B->C,C->D}
,它不在3NF中,对吗?因为
B->C
与3NF和
C->D
的任何条件都不匹配。如果我想在3NF中匹配,则F中的每个FD必须至少满足其中一个条件。我说的对吗?好的!我完全明白了!我真的很感谢你的帮助!