三張圖搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的區別


 第一范式(1NF):


  列1唯一確定列2, 列3, 列4, ...,即列2, 列3, 列4, ...不能再分裂出其它列

  假設有關系模式列1: 訂單名; 列2: 商品。一個訂單下可以有多個商品,即列2: 商品可以分裂成商品A, 商品B, 商品C, ...,所以列1: 訂單名; 列2: 商品這樣的關系模式不符合第一范式。

 第二范式(2NF):

 

 

 

 


  滿足2NF的前提是必須滿足1NF。

  此外,關系模式需要包含兩部分內容。是必須有一個(及以上)主鍵;是沒有包含在主鍵中的列必須全部依賴於全部主鍵,而不能只依賴於主鍵的一部分而不依賴全部主鍵。

  定義聽起來有點繞,不慌,直接看圖,只有全部的非主鍵列依賴於全部主鍵,才滿足第二范式

  第三范式(3NF):

 

 

 


  滿足3NF的前提是必須滿足2NF。

  另外關系模式的非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列m既依賴於全部主鍵,又依賴於非主鍵列n的情況

  定義聽起來還是有點繞,不慌,直接看圖,只要非主鍵內部存在傳遞依賴,就不滿足第三范式

  假設存在關系模式主鍵1: 課程編號; 列1: 教師名; 列2: 教師家庭地址。顯然滿足第一范式和第二范式,但是教師家庭地址傳遞依賴於教師名,所以不滿足第三范式。

 示例:

  設有課程關系模式如下:R(C#, Cn, T, Ta)(其中C#為課程號,Cn為課程名,T為教師名,Ta為教師地址),並且假定不同的課程號可以有相同的課程名,每門課程只有一位任課教師,但每名教師可以有多門課程。關系R范式最高達到()。

A)1NF
B)2NF
C)3NF
D)BCNF

【正確答案】B

解析

  一個“課程號”確定一個“課程名”,確定一個“教師名”,確定一個“教師地址”,所以符合第一范式;

  “課程號”是無重復的,所以“課程號”是主鍵,“課程名”、“教師名”、“教師地址”均是可重復的,所以它們都是非主鍵列並完全依賴於主鍵“課程號”,所以符合第二范式;

  非主鍵列“教師地址”傳遞依賴於非主鍵列“教師名”,所以不符合第三范式,故選B。
  原文鏈接:https://blog.csdn.net/weixin_43971764/article/details/88677688


免責聲明!

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



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