更新時(shí)間:2018-01-10 來(lái)源:黑馬程序員 瀏覽量:
為了建立冗余較小、結(jié)構(gòu)合理的數(shù)據(jù)庫(kù),設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)必須遵循一定的規(guī)則。在關(guān)系型數(shù)據(jù)庫(kù)中這種規(guī)則就稱為范式。范式是符合某一種設(shè)計(jì)要求的總結(jié)。要想設(shè)計(jì)一個(gè)結(jié)構(gòu)合理的關(guān)系型數(shù)據(jù)庫(kù),必須滿足一定的范式。
在實(shí)際開發(fā)中最為常見的設(shè)計(jì)范式有三個(gè):
第一范式(1NF):字段具有原子性,不可再分。所有關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)都滿足第一范式
數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。例如,姓名字段,其中的姓和名必須作為一個(gè)整體,無(wú)法區(qū)分哪部分是姓,哪部分是名,如果要區(qū)分出姓和名,必須設(shè)計(jì)成兩個(gè)獨(dú)立的字段。
第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來(lái)的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。
要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。這個(gè)惟一屬性列被稱為主關(guān)鍵字或主鍵。
第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。簡(jiǎn)而言之,第二范式就是非主屬性非部分依賴于主關(guān)鍵字。
第三范式的要求如下:
滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。
所以第三范式具有如下特征:
1,每一列只有一個(gè)值
2,每一行都能區(qū)分。
3,每一個(gè)表都不包含其他表已經(jīng)包含的非主關(guān)鍵字信息。
例如,帖子表中只能出現(xiàn)發(fā)帖人的id,而不能出現(xiàn)發(fā)帖人的id,還同時(shí)出現(xiàn)發(fā)帖人姓名,否則,只要出現(xiàn)同一發(fā)帖人id的所有記錄,它們中的姓名部分都必須嚴(yán)格保持一致,這就是數(shù)據(jù)冗余。
本文版權(quán)歸黑馬程序員云計(jì)算大數(shù)據(jù)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院
首發(fā):http://cloud.itheima.com/
云計(jì)算面試題之Request對(duì)象的主要方法
2018-01-05云計(jì)算大數(shù)據(jù):企業(yè)中處理數(shù)據(jù)的兩種主要方式
2018-01-05云計(jì)算大數(shù)據(jù):KVM虛擬化技術(shù)實(shí)戰(zhàn)
2017-12-22云計(jì)算大數(shù)據(jù):數(shù)據(jù)倉(cāng)庫(kù)建模
2017-12-19云計(jì)算大數(shù)據(jù):構(gòu)建高性能Web站點(diǎn)
2017-12-19云計(jì)算大數(shù)據(jù):Xen、KVM、VMware、hyper-v等虛擬化技術(shù)的比較
2017-12-18