數據庫規範化與經典三範式

數據庫規範化與經典三範式

  冗餘致使多種更新異常,也就是插入、更新和刪除行的操做困難。數據庫

  規範化(normalization)是經過修改表以減小冗餘和矛盾的一系列步驟。less

  在每一步以後,數據庫都達到一個特定的範式(normal form) 。函數

 

  關係模型定義了三種範式,以著名的序數命名。spa

  第一範式(1NF)orm

  第二範式(2NF)ssl

  第三範式(3NF)it

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

 

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

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

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

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

 

第一範式(1NF)

  知足第一範式的表:

  列僅包含原子值。

  沒有重複的組。

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

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

 

第二範式(2NF)

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

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

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

  知足第二範式的表:

  知足第一範式。

  非部分函數依賴。

  若是表中的一些組合鍵(但不是所有)值肯定了一個非鍵列的值,則表包含部分函數依賴

  第二範式表是徹底函數依賴,意味着若是組合鍵中任何一列值改變,將致使非鍵列的值須要被更新。

 

第三範式(3NF)

  知足第三範式的表:

  知足第二範式。

  沒有傳遞依賴。

  若是一個非鍵列的值肯定了另外一個另外一個非鍵列的值,則表包含傳遞依賴

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

相關文章
相關標籤/搜索