三範式:
爲了創建冗餘較小、結構合理的數據庫,設計數據庫時必須遵循必定的規則。在關係型數據庫中這種規則就稱爲範式。數據庫
範式是符合某一種設計要求的總結。要想設計一個結構合理的關係型數據庫,必須知足必定的範式。數據庫設計
知足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步知足更多規範要求的稱爲第二範式(2NF) , 其他範式以此類推。通常說來,數據庫只需知足第三範式(3NF)就好了。性能
三範式就是空間最省原則。設計
1NF:
原子性, 作到列不可拆分。class
第一範式是最基本的範式。數據庫表裏面字段都是單一屬性的,不可再分, 若是數據表中每一個字段都是不可再分的最小數據單元,則知足第一範式。基礎
2NF:
在第一範式的基礎上更進一步,目標是確保表中的每列都和主鍵相關。總結
一張表只能描述一件事。數據
3NF:
消除傳遞依賴。關係型數據庫
表的信息,若是可以被推導出來,就不該該單獨的設計一個字段來存放。查詢
反三範式:
反範式化指的是經過增長冗餘或重複的數據來提升數據庫的性能(主要是讀性能)。
浪費存儲空間,節省查詢時間 (以空間換時間)。
冗餘字段:
設計數據庫時,某一個字段屬於一張表,但它同時出如今另外一個或多個表,且徹底等同於它在其本 來所屬表的意義表示,那麼這個字段就是一個冗餘字段。
總結:
建立一個關係型數據庫設計,咱們有兩種選擇:
1.儘可能遵循範式理論的規約,儘量少的冗餘字段,讓數據庫設計看起來精緻、優雅、讓人心醉。
2.合理的加入冗餘字段這個潤滑劑,減小join,讓數據庫執行性能更高更快。