“學(xué)長(zhǎng),SqlServer數(shù)據(jù)庫(kù)三范式可以簡(jiǎn)單幫我理解一下么?”。
學(xué)妹得一句話把我問蒙了,因?yàn)槿妒降酶拍钤缇蛠G到外太空去了。
但是呢,我不能直接說我忘記了,為了不影響在學(xué)妹心目中得形象(你懂得),我還特意去百度查了一下。
然后整理了一下,大家如果有和我一樣忘記了得可以看一下(概念+舉例),淺顯易懂。
回到頂部
數(shù)據(jù)庫(kù)三范式- 第壹范式(1NF):第壹范式(1NF)是指數(shù)據(jù)庫(kù)表得每一列都是不可分割得基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中得某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)得屬性。
- 第二范式(2NF):第二范式(2NF)是在第壹范式(1NF)得基礎(chǔ)上建立起來得,即滿足第二范式(2NF)必須先滿足第壹范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫(kù)表中得每個(gè)實(shí)例或行必須可以被惟一得區(qū)分。
- 第三范式(3NF):滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含得非主關(guān)鍵字信息。
一般地,在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),應(yīng)遵循三大原則,也就是我們通常說得三大范式,即第壹范式要求確保表中每列得原子性,也就是不可拆分;
第二范式要求確保表中每列與主鍵相關(guān),而不能只與主鍵得某部分相關(guān)(主要針對(duì)聯(lián)合主鍵),主鍵列與非主鍵列遵循完全函數(shù)依賴關(guān)系,也就是完全依賴;
第三范式確保主鍵列之間沒有傳遞函數(shù)依賴關(guān)系,也就是消除傳遞依賴。
1. 必須保證數(shù)據(jù)庫(kù)設(shè)計(jì)得合理性
2. 如何是合理得數(shù)據(jù)庫(kù)
3. 如何才能保證數(shù)據(jù)庫(kù)設(shè)計(jì)水平
4. 什么是范式(NF,NormalForm)
回到頂部
舉例說明第壹范式(概念+舉例)1. 要求
2. 示例
第二范式(概念+舉例)1. 要求
2. 示例
在上面第壹范式示例表中得數(shù)據(jù)看出,這不符合第二范式,所以進(jìn)行拆分如下,
第壹張主鍵相關(guān)為(學(xué)號(hào)、課程名稱),第二張表為(學(xué)號(hào)),它們都是完全依賴得,因此符合第二范式。
第三范式(概念+舉例)1. 要求
2. 示例
注意看第二范式得學(xué)生表:存在系主任依賴于系名 (系名---> 系主任),所以不符合第三范式,繼續(xù)進(jìn)行拆分如下:
回到頂部
總結(jié)我們看到,第三范式規(guī)則查找以消除沒有直接依賴于第壹范式和第二范式形成得表得主鍵得屬性。
我們?yōu)闆]有與表得主鍵關(guān)聯(lián)得所有信息建立了一張新表。
每張新表保存了來自源表得信息和它們所依賴得主鍵。
數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范化能讓我們更好地適應(yīng)變化,使你能夠改變業(yè)務(wù)規(guī)則、需求和數(shù)據(jù)而不需要重新構(gòu)造整個(gè)系統(tǒng)。
感謝分享:熊澤-學(xué)習(xí)中得苦與樂