Normalization
3NF 與 2NF,哪個更嚴格?
以下哪項是正確的:
- 如果一個表是第二範式,那麼它必須是第三範式。
- 如果一個表是第 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