數據庫範式

一.什麼是範式?

1.範式是一種離散數學的知識,是爲了解決數據存儲和優化的問題,保存數據的存儲以後,凡是能經過關係尋找出來的數據,堅定再也不重複存儲:終極目標是減小數據的冗餘(以最少的數據完成最大的存儲)
2.範式是一種分層結構的規範
分爲6層,1NF,2NF..6NF(6NF最高層,最嚴格)
每一層都比上一層更加嚴格,若要知足下一層範式,前提是要知足上一層範式.數據庫

二.爲何範式等級不是越高越好?

範式只是爲了解決空間問題,而數據庫不單是要解決空間問題,還要解決效率問題,因此數據庫的設計不能徹底按照範式要求實現,通常狀況下只有前三種範式要知足優化

三.前三種範式

(1).第一範式(1NF)

第一範式:第一範式要求數據具備原子性spa

clipboard.png

如上表中的代課時間,當須要取代課的開始時間,須要將字段拆分,不知足第一範式。解決方案是單獨兩個字段存儲開始時間和結束時間設計

(2).第二範式(2NF)

第二範式:表中不容許出現部分依賴
出現部分依賴的緣由是由於出現了複合主鍵,以下表中的講師和班級才能組合成一個主鍵,但性別只依賴於講師,教室只依賴於班級,出現了部分依賴
解決方案是使用邏輯主鍵(增長一個id作主鍵)3d

clipboard.png

(3)第三範式(3NF)

第三範式:不容許出現傳遞依賴blog

下表中性別依賴講師,講師依賴主鍵。教室依賴班級,班級依賴主鍵。因此,教室和性別都存在傳遞依賴ip

clipboard.png

解決方案:將存在依賴的字段取出,造成一個單獨的表數學

clipboard.png

注意:
永遠不要將邏輯主鍵看做是真正的主鍵,好比講師表中,真正的主鍵是講師,若是把id當成真正的主鍵,永遠會有依賴傳遞
而上面存在依賴傳遞的表中,真正的主鍵是(講師+班級),因此纔會存在性別依賴講師,講師依賴主鍵(id=講師+班級)這種傳遞依賴it

四.逆規範化

規範化程度較高的時候,咱們可能須要作不少的關聯查詢,這樣勢必會致使效率的下降。因此有時設計表時,直接存儲想要的信息,而不去存儲id進行關聯查詢。這是一種磁盤利用率於效率的對抗class

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息