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