范式(數(shù)據(jù)庫設(shè)計范式绽榛,數(shù)據(jù)庫的設(shè)計范式)是符合某一種級別的關(guān)系模式的集合湿酸。構(gòu)造數(shù)據(jù)庫必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫中灭美,這種規(guī)則就是范式推溃。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求,即滿足不同的范式届腐。
滿足最低要求的范式是第一范式(1NF)铁坎。在第一范式的基礎(chǔ)上進一步滿足更多要求的稱為第二范式(2NF)蜂奸,其余范式以次類推。一般說來硬萍,數(shù)據(jù)庫只需滿足第三范式(3NF)就行了扩所。
第一范式
第一范式(1NF):如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R∈1NF(即R符合第一范式)襟铭。簡單的說碌奉,就是每一個列(屬性)只有一個,沒有重復寒砖。
要求
1.必須有主鍵來加以識別赐劣。
2.每個字段只能存放單一的值并確保有數(shù)據(jù)沒有重復的組端盆。
例如:
姓名 | 班級 | 課程 |
---|---|---|
小明 | 1班 | 數(shù)學,語文 |
小紅 | 2班 | 英語 |
小明 | 2班 | 數(shù)學 |
里面還有重復組并且沒有存放單一的值奸晴,并不符合第一范式,我們給其增加主鍵學號加以區(qū)別:
學號 | 姓名 | 班級 | 課程 |
---|---|---|---|
101 | 小明 | 1班 | 數(shù)學 |
101 | 小明 | 1班 | 語文 |
201 | 小紅 | 2班 | 英語 |
202 | 小明 | 2班 | 數(shù)學 |
第二范式
首先要滿足第一范式藏研。它的規(guī)則是要求數(shù)據(jù)表里的所有數(shù)據(jù)都要和該數(shù)據(jù)表的主鍵有完全依賴關(guān)系漠嵌。例如有表:
貨物 | 供應商ID | 供應商 | 價格 | 供應商地址 |
---|---|---|---|---|
毛巾 | 01 | 世紀聯(lián)華 | 10.0 | 星光大道 |
牙刷 | 01 | 世紀聯(lián)華 | 5.0 | 星光大道 |
毛巾 | 02 | 十足 | 12.0 | 月光大道 |
可知咐汞,這里的主鍵有貨物和供應商ID,價格和兩個主鍵都有關(guān)儒鹿,可是供應商地址只和供應商ID有依賴關(guān)系化撕。那么不符合第二范式,我們可以將其修改為兩張表:
供應商ID | 供應商 | 供應商地址 |
---|---|---|
01 | 世紀聯(lián)華 | 星光大道 |
02 | 十足 | 月光大道 |
貨物 | 供應商ID | 價格 |
---|---|---|
毛巾 | 01 | 10.0 |
牙刷 | 01 | 5.0 |
毛巾 | 01 | 12.0 |
這樣就符合了第二范式要求的表內(nèi)數(shù)據(jù)和表內(nèi)主鍵完全依賴的關(guān)系约炎。
第三范式
在第二范式的基礎(chǔ)上植阴,要求所有非鍵屬性都只和候選鍵有相關(guān)性,也就是說非鍵屬性之間應該是獨立無關(guān)的圾浅。
從上述表來說掠手,供應商和供應商地址是相關(guān)的,知道了供應商也就知道了供應商地址(不考慮一廠多址的情況)狸捕∨绺耄可以分為:
供應商ID | 供應商 |
---|---|
01 | 世紀聯(lián)華 |
02 | 十足 |
供應商ID | 供應商地址 |
---|---|
01 | 星光大道 |
02 | 月光大道 |