正規化
正規化,設計的越詳細,對於某些實際操作可能更好,但是不一定都是好處,在實際應用中,應當具體情況具體分析
資料依賴
資料依賴有三種型別
函式依賴
設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...