mysql正規化學習 Mysql學習筆記 7 正規化

2021-10-20 23:28:28 字數 1965 閱讀 4670

正規化

正規化,設計的越詳細,對於某些實際操作可能更好,但是不一定都是好處,在實際應用中,應當具體情況具體分析

資料依賴

資料依賴有三種型別

函式依賴

設r(u)是乙個屬性集u上的關係模式,x和y是u的子集,若對於r(u)的任意乙個可能的關係r,r中不可能存在兩個元組在x上的屬性值相等,而在y上的屬性值不等

則稱「x函式確定y」或「y函式依賴於x」,記作x→y,x成為這個函式依賴的決定屬性集

例:每個學校對應乙個校長,當學校確定時,校長也確定了,則稱「學校確定校長」,或者「校長依賴於學校」,記作學校→校長

平凡函式依賴

如果x→y,但是x不屬於y,則稱x→y是非平凡的函式依賴

如果x→y,但是x屬於y,則稱x→y是平凡的函式依賴

例:(學號,課程號)→ 成績 是非平凡函式依賴

(學號,課程號)→ 學號 是平凡函式依賴

(學號,課程號)→ 課程號 是平凡函式依賴

完全函式依賴

如果單獨乙個函式能決定乙個依賴,則稱該依賴為完全函式依賴,如果乙個函式的部分可以決定乙個依賴,則稱該依賴為部分函式依賴

例:學號→姓名 完全函式依賴

(學號,課程號)→ 姓名 部分函式依賴(學號自己就能決定姓名)

(學號,課程號)→ 成績 完全函式依賴(由學號和課程號共同決定成績)

傳遞函式依賴

如果x→y,y→z,且y不屬於x,y不決定x,則稱z傳遞函式依賴於x

如果y→x,即x←→y,則z直接依賴於x

第一正規化(1nf)

資料表中的字段都是不可分割的原子值

例如:中國四川省成都市武侯區武侯大道100號

這個位址可以拆分為國家、省、市等資訊,不滿足第一正規化的不可分割的要求,因此這個位址不滿足第一正規化

第二正規化(2nf)

必須在滿足第一正規化的前提下,第二正規化要求,除主鍵外的每一列都必須完全依賴於主鍵

如果要出現不完全依賴,只可能發生在聯合主鍵的情況下

通俗來說,主鍵必須能決定其他列(例:學校決定校長)

當出現除主鍵外的其他列,只依賴於主鍵的部分欄位時,將不滿足第二正規化

此時可以拆表

例:新建乙個訂單表

這個表使用了聯合主鍵(product_id,customer_id),但是product_name於customer都部分依賴於主鍵,因此不滿足第二正規化,此時應該將這個表拆開

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)

第三正規化(3nf)

必須先滿足第二正規化,除開主鍵列的其他列之間不能有傳遞依賴關係

例:create table myorder(

order_id int primary key,

product_id int,

customer_id int,

customer_phone varchar(15)

在這個例子中,customer_phone這個屬性就和customer_id、order_id之間存在傳遞依賴,因此不滿足第三正規化

應該將上述例子拆分

create table myorder(

order_id int primary key,

product_id int,

customer_id int

create teble customer(

id int primary key,

name varchar(20),

phone varchar(15)

這樣才滿足第三正規化

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

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

mysql 反正規化 mysql 正規化和反正規化

第一正規化 1nf 強調的是列的原子性,即列不能夠再分成其他幾列。第二正規化 2nf 首先是 2nf,另外包含兩部分內容一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。第三正規化 3nf 首先是 2nf,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。...

mysql三大正規化 MySQL學習筆記

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