3NF Vs 2NF,哪个更严格?

3 normalization

以下哪个是正确的:

  1. 如果表是第二范式,那么它必须是第三范式。
  2. 如果表是第三范式,那么它必须是第二范式。

我知道其中只有一个是正确的,如果它是第一个是有道理的。如果是第二个 - 对我来说没有任何意义。也许是一个例子?

Con*_*lls 11

3NF 中的数据库也在 2NF 中。一个简单的助记符是:

  • 钥匙
  • 整个钥匙
  • 只有钥匙
  • 所以帮我科德

2NF 指出表不包含逻辑上是主键一部分的函数的字段。3NF 指出表不包含逻辑上是表中任何字段的函数的字段,但“整个”键。3NF 可以看作是 2NF 的特化。


小智 6

NF 应该类似于增量需求。要成为 2NF,它必须是 1NF 并遵循更多限制。要成为 3NF,它必须是 2NF 并遵循更多限制。每个 NF 都是“前一个”NF 的特化。

以下是 3NF 的一些定义:

about.com 的定义:为了处于第三范式,关系必须首先满足处于第二范式的要求。 此外,必须消除所有不依赖于主键的属性。

来自维基百科的定义

第三范式(3NF)是用于数据库规范化的范式。3NF 最初由 EF Codd 1在 1971 年定义。 Codd 的定义指出,当且仅当以下两个条件都成立时,表才属于 3NF:

  • 关系 R(表)是第二范式(2NF)
  • R 的每个非主属性都非传递依赖(即直接依赖)于 R 的每个键。

所以,它必须是 2NF 也必须是 3NF