數據庫三個范式詳解


數據庫范式的提出是為了對關系數據庫中的數據進行規范而提出的一個概念,第一范式,第二范式,第三范式這三個范式逐漸對數據進行細分,意思就是指屬於這三種范式之一的關系數據庫的數據相互之間的依賴關系越來越清晰明了。下面對三種范式進行詳細的講解。

第一范式(1NF):屬於第一范式的數據庫的表的列(屬性)是不能再進一步拆分的。如

 

學號 課程
2014212797 軟件技術基礎   高數

很顯然,這個表格的第二列是可以在細分的,所以不屬於第一范式。第一范式是數據庫數據的最低要求,不滿足第一范式的的“數據庫”不能稱為關系數據庫,在非規范化數據去掉組合項。

學號 課程
2014212797 軟件技術基礎  
2014212798 高數

第一范式會出現數據冗余、插入、刪除異常現象。(比如上面表格中學號的重復現象)

第二范式(2NF):首先得滿足第一范式的條件,並且表中必須要有一個主鍵,同時不屬於主鍵的屬性(意思是主鍵可以是幾個屬性)必須完全依賴於主鍵(這句話有點繞,好好理解下),即設置好某個表的屬性后可以根據這個主鍵檢索得到唯一的一個屬性,而不能得到幾個結果。如果出現的部分依賴的屬性則應當將該屬性與主鍵的依賴部分單獨分離出來,單獨建立一個表。第二范式的任務就是在滿足第一范式的條件下消除部分函數依賴。

學號   |  姓名 |  郵箱  |  課程號  | 課程地址

2323    lf       ddd      123         345

2323   lj       dsd       345        3789

顯然這個表屬於第一范式,主鍵(由學號與課程地址)能定位到唯一一行。但是課程地址部分依賴於課程號,與學號無聯系,所以該數據庫不屬於第二范式。所以需要講部分依賴的主鍵與屬性單獨建立一個表。原表變為兩個表:

學號   |  姓名 |  郵箱  |  課程號 

2323    lf       ddd      123        

2323   lj       dsd       345       

  課程號  | 課程地址

  123         34

  345        3789

不符合第二范式的數據庫容易產生數據冗余

第三范式(3NF):首先滿足第二范式,同時不能存在傳遞性依賴。即不能存在:非主鍵列 A 依賴於非主鍵列 B,非主鍵列 B 依賴於主鍵的情況。

簡而言之,第三范式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在的員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三范式(3NF)也應該構建它,否則就會有大量的數據冗余。簡而言之,第三范式就是屬性不依賴於其它非主屬性。
StudyNo   |   Name   |   Sex   |      Email         |      bounsLevel   |   bouns

20040901      john         Male       kkkk@ee.net   優秀                    $1000

20040902     mary         famale    kkk@fff.net       良                         $600

這個完全滿足了第二范式,但是bounsLevel和bouns存在傳遞依賴

更改為:

StudyNo   |   Name   |   Sex   |      Email         |      bouunsNo

20040901      john         Male       kkkk@ee.net   1

20040902     mary         famale    kkk@fff.net       2

bounsNo   |   bounsLevel   |   bouns

1                   優秀                $1000

 2                 良                   $600

表中bounsNo作為主鍵

一般符合第三范式的關系數據庫能夠避免數據冗余的情況。

本文參考了一下幾篇博文:

http://blog.csdn.net/sunzhenhua0608/article/details/16850053

http://blog.csdn.net/famousdt/article/details/6921622

學生管理系統:http://www.cnblogs.com/nx520zj/archive/2013/05/29/3105725.html

 


免責聲明!

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



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