資料庫精講 資料庫的三大正規化與五大約束

2021-09-29 20:41:56 字數 1911 閱讀 4934

正規化英文 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 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...