為什么需要數據規范化?
* 信息重復
* 更新異常
* 插入異常(無法正常顯示信息)
* 刪除異常 (丟失有效的信息)
第一范式:數據庫表中的所有字段值都是不可分解的原子值。
舉例說明:
在上面表中 家庭信息和學歷信息不滿足原子性要求,不滿足第一范式,進行調整如下

第二范式:滿足第一范式,需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(每張表只描述一件事情)
舉例說明:
在上述表中,同一個訂單號可以包括不同產品號,因此主鍵必須是“訂單號”、“產品號”聯合組成。
但可以發現 產品號、產品數量、產品價格與“訂單號”、“產品號”都相關,但是訂單金額 訂單時間、訂單人僅與訂單號相關,與“產品號”無關
因此不滿足第二范式要求進行調整如下分成兩張表:
第三范式:滿足第二范式前提下,需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關(消除傳遞依賴)
舉例說明:
上表所有屬性完全依賴於學號,滿足第二范式,但是“班主任性別”、“班主任年齡”直接依賴於“班主任姓名”,並非主鍵“學號”
進行調整如下:
調整之后滿足第三范式
數據庫三大范式總結:(規范數據庫設計)
規范性 和性能問題
關聯表不得超過三張表
1、考慮商業化需求和目標,(成本、用戶體驗)數據庫與性能更加重要
2、在規范性能得問題的時候,需要適當考慮 規范性
3、故意給某些表增加一些冗余長字段。(從多表查變為單表差查)
4、故意增加一些計算列(從大數據降低為小數據,索引:)