SQL範式的通俗理解(舉例)

一、第一範式(來自百度知道)

      如一個員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個員工的信息,一個員工的信息在表中只出現一次。簡而言之,第一範式就是無重複的列。

二、第二範式(來自百度百科)

      第二範式是數據庫規範化中所使用的一種正規形式。它的規則是要求數據表裏的所有數據都要和該數據表的主鍵有完全依賴關係;如果有哪些數據只和主鍵的一部份有關的話,它就不符合第二範式。同時可以得出:如果一個數據表的主鍵只有單一一個字段的話,它就一定符合第二範式。

  • 不符合第二範式的例子
貨物類型 貨物ID 貨物名稱 注意事項
瓷碗 1 白色瓷碗 易碎品
瓷碗 2 青花瓷碗 易碎品
瓷碗 3 雕花瓷碗 易碎品
三合板 1 普通三合板 易燃物品,注意防火
在該表中有兩個主鍵,即(貨物類型,貨物ID),貨物名稱字段完全依賴於這兩個主鍵,換句話說,貨物的名稱完全是取決於這兩個主鍵的值的。但”注意事項“這一列,只依賴一個主鍵”貨物類型“。換句話說,注意事項這個字段只依賴於主鍵的一部分(這就稱爲對主鍵”部分依賴“)。
那麼,既然表中存在一個對主鍵不是完全依賴的字段,那麼我們就可以確定,該表不符合第二範式。
  • 符合第二範式的例子
貨物類型 貨物ID 貨物名稱
瓷碗 1 白色瓷碗
瓷碗 2 青花瓷碗
瓷碗 3 雕花瓷碗
三合板 1 普通三合板

在該表中的主鍵依然是(貨物類型、貨物ID),非主鍵字段“貨物名稱”,完全依賴於這兩個主鍵,那麼我們就可以說,該表是符合數據庫第二範式的。



三、第三範式

      每個非關鍵字列都獨立於其他非關鍵字列,並依賴於關鍵字

      例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那麼在的員工信息表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三範式(3NF)也應該構建它,否則就會有大量的數據冗餘。簡而言之,第三範式就是屬性不依賴於其它非主屬性。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章