三范式(詳解+例子)


第一范式(1NF):每一列都是不可分割的原子數據項(什么意思,每一項都不可分割,像下面的表格就能分割,所以它連第一范式都算不上

 

  分割后的樣子

(它就是第一范式了)

第二范式:在1NF基礎上,非碼屬性必須完全依賴於候選碼(在1NF基礎上消除非主屬性對主碼的部分函數依賴)

  幾個重要的概念:

  1.函數依賴:A-->B,如果通過A屬性(屬性組)的值,可以確定唯一的B屬性的值,則稱B依賴於A

    例如:學號---->姓名    (學號、課程名稱 的屬性組)-->  分數

  2.完全函數依賴:A-->B   如果A是一個屬性組,則B屬性值的確定需要依賴A屬性組的中所有的屬性值

    例如:(學號、課程名稱)--> 分數

  3. 部分函數依賴: A-->B   如果A是一個屬性組,則B屬性值的確定只需要依賴A屬性組的中某一些的屬性值(第二范式就是消除這個

    例如:(學號 、課程名稱)--> 姓名

  4.傳遞函數依賴:A -- >B , B -- >C 如果通過A屬性(屬性組)的值,可以確定唯一的B屬性的值,再通過B屬性(屬性組)的值,可以唯一確定C屬性的值,那么稱C傳遞依賴於A

    例如: 學號 --> 系名  ,系名 --> 系主任 

   5.碼 :如果在一張表中,一個屬性或屬性組,被其他所有的屬性(非主屬性)所完全函數依賴,則稱這個屬性(屬性組)為該表的碼。(上面的表,學號和課程名稱所構成的屬性組就是碼)

    例如: 該表中碼為 (學號、課程名稱)

  主屬性: 碼中所有屬性

  非主屬性: 除碼之外的所有屬性

 在上面那張表中我們可知碼為(學號、課程名稱),但是姓名、系名、系主任都部分依賴於碼(主屬性),這不符合第二范式,所以進行拆分如下

第一張表碼為(學號、課程名稱),第二張表為(學號),它們都是完全依賴的,因此符合第二范式。

 

第三范式(3NF):在2NF的基礎上,任何的非主屬性不依賴於其他非主屬性 (在第二范式基礎上消除傳遞依賴)

  注意看第二范式的學生表:存在系主任依賴於系名 (系名---> 系主任),所以不符合第三范式

繼續進行拆分

 

 

 

  這樣就符合第三范式...

  

 


免責聲明!

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



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