什麼是正規化
正規化是指:設計資料庫表的規則(normal form) 好的資料庫設計對資料的儲存效能和後期的程式開發,都會產生重要的影響。建立科學的,規範的資料庫就需要滿足一些規則來優化資料的設計和儲存
正規化的基本分類
目前關聯式資料庫有六種正規化:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴斯-科德正規化(bcnf)、第四正規化(4nf)和第五正規化(5nf,又稱完美正規化)。滿足最低要求的正規化是第一正規化(1nf)。在第一正規化的基礎上進一步滿足更多規範要求的稱為第二正規化(2nf),其餘正規化以次類推。一般說來,資料庫只需滿足第三正規化(3nf)就行了。
第一正規化
即資料庫表的每一列都是不可分割的原子資料項,而不能是集合、陣列、記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化(1nf)表中每個列的值只能是表的乙個屬性或乙個屬性的一部分。簡而言之,第一正規化每一列不可再拆分,稱為原子性。
第二正規化
第二正規化(2nf)要求資料庫表中的每個例項或記錄必須可以被唯一地區分。選取乙個能區分每個實體的屬性或屬性組,作為實體的唯一標識。例如在員工表中的身份證號碼即可實現每個員工的區分,該身份證號碼即為候選鍵,任何乙個候選鍵都可以被選作主鍵。在找不到候選鍵時,可額外增加屬性以實現區分。 第二正規化(2nf)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性。如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成乙個新的實體,新實體與原實體之間是一對多的關係。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識。簡而言之,第二正規化就是在第一正規化的基礎上屬性完全依賴於主鍵。
簡單來說就是:
一張表只描述一件事情
表中的每乙個欄位都依賴於主鍵
第三正規化
在2nf基礎上,任何非主屬性不依賴於其它非主屬性(在2nf基礎上消除傳遞依賴) 滿足第三正規化(3nf)必須先滿足第二正規化(2nf)。簡而言之,第三正規化(3nf)要求乙個關係中不包含已在其它關係已包含的非主關鍵字資訊。
簡單來說就是:
從表的外來鍵必須使用主表的主鍵
不滿足三大正規化的問題
1、如果不遵守第一正規化,查詢出資料還需要進一步處理(查詢不方便)。遵守第一正規化,需要什麼欄位的資料就查詢什麼資料(方便查詢)。
2、如果不准守第二正規化,資料冗餘,相同資料無法區分。遵守第二正規化減少資料冗餘,通過主鍵區分相同資料。
3、如果不准守第三正規化,可能會有相同資料無法區分,修改資料的時候多張表都需要修改(不方便修改)。遵守第三正規化通過id可以區分相同資料,修改資料的時候只需要修改一張表(方便修改)。
資料庫設計三大正規化資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...