SQL基礎:數據庫規范化與三范式


數據庫規范化與范式

  冗余導致多種更新異常,也就是插入、更新和刪除行的操作困難。

  規范化(normalization)是通過修改表以減少冗余和矛盾的一系列步驟。

  在每一步之后,數據庫都達到一個特定的范式(normal form)

 

  關系模型定義了三種范式,以著名的序數命名。

  第一范式(1NF)

  第二范式(2NF)

  第三范式(3NF)

  每一種范式都比前一種更健壯。符合3NF的數據庫也符合2NF和1NF。規范化水平越高,表的數量也越多。

 

  無損分解(lossless decomposition能確保表的分割不會引起信息丟失。

  依賴-保持分解(dependency-preserving decomposition能確保聯系不丟失。

  當表被分割的時候,存在匹配的主鍵和外鍵列不應被認為是多余的數據。

  規范化不是系統化,它是一個涉及重復表的分割、重新聯結和精煉的迭代過程。

 

第一范式(1NF)

  滿足第一范式的表:

  列僅包含原子值。

  沒有重復的組。

  原子值(也稱為標量值)是不能再細分的單一值。

  重復的組是兩個或多個邏輯相關聯的列的集合。

 

第二范式(2NF)

  當滿足下列條件時,第一范式的表自動滿足第二范式:

  主鍵是一個列(也就是說,關鍵字不是組合的)。

  表中所有的列是主鍵的一部分(單一的或組合的)。

  滿足第二范式的表:

  滿足第一范式。

  非部分函數依賴。

  如果表中的一些組合鍵(但不是全部)值確定了一個非鍵列的值,則表包含部分函數依賴

  第二范式表是完全函數依賴,意味着如果組合鍵中任何一列值改變,將導致非鍵列的值需要被更新。

 

第三范式(3NF)

  滿足第三范式的表:

  滿足第二范式。

  沒有傳遞依賴。

  如果一個非鍵列的值確定了另一個另一個非鍵列的值,則表包含傳遞依賴

  在第三范式的表中,非鍵列相互獨立並且只依賴於主鍵列。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM