1.2.4 數據庫規範化

數據庫範式是建立數據庫關係表的規範,遵守範式的級別越高,能夠讓數據冗餘越少,下一級別的範式包含上一級別的所有範式;但是對於特定的的冗餘數據(數據屬性的對應關係不變)能夠提高查詢速度(無需連表查詢)。
 
第一範式1NF Normal Form:確保每列原子
確保每個字段不可再分,下表area可再分
第二範式2NF Normal Form非鍵字段必須依賴於鍵字段
一個表只能描述一件事,下表描述了兩件事情,所以需要拆分
第三範式3NF Normal Form:消除傳遞依賴
在所有的非鍵字段中,不能有傳遞依賴,
下表cityid和cityname是一種數據,由cityid可以查到cityname
下表因爲語文和數學確定了,總分就確定了。所以設計不滿足第三範式
總結:表字段{A,B,C,D}
關聯關係:{A->BC,B->C,A->B,AB->C}
可拆分關係:A->B,A->C,B->C,A->B,AB->C
因爲A->C,所以AB->C可以不要,A->B重複,A可以關聯到B和C
可以得到最簡表:{A,D}
反三範式
當性能和規範化衝突的時候,性能更重要。比如統計大量學生各科分數及總分的時候,就是如下設計

BC範式(BCNF Boycee Codd Normal Form任何函數依賴(X->Y),X必須是候選鍵。意思是:任何屬性(包括非主屬性和主屬性)都不能被非主屬性所決定;BC範式要求主屬性不能依賴於非主屬性,這個也是第三範式和BC範式的主要區別,先拆分成3NF,再進行拆分

第四範式4NF消除多值依賴;如果屬性A依賴於B,屬性C也依賴於B,且屬性A和屬性C沒有依賴關係,但是造成了數據冗餘,可以把表ABC分爲BA,BC兩個表來消除冗餘數據
 
第五範式5NF 拆分表爲更小的表,每個小表不可再分,且每個小表都能夠通過候選鍵推導出來
一般建表滿足第三範式或者BC範式即可,第五範式被稱爲完美範式
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章