數(shù)據(jù)庫三范式想必大家并不陌生,官方的解釋很抽象,初學(xué)者比較難理解。對(duì)于這塊知識(shí),我是看了會(huì),會(huì)了忘,忘了再看。每當(dāng)別人問我的時(shí)候,必須先看看教材,回顧一段時(shí)間才能理清。 為什么當(dāng)別人提問時(shí)不能立馬把三范式的經(jīng)典思想說出來呢?通過聽米老師的“
數(shù)據(jù)庫三范式想必大家并不陌生,官方的解釋很抽象,初學(xué)者比較難理解。對(duì)于這塊知識(shí),我是看了會(huì),會(huì)了忘,忘了再看。每當(dāng)別人問我的時(shí)候,必須先看看教材,回顧一段時(shí)間才能理清。
為什么當(dāng)別人提問時(shí)不能立馬把三范式的經(jīng)典思想說出來呢?通過聽米老師的“如何高效學(xué)習(xí)”這堂課,我發(fā)現(xiàn)原因是我自己沒有融入到三范式中,三范式?jīng)]有和自己發(fā)生關(guān)系。下面,我用三個(gè)有趣的小故事幫助大家快速、深刻的理解三范式的含義。
第一范式,官方解釋:關(guān)系模式R的每個(gè)關(guān)系r的屬性值都是不可分的原子值。這個(gè)官方解釋還不算太難,比如我們想把“電話號(hào)碼”作為數(shù)據(jù)庫字段,在“電話號(hào)碼”下面又分“手機(jī)號(hào)碼”和“座機(jī)號(hào)碼”,這就違反了第一范式,用我的話說就是“把事說清了”。你只說“電話號(hào)碼”,我知道你說的是“手機(jī)號(hào)碼”還是“座機(jī)號(hào)碼”?
第二范式,官方解釋:非主屬性必須完全函數(shù)依賴于R的主關(guān)系鍵。怎么樣,有點(diǎn)暈了吧!比如:在SCD表中,有字段SNO,SN,Age,Dept,MN,CNo,Score。知道SNo可以確定SN、Age、Dept、MN,知道SNo、CNo可以確定Score。這個(gè)事好比土匪們選大哥,小弟SN、Age、Dept、MN選舉SNo當(dāng)土匪頭子,Score選舉SNo、CNo兩個(gè)人共同當(dāng)土匪頭子。結(jié)果意見達(dá)不成一致,土匪們鬧分裂,一句話“只要有一個(gè)人不同意,這事就不能通過”。大哥SNo帶著小弟SN、Age、Dept、MN成立土匪旗號(hào)SD,大哥SNo又和CNo帶著小弟Score合伙成立土匪旗號(hào)SC,到此,故事告一段落。
第三范式,官方解釋:每個(gè)非主屬性都不傳遞函數(shù)依賴于R的主關(guān)系鍵。這個(gè)怎么樣,徹底暈了吧!比如:在SD表中,知道SNo可以確定Dept,知道Dept可以確定MN(系主任名)。這事咱接著上面第二范式的土匪故事接著講,大哥SNo有小弟SN、Age、Dept、MN,但Dept特別有才,又把MN招為自己的小弟,天天忽悠MN,給MN灌輸反動(dòng)思想,終于有一天Dept帶著MN獨(dú)立了,成立了土匪旗號(hào)D。大哥SNo感覺SD已經(jīng)不完整了,把土匪旗號(hào)改為S。SNo經(jīng)過這次教訓(xùn),決定下道命令:“一個(gè)人只能扮演一個(gè)角色”,否則就是不符合三范式,造成關(guān)系模式分解。
到此故事講完了,想必通過這個(gè)小故事,大家肯定把三范式的精髓深深的刻在了腦中。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com