12.三範式和反三範式

三範式:

爲了創建冗餘較小、結構合理的數據庫,設計數據庫時必須遵循必定的規則。在關係型數據庫中這種規則就稱爲範式。數據庫

範式是符合某一種設計要求的總結。要想設計一個結構合理的關係型數據庫,必須知足必定的範式。數據庫設計

知足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步知足更多規範要求的稱爲第二範式(2NF) , 其他範式以此類推。通常說來,數據庫只需知足第三範式(3NF)就好了。性能

三範式就是空間最省原則。設計

1NF:

原子性, 作到列不可拆分。class

第一範式是最基本的範式。數據庫表裏面字段都是單一屬性的,不可再分, 若是數據表中每一個字段都是不可再分的最小數據單元,則知足第一範式。基礎

2NF:

在第一範式的基礎上更進一步,目標是確保表中的每列都和主鍵相關。總結

一張表只能描述一件事。數據

3NF:

消除傳遞依賴。關係型數據庫

表的信息,若是可以被推導出來,就不該該單獨的設計一個字段來存放。查詢

反三範式:

反範式化指的是經過增長冗餘或重複的數據來提升數據庫的性能(主要是讀性能)。

浪費存儲空間,節省查詢時間 (以空間換時間)。

冗餘字段:

設計數據庫時,某一個字段屬於一張表,但它同時出如今另外一個或多個表,且徹底等同於它在其本 來所屬表的意義表示,那麼這個字段就是一個冗餘字段。

總結:

建立一個關係型數據庫設計,咱們有兩種選擇:

1.儘可能遵循範式理論的規約,儘量少的冗餘字段,讓數據庫設計看起來精緻、優雅、讓人心醉。

2.合理的加入冗餘字段這個潤滑劑,減小join,讓數據庫執行性能更高更快。

相關文章
相關標籤/搜索