Mysql學習之路04 三大正規化

2021-08-08 15:51:46 字數 1999 閱讀 1433

第一正規化

原子性。表的元組不可再拆分成更小的元組。

第二正規化

非主鍵必須完全依賴主鍵,而不是僅僅依賴主鍵的一部分。

舉個例子,美國銷售軍火的時候,對每一樣**,根據國家或地區的不同而給出不同的**。建個表看看:

create

table weapon_price

( wp_id unsigned int

notnull auto_increment, -- **編號

cs_id unsigned int

notnull , -- 消費者 id

wp_price unsigned int

notnull, -- ****, 根據**買主的不同而不同

cs_name varchar(40) not

null -- 消費者的稱呼,例如 台灣/菲律賓/南韓

);

weapon_price 用於描述**的**,**根據(**,消費者)的不同而不同。對於此表 (wp_id,cs_id) 是其主鍵。其中 wp_price 是完全依賴於 (wp_id,cs_id) 的,而 cs_name 則只依賴於 cs_id ,即只依賴於主鍵的一部分。

這種情況導致的問題是什麼呢?

增:造成冗餘。cs_name 重複出現,如果有許多**的買主都是台灣,那麼 cs_name 就會在這張表中出現很多次,造成浪費。

刪:無

改:假如」菲律賓」後來改名了,那麼資料庫管理者不得不把表中所有 相關的 cs_name 全都改一遍。

查:無第三正規化

滿足第二正規化並且每個元組都不傳遞依賴於主鍵列。

create

table province

( pr_id unsigned int

notnull auto_increment, -- 主鍵

pr_name varchar(20) not

null, -- 省份名, 完全依賴於主鍵, pr_id 定了, pr_name 就定了

primary

key(pr_id)

);create

table city

( ct_id unsigned int

notnull auto_increment, -- 主鍵

ct_name varchar(20) not

null, -- 完全依賴於主鍵,ct_id 定了,ct_name 就定了

pr_id unsigned int

notnull , -- 完全依賴於主鍵,ct_id 定了,就可以確定 pr_id

pr_name varchar(20) not

null, -- 完全依賴於主鍵,ct_id 定了,就可以確定 pr_name

primary

key(ct_id),

foreign

key(pr_id) references province(pr_id) on

delete

cascade

);

上述的這兩張表都滿足第二正規化,不過,注意到 city 表中的 pr_name 元組雖然完全依賴於 ct_id , 但是它是通過 pr_id 傳遞依賴於 ct_id 的。

傳遞依賴的壞處:

增:明顯 pr_name 出現冗餘。

刪:無

改:改動 province 表的 pr_name 元組,也要同時修改 city 表中的 pr_name 。一不小心就出問題。

查:無反三正規化

沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,提高讀效能,就必須降低正規化標準,適當保留冗餘資料。具體做法是: 在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加字段,減少了查詢時的關聯,提高查詢效率,因為在資料庫的操作中查詢的比例要遠遠大於dml的比例。但是反正規化化一定要適度,並且在原本已滿足三正規化的基礎上再做調整的。

mysql正規化學習 Mysql三大正規化

據庫設計正規化 什麼是正規化 簡言之就是,資料庫設計對資料的儲存效能,還有開發人員對資料的操作都有莫大的關係。所以建立科學的,規範的的資料庫是需要滿足一些 規範的來優化資料資料儲存方式。在關係型資料庫中這些規範就可以稱為正規化。什麼是三大正規化 第一正規化 當關係模式r的所有屬性都不能在分解為更基本...

mysql三大正規化 MySQL學習筆記

1 資料庫結構設計 1 總 總體流程圖 2 分 提取屬性 業務分析評價的屬性 3 分 屬性 物件 邏輯設計 1 寬表設計模式 存在資料冗餘問題 寬表設計模式 2 資料庫三大正規化 解決資料冗餘問題 資料庫三大正規化 3 反正規化設計 空間換時間 主要針對關聯表進行反正規化化設計2 資料庫物理設計 1...

MYSQL三大正規化

第一正規化 確保每列的原子性.如果每列 或者每個屬性 都是不可再分的最小資料單元 也稱為最小的原子單元 則滿足第一正規化.例如 顧客表 姓名 編號 位址 其中 位址 列還可以細分為國家 省 市 區等。第二正規化 在第一正規化的基礎上更進一層,目標是確保表中的每列都和主鍵相關.如果乙個關係滿足第一正規...