3NF與BCNF
規範化是一個過程,用於最小化關係數據庫中數據中存在的冗餘。這個過程主要是把大表分成冗餘較少的小表。這些較小的表將通過定義良好的關係相互關聯。在標準化良好的數據庫中,對數據的任何更改或修改都只需要修改一個表。第三範式(3NF)是由EdgarF.Codd於1971年提出的,他也是關係模型和規範化概念的發明者。Boyce-Codd範式(BCNF)是由Codd和raymondf.Boyce於1974年提出的。
什麼是3NF?
3NF是關係數據庫規範化中使用的第三種規範形式。根據Codd的定義,一個表被稱為3NF,當且僅當該表是第二範式(2NF),表中不屬於候選鍵的每個屬性都應該直接依賴於該表的每個候選鍵。1982年,卡洛·扎尼奧洛提出了一個不同於3NF的定義。符合3NF的表通常不包含在**、刪除或更新表中的記錄時發生的異常。
什麼是BCNF?
BCNF(也稱為3.5NF)是關係數據庫規範化中使用的另一種標準形式。引入它是為了捕捉一些3NF沒有解決的異常。表被稱為BCNF,當且僅當對於A→B形式的非平凡依賴項,A是一個超鍵。分解不是BCNF標準形式的表不能保證生成BCNF形式的表(同時保留原始表中存在的依賴關係)。
3NF和BCNF有什麼區別?