為什麼要學習「正規化」?在設計資料庫時,資料庫開發人員的經驗非常重要!什麼是「正規化」?
但是全憑經驗會導致人為的不確定因素劇增。
如何將資料庫設計的過程上公升到一定的 「理論高度」呢?
資料庫開發人員有必要制定一套資料庫設計的「質量標準」。——正規化
設計資料庫時,有兩個不爭的事實:
冗餘的資料需要額外的維護,並且容易導致「資料不一致」
、「插入異常」
以及「刪除異常」
等問題的發生。
上述異常可以看作是「資料冗餘」的「併發症」;如何檢測和消除表中的冗餘資料呢?資料庫規範化;
規範化是通過最小化資料冗餘來提公升資料庫設計質量的過程,規範化是基於函式依賴以及一系列正規化定義的,最為常用的是第一正規化(1nf)
、第二正規化(2nf)
和第三正規化(3nf)
。
**函式依賴:**
一張表內兩個字段值之間的一一對應關係稱為函式依賴。
在乙個資料表中,欄位a的值能夠唯一確定欄位b的值,那麼欄位b函式依賴於欄位a。
第一正規化:如果一張表內同類欄位不重複出現,該錶就滿足第一正規化的要求。
一張表在滿足第一正規化的基礎上,每乙個非主屬性完全函式依賴於主碼,那麼該錶滿足第二正規化的要求。
第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言),也就是說在乙個資料庫表中,乙個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。
「非主屬性」 姓名、性別不僅函式依賴於聯合主鍵(學號和課程號),而且還函式依賴於學號。
同樣,「非主屬性」課程名不僅函式依賴於聯合主鍵(學號和課程號),而且還函式依賴於課程號。
第三正規化:如果一張表滿足第二正規化的要求,並且不存在「非主屬性」字段函式依賴於任何其他「非主屬性」字段,那麼該錶滿足第三正規化的要求。
第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。
如:「非主屬性」郵編函式依賴於「非主屬性」居住地;
第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。
見以往文章:
mysql資料庫實驗(四):e-r圖例項講解
mysql資料庫實驗(三):表記錄的檢索
mysql資料庫實驗(二):表的操作
mysql資料庫實驗(一):資料庫備份
mysql資料庫正規化
減小資料的冗餘性 提高效率 屬性的原子性,每列不可再分解 如 出生年月日 年 月 日 便於後續修改 記錄的惟一性,說明乙個事物 屬性必須完全依賴於主鍵,不能存在部分依賴 如 說明了三個事物 學生資訊 系資訊 課程資訊 存在的部分依賴 姓名對學號存在部分依賴 系名對學號存在部分依賴 系主任對學號存在部...
MySQL 資料庫正規化
目錄 1 資料庫正規化簡介 2 應用正規化優點 3 常見正規化簡述 1 第一正規化 1nf 2 第二正規化 2nf 3 第三正規化 3nf 4 bc正規化 bcnf 5 第四正規化 4nf 4 存在的問題 5 各正規化關係圖 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同...
mysql三正規化 MySQL資料庫三正規化
設計關係型資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關係型資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf 第四正規化 4nf 和第五正...