數據庫有三大范式。
范式的簡介
范式的英文名稱是Normal Form,它是英國人E.F.Codd(關系數據庫的老祖宗)在上個世紀70年代提出關系數據庫模型后總結出來的。范式是關系數據庫理論的基礎,也是我們在設計數據庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三個范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。
數據往往種類繁多,而且每種數據之間又互相關聯,因此,在設計數據庫時,所需要滿足的范式越多,那表的層次及結構也就越復雜,最終造成數據的處理困難。這樣,還不如不滿足這些范式呢。所以在使用范式的時候也要細細斟酌,是否一定要使用該范式,必須根據實際情況做出選擇。一般情況下,我們使用前三個范式已經夠用了,不再使用更多范式,就能完成對數據的優化,達到最優效果。
通俗的理解
第一范式就是屬性不可分割,每個字段都應該是不可再拆分的。比如一個字段是姓名(NAME),在國內的話通常理解都是姓名是一個不可再拆分的單位,這時候就符合第一范式;但是在國外的話還要分為FIRST NAME和LAST NAME,這時候姓名這個字段就是還可以拆分為更小的單位的字段,就不符合第一范式了。
第二范式就是要求表中要有主鍵,表中其他其他字段都依賴於主鍵,因此第二范式只要記住主鍵約束就好了。比如說有一個表是學生表,學生表中有一個值唯一的字段學號,那么學生表中的其他所有字段都可以根據這個學號字段去獲取,依賴主鍵的意思也就是相關的意思,因為學號的值是唯一的,因此就不會造成存儲的信息對不上的問題,即學生001的姓名不會存到學生002那里去。
第三范式就是要求表中不能有其他表中存在的、存儲相同信息的字段,通常實現是在通過外鍵去建立關聯,因此第三范式只要記住外鍵約束就好了。比如說有一個表是學生表,學生表中有學號,姓名等字段,那如果要把他的系編號,系主任,系主任也存到這個學生表中,那就會造成數據大量的冗余,一是這些信息在系信息表中已存在,二是系中有1000個學生的話這些信息就要存1000遍。因此第三范式的做法是在學生表中增加一個系編號的字段(外鍵),與系信息表做關聯。
"以后的心事就不說給你聽了。"