关于 3NF 的条件之一

About one of the conditions of 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 是什么的超级键?

of R = {A, B, C, D} 或每个关系 {A,B}, {B,C} and {C,D},在 3NF?

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

我完全糊涂了。

一个关系在 3NF 中,如果对于该关系中的每个 X -> A,这些条件之一成立:

  • 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 中。

当我们说 "normalize R to xNF" 时,我们的意思是 "replace R by some projections/components that are each in xNF"。 R不见了;它等于组件的连接。每个组件必须使用自己的FDs、superkeys、CKs等来满足xNF的条件