數(shù)據(jù)庫(kù)范式的提出是為了對(duì)關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行規(guī)范而提出的一個(gè)概念,,第一范式,第二范式,,第三范式這三個(gè)范式逐漸對(duì)數(shù)據(jù)進(jìn)行細(xì)分,,意思就是指屬于這三種范式之一的關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)相互之間的依賴關(guān)系越來(lái)越清晰明了。下面對(duì)三種范式進(jìn)行詳細(xì)的講解,。 第一范式(1NF):屬于第一范式的數(shù)據(jù)庫(kù)的表的列(屬性)是不能再進(jìn)一步拆分的,。如
很顯然,這個(gè)表格的第二列是可以在細(xì)分的,,所以不屬于第一范式,。第一范式是數(shù)據(jù)庫(kù)數(shù)據(jù)的最低要求,不滿足第一范式的的“數(shù)據(jù)庫(kù)”不能稱為關(guān)系數(shù)據(jù)庫(kù),,在非規(guī)范化數(shù)據(jù)去掉組合項(xiàng),。
第一范式會(huì)出現(xiàn)數(shù)據(jù)冗余、插入,、刪除異?,F(xiàn)象。(比如上面表格中學(xué)號(hào)的重復(fù)現(xiàn)象) 第二范式(2NF):首先得滿足第一范式的條件,,并且表中必須要有一個(gè)主鍵,,同時(shí)不屬于主鍵的屬性(意思是主鍵可以是幾個(gè)屬性)必須完全依賴于主鍵(這句話有點(diǎn)繞,好好理解下),,即設(shè)置好某個(gè)表的屬性后可以根據(jù)這個(gè)主鍵檢索得到唯一的一個(gè)屬性,,而不能得到幾個(gè)結(jié)果,。如果出現(xiàn)的部分依賴的屬性則應(yīng)當(dāng)將該屬性與主鍵的依賴部分單獨(dú)分離出來(lái),單獨(dú)建立一個(gè)表,。第二范式的任務(wù)就是在滿足第一范式的條件下消除部分函數(shù)依賴,。 學(xué)號(hào) | 姓名 | 郵箱 | 課程號(hào) | 課程地址 2323 lf ddd 123 345 2323 lj dsd 345 3789 顯然這個(gè)表屬于第一范式,主鍵(由學(xué)號(hào)與課程地址)能定位到唯一一行,。但是課程地址部分依賴于課程號(hào),,與學(xué)號(hào)無(wú)聯(lián)系,所以該數(shù)據(jù)庫(kù)不屬于第二范式,。所以需要講部分依賴的主鍵與屬性單獨(dú)建立一個(gè)表。原表變?yōu)閮蓚€(gè)表: 學(xué)號(hào) | 姓名 | 郵箱 | 課程號(hào) 2323 lf ddd 123 2323 lj dsd 345 課程號(hào) | 課程地址 123 34 345 3789 不符合第二范式的數(shù)據(jù)庫(kù)容易產(chǎn)生數(shù)據(jù)冗余 第三范式(3NF):首先滿足第二范式,,同時(shí)不能存在傳遞性依賴,。即不能存在:非主鍵列 A 依賴于非主鍵列 B,非主鍵列 B 依賴于主鍵的情況,。 簡(jiǎn)而言之,,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。例如,,存在一個(gè)部門信息表,,其中每個(gè)部門有部門編號(hào)(dept_id)、部門名稱,、部門簡(jiǎn)介等信息,。那么在的員工信息表中列出部門編號(hào)后就不能再將部門名稱、部門簡(jiǎn)介等與部門有關(guān)的信息再加入員工信息表中,。如果不存在部門信息表,,則根據(jù)第三范式(3NF)也應(yīng)該構(gòu)建它,否則就會(huì)有大量的數(shù)據(jù)冗余,。簡(jiǎn)而言之,,第三范式就是屬性不依賴于其它非主屬性。 StudyNo | Name | Sex | Email | bounsLevel | bouns 20040901 john Male [email protected]優(yōu)秀 $1000 20040902 mary famale [email protected]良 $600 這個(gè)完全滿足了第二范式,但是bounsLevel和bouns存在傳遞依賴 更改為: StudyNo | Name | Sex | Email | bouunsNo 20040901 john Male [email protected] 20040902 mary famale [email protected] bounsNo | bounsLevel | bouns 1 優(yōu)秀 $1000 2 良 $600 表中bounsNo作為主鍵 一般符合第三范式的關(guān)系數(shù)據(jù)庫(kù)能夠避免數(shù)據(jù)冗余的情況,。 本文參考了一下幾篇博文: http://blog.csdn.net/sunzhenhua0608/article/details/16850053 http://blog.csdn.net/famousdt/article/details/6921622 學(xué)生管理系統(tǒng):http://www.cnblogs.com/nx520zj/archive/2013/05/29/3105725.html |
|