正規化英文 normal form,縮寫 nf,翻譯為 規範化形式,簡稱 正規化。
資料表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性,而不是集合。反例:
iduser_id
address
2019112178899
c6999001
xx省舟xx市xx區xx街道xx號
其中 address 可以再分為省、市、地區(縣)、街道、詳細位址,違反了第一正規化。
正例:
iduser_id
province
city
district
street
detail_address
2019112178899
c6999001
xx省xx市
xx區xx街道
xx號
根據業務需求合理使用行政區域
滿足1nf的基礎上,要求:表中的所有列,都必需依賴於主鍵,而不能有任何一列與主鍵沒有關係(乙個表只描述一件事情)。第二正規化消除表的無關資料。主鍵存在的意義就是唯一地標識表中的某一條記錄。如果某一列和該行記錄沒關係,也就沒必要存在。
反例:
user_id
province
city
district
street
weather
c6999001
xx省***市
xx區xx街道
xx號此表中,天氣和使用者沒啥關係,也就不存在依賴關係,所不符合 第二正規化。正確的做法應該刪除此列,如有其他需要可單獨存在一張表中。
滿足2nf的基礎上,任何非主屬性不依賴於其它非主屬性(在2nf基礎上消除傳遞依賴)(也表明不允許資料存在冗餘的現象)反例:
order_id
buyer_info_id
buyer_name
buyer_gender
buyer_age
order_status
201911200001
c666899
x某人男
20waitsellersend
上面是乙個訂單表,欄位從左至右以此是:訂單id、買家id、買家名稱、買家性別、買家年齡、訂單狀態。其中欄位buyer_name、buyer_gender、buyer_age 是依賴於字段 buyer_info_id,違反 第二正規化。
正例:
訂單表order_id
buyer_info_id
order_status
201911200001
c666899
waitsellersend
買家資訊表
buyer_info_id
buyer_name
buyer_gender
buyer_age
c666899
x某人男
20
唯一性,非空性
唯一性,可以空,但只能有乙個
對該列資料的範圍、格式的限制(如:年齡、性別等)
該資料的預設值
需要建立兩表間的關係
資料庫設計三大正規化資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
Oracle資料庫精講(三)
內連線 多張表通過相同字段進行匹配,只顯示匹配成功的資料。1.select from emp e,dept d where e.deptno d.deptno 2.select from emp e inner join dept d on e.deptno d.deptno 外連線 以左表為基準 ...
資料庫 資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...