資料庫的三大設計正規化

2021-10-07 07:06:25 字數 1923 閱讀 2654

關係模式r的所有屬性都不能再分,叫屬性不可分,也叫列不可分。

比如不能設計「張三是男」,應該分為兩個屬性姓名和性別/

滿足第一正規化,並r的所有非『『主鍵屬性都完全依賴於主鍵。(其他列必須完全依賴於主鍵列,如果出現不完全依賴,只可能傳送再聯合主鍵的情況)

-- 訂單表

create

table myorder (

product_id int

, customer_id int

, product_name varchar(20

),customer_name varchar(20

),primary

key(product_id, customer_id)

);

實際上,在這張訂單表中,product_name只依賴於product_idcustomer_name只依賴於customer_id。也就是說,product_namecustomer_id是沒用關係的,customer_nameproduct_id也是沒有關係的

這樣就不滿足第二正規化:其他列都必須完全依賴於主鍵列

create

table myorder (

order_id int

primary

key,

product_id int

, customer_id int);

create

table product (

id int

primary

key,

name varchar(20

));create

table customer (

id int

primary

key,

name varchar(20

));

拆分之後,myorder表中的product_idcustomer_id完全依賴於order_id主鍵,而productcustomer表中的其他欄位又完全依賴於主鍵。滿足了第二正規化的設計!

除了主鍵列之外,其他列之間不能有傳遞依賴關係。

create

table myorder (

order_id int

primary

key,

product_id int

, customer_id int

, customer_phone varchar(15

));

表中的customer_phone有可能依賴於order_idcustomer_id兩列,也就不滿足了第三正規化的設計:其他列之間不能有傳遞依賴關係。

create

table myorder (

order_id int

primary

key,

product_id int

, customer_id int);

create

table customer (

id int

primary

key,

name varchar(20

),phone varchar(15

));

修改後就不存在其他列之間的傳遞依賴關係,其他列都只依賴於主鍵列,滿足了第三正規化的設計!

資料庫設計三大正規化資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...