Normalization

3NF 與 2NF,哪個更嚴格?

  • February 13, 2012

以下哪項是正確的:

  1. 如果一個表是第二範式,那麼它必須是第三範式。
  2. 如果一個表是第 3 範式,那麼它必須是第 2 範式。

我知道其中只有一個是正確的,如果它是第一個是有道理的。如果是第二個-對我來說沒有任何意義。也許是一個例子?

3NF 中的數據庫也在 2NF 中。一個簡單的助記符是:

  • 鑰匙
  • 整個鑰匙
  • 只有鑰匙
  • 所以幫助我科德

2NF 聲明一個表不包含邏輯上是主鍵*一部分的函式的欄位。*3NF 聲明一個表不包含邏輯上是表的任何欄位的函式的欄位,但 ‘whole’ key。3NF 可以看作是 2NF 的一個特化。

NF 應該類似於增量需求。要成為 2NF,它必須是 1NF 並遵循更多限制。要成為 3NF,它必須是 2NF 並遵循更多限制。每個 NF 都是“前一個”NF 的特化。

以下是 3NF 的一些定義:

來自 about.com 的定義:為了處於第三範式,關係必須首先滿足處於第二範式的要求。 此外,必須消除所有不依賴於主鍵的屬性。

來自維基百科的定義

第三範式 (3NF) 是用於數據庫規範化的範式。3NF 最初由 EF Codd 1在 1971 年定義。Codd 的定義指出,當且僅當以下兩個條件都成立時,表才屬於 3NF:

  • 關係 R (table) 是第二範式 (2NF)
  • R 的每個非主屬性都非傳遞地依賴(即直接依賴)R 的每個鍵。

所以,也必須是 2NF 才能成為 3NF

引用自:https://dba.stackexchange.com/questions/12775