Normalization

3NF是否需要2NF?

  • March 7, 2018

我對 3NF 的定義有點困惑。

根據維基百科:

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

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

但是,根據Abraham Silberschatz、Henry F.Korth、S.Sudarshan的《數據庫系統概念第 6 版》一書:

關係模式 R 是關於函式依賴集 F 的第三範式 (3NF),如果對於 F+ 中所有形式為 α → β 的函式依賴,其中 α ⊆ R 和 β ⊆ R,至少有一個以下持有:

  • α → β 是一個微不足道的函式依賴。
  • α 是 R 的超級鍵。
  • β - α 中的每個屬性 A 都包含在 R 的候選鍵中。

此外,根據Ramez Elmasri Shamkant B. NavatheDatabase Systems 第 6 版

一個關係模式 R 是第三範式 (3NF) 如果,當一個非平凡的函式依賴 X→A 在 R 中成立時,要麼 (a) X 是 R 的超鍵,要麼 (b) A 是 R 的素數屬性。

閱讀上述定義後,我不確定關係模式是否必須在 2NF 中才能在 3NF 中。此外,關係模式是否必須在 3NF 中才能在 BCNF 中?

範式的指定方式是,對於任何範式,模型也滿足較低編號範式的標準。所以,是的,如果你的模型是第三範式,它也是第二範式和第一範式。

規範化模型時,您通常會先解決一個範式,然後再解決下一個範式。這使得規範化更簡單,更不容易出錯,因為您一次只應用了一些規則。處於較低範式的實體也可能處於較高範式。大多數第 3 範式實體也是第 4 和第 5 範式。

第四、第五和第六範式超越了功能依賴。在適用的情況下,它們會以更多表為代價進一步簡化數據。它們減少了冗餘,並提高了數據完整性。

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