如果不想看理論性的數(shù)的話,又想重溫一下數(shù)據(jù)庫知識,又是日本動漫迷的話,可以看一下: 作為漫畫和專業(yè)知識結(jié)合在一起的點(diǎn)子十分有創(chuàng)意,而且讀起來也有趣。 數(shù)據(jù)庫通過E-R,entity-relationship模型進(jìn)行數(shù)據(jù)庫的設(shè)計(jì),根據(jù)具體的關(guān)系。 一對多,一個職員對
如果不想看理論性的數(shù)的話,又想重溫一下數(shù)據(jù)庫知識,又是日本動漫迷的話,可以看一下:
作為漫畫和專業(yè)知識結(jié)合在一起的點(diǎn)子十分有創(chuàng)意,而且讀起來也有趣。
數(shù)據(jù)庫通過E-R,entity-relationship模型進(jìn)行數(shù)據(jù)庫的設(shè)計(jì),根據(jù)具體的關(guān)系。
一對多,一個職員對多個客戶。如果只有一個職員。
多對一,反過來。
多對多,多個職員對多個客戶。
確定關(guān)系后,還需要進(jìn)行normalization,規(guī)范化,分三范式。
先看看非規(guī)范化:
你會發(fā)現(xiàn)一個王國里面的商品又有兩個列,你設(shè)計(jì)數(shù)據(jù)庫的時候不會這樣吧。
規(guī)范化有什么用呢?你一改一樣水果的單價(jià),就要全部都要改動,如果規(guī)范化之后,將水果單獨(dú)分開,那就不會造成矛盾了。
第一范式:
第一范式,商品和訂單分開。如果蘋果單價(jià)一變化,就不用將非范式表中含有蘋果的價(jià)格全部改過。
每一列都是不可分割的,除去了非規(guī)范式中的重復(fù)記錄(記錄就是一行)。
但是,存在的問題是,如果商品沒有賣出去過,那么數(shù)量為0,也沒有報(bào)表編碼,但是我們確實(shí)需要商品的名稱,單價(jià)和商品編碼。
所以,繼續(xù)看第二范式。
第二范式:
商品的名稱,單價(jià)和商品編碼單獨(dú)做成一個表,通過商品編碼這一列確定其他兩個字段的值,這種原則成為函數(shù)依賴(functionally dependent)通過主鍵確定其他列的值。
回頭看看報(bào)表編碼,出口國編碼這個表,第二范式。
報(bào)表編碼可以確定出口國編碼,確定出口國編碼后再確定出口國名稱。
問題所在,出口國編碼雖然能通過一列確認(rèn)其他值,但是如果出口國根本就沒有進(jìn)口過,那么所謂的商品編碼便是不存在的。
第三范式:
只能由主鍵確定其他列值,而第二范式中出現(xiàn)的,由報(bào)表編碼可以確定出口國編碼,確定出口國編碼后再確定出口國名稱。這種通過某一列的值間接確定另外一列的值,我們成為傳遞依賴,第三范式去除傳遞依賴。
其實(shí)報(bào)表編碼,商品編碼,數(shù)量這一個表,和商品編碼,商品名稱,單價(jià)這一個表不只滿足第二范式了,也滿足第三范式了。
但是,第二范式中,報(bào)表編碼,口國編碼,出口國名稱的表卻不滿足第三范式,因?yàn)橛袀鬟f依賴,分割之后就滿足第三范式了。
總結(jié)一下:
第一范式:列不可分,行中沒有重復(fù)記錄。
第二范式:通過主鍵確定其他列的值,通過其他列又確定其他列的值,會存在傳遞依賴。
第三范式:只能通過主鍵確定其他列的值,不存在傳遞依賴,其實(shí)第三范式就是特殊的第二范式。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com