关于3NF的一个条件

时间:2017-04-10 14:52:26

标签: database 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 is a superkey

所以X是什么的超级钥匙?

R = {A, B, C, D}或每个关系的{p>,{3}在3NF?

例如,{A,B}, {B,C} and {C,D}是超级密钥,也是B的候选密钥,但不是{B,C}的超级密钥或候选密钥。

我完全糊涂了。

2 个答案:

答案 0 :(得分:0)

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

  • X包含A(即X -> A是微不足道的功能依赖),或
  • X是超级密钥,或
  • A-X的每个元素,AX之间的集合差异,都是主要属性。

对于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。

答案 1 :(得分:0)

当我们说“将R标准化为xNF”时,我们的意思是“用xNF中的每个投影/组件替换R”。 R走了;它等于组件的连接。每个组件必须使用自己的FD,超级密钥,CK等满足xNF的条件。