數據庫系統概論——第六章 關係數據理論

數據庫系統概論——第六章 關係數據理論

(零)引言
基於某個數據庫管理系統設計數據庫,如何基於數據庫編程
第6章 關係數據理論
第7章 數據庫設計
第8章 數據庫編程

(一) 問題的提出

一、 關係數據庫邏輯設計
(1)針對具體問題,如何構造一個適合於它的數據模式
(2)數據庫邏輯設計的工具——關係數據庫的規範化理論

二、關係模式由五部分組成,是一個五元組:
R(U,D,DOM,F)
關係名R是符號化的元組語義
U爲一組屬性
D爲屬性組U中的屬性所來自的域
DOM爲屬性到域的映射
F爲屬性組U上的一組數據依賴
(1)當且僅當U上的一個關係r滿足F時,r稱爲關係模式R<U,F>的一個關係
(2)第一範式(1NF)
滿足:滿足每個分量必須是不可分開的數據項這個條件的關係模式。

三、 數據依賴
(1)定義:是一個關係內部屬性與屬性之間的一種約束關係(通過屬性間值的相等與否體現出來的數據間相互聯繫)
(2)數據依賴的主要類型
1)函數依賴(Functional Dependency ,簡稱FD)
2)多值依賴(Multi-Valued Dependency,簡記爲MVD)
(3)函數依賴普遍存在與現實中
Sname=f(Sno),Sdept=f(Sno)
即Sno函數決定Sname
Sno函數決定Sdept
記作Sno→Sname,Sno→Sdept

例子:

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
以上關係模式student<U,F>存在的問題
(1)數據冗餘
1)浪費大量的存儲空間
每一個系主任的姓名重複出現,重複次數與該系所有學生的所有課程成績出現次數相同。
(2)異常更新
1)數據冗餘 ,更新數據時,維護數據完整性代價大。
某系更換系主任後,必須修改與該系學生有關的每一個元組。
(2)插入異常
如果一個系剛成立,尚無學生,則無法把這個系及其系主任的信息存入數據庫。
(4)刪除異常
如果某個系的學生全部畢業了, 則在刪除該系學生信息的同時,把這個系及其系主任的信息也丟掉了。

在這裏插入圖片描述
把這個單一的模式分成三個關係模式:
S(Sno,Sdept,Sno → Sdept);
SC(Sno,Cno,Grade,(Sno,Cno) → Grade);
DEPT(Sdept,Mname,Sdept → Mname);

這三個模式都不會發生插入異常、刪除異常的問題,數據的冗餘也得到了控制。

(二)規範化(重點)

一、.函數依賴

1. 函數依賴
(1)定義6.1 設R(U)是一個屬性集U上的關係模式,X和Y是U的子集。若對於R(U)的任意一個可能的關係r,r 中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱“X函數確定Y”或“Y函數依賴於X”,記作X→Y。
(2)若X——>Y,則X稱爲這個函數依賴的決定因素

“就是對於任意關係r,只要X相等,Y就相等”
在這裏插入圖片描述


(3)函數依賴是語義範疇的概念,只能根據數據的語義來確定一個函數依賴。
例如“姓名→年齡”這個函數依賴只有在不允許有同名人的條件下成立

2. 平凡函數依賴與非平凡函數依賴


對於任一關係模式,平凡函數依賴都是必然成立的,它不反映新的語義。
若不特別聲明, 我們總是討論非平凡函數依賴。

3. 完全函數依賴與部分函數依賴
在這裏插入圖片描述
例子:
在這裏插入圖片描述
4. 傳遞函數依賴

二、碼

1、超碼、候選碼、主碼

若關係模式R有多個候選碼,則選定其中的一個做爲主碼(Primary key)

2. 主屬性與非主屬性
包含在任何一個候選碼中的屬性 ,稱爲主屬性 (Prime attribute)
不包含在任何碼中的屬性稱爲非主屬性(Nonprime attribute)或非碼屬性(Non-key attribute)

3. 全碼
整個屬性組是碼,稱爲全碼(All-key)

4. 外碼
定義6.5 關係模式 R中屬性或屬性組X 並非 R的碼,但 X 是另一個關係模式的碼,則稱 X 是R 的外部碼(Foreign key)也稱外碼。
SC(Sno,Cno,Grade)中,Sno不是碼
Sno是 S(Sno,Sdept,Sage)的碼,則Sno是SC的外碼

重點來了!!!!!!

三、範式
1. 定義:是符合某一種級別的關係模式的集合
2. 關係數據庫中的關係必須滿足一定的要求。滿足不同程度要求的爲不同範式。
3. 範式的種類
(1)第一範式(1NF)
(2)第二範式(2NF)
(3)第三範式(3NF)
(4)BC範式(BCNF)
(5)第四範式(4NF)
(6)第五範式(5NF)
4. 各種範式之間存在聯繫:
在這裏插入圖片描述
某一關係模式R爲第n範式,可簡記爲R∈nNF。
(1)規範化
一個低一級範式的關係模式,通過模式分解(schema decomposition)可以轉換爲若干個高一級範式的關係模式的集合,這種過程就叫規範化(normalization)。

5. 2NF
定義6.6 若關係模式R∈1NF,並且每一個非主屬性都完全函數依賴於任何一個候選碼,則R∈2NF
判斷步驟:
(1)判斷是否符合第一範式,即滿足每個分量必須是不可分開的數據項
(2)找出候選碼
(3)找出非主屬性
(4)寫出依賴
(5)判斷是否每一個非主屬性都完全函數依賴於任何一個候選碼

例如:S-L-C(Sno,Sdept,Sloc,Cno,Grade), Sloc爲學生的住處,並且每個系的學生住在同一個地方。
解答:
S-L-C的碼爲(Sno,Cno)。
非主屬性爲 Sdept,Sloc,Grade。
Sdept、Sloc 不完全依賴於(Sno,Cno)。
所以關係模式S-L-C不屬於2NF。

一個關係模式不屬於2NF,會產生以下問題:
(1)插入異常
如果插入一個新學生,但該生未選課,即該生無Cno,由於插入元組時,必須給定碼值,因此插入失敗。
(2)刪除異常
如果S4只選了一門課C3,現在他不再選這門課,則刪除C3後,整個元組的其他信息也被刪除了。
(3)修改複雜
如果一個學生選了多門課,則Sdept,Sloc被存儲了多次。如果該生轉系,則需要修改所有相關的Sdept和Sloc,造成修改的複雜化。

出現這種問題的原因
例子中有兩類非主屬性:
1)一類如Grade,它對碼完全函數依賴
2)另一類如Sdept、Sloc,它們對碼不是完全函數依賴

解決方法:
用投影分解把關係模式S-L-C分解成兩個關係模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)


SC的碼爲(Sno,Cno),SL的碼爲Sno,這樣使得非主屬性對碼都是完全函數依賴了

5. 3NF

“因此只要沒有傳遞依賴,那麼就一定屬於3NF範式。”
在這裏插入圖片描述
判斷步驟:
(1)找出碼
(2)寫出依賴
(3)判斷

3NF的“不徹底”性表現在可能存在主屬性對碼的部分依賴和傳遞依賴。

例如:

解決方法:
解決的辦法是將S-L分解成
S-D(Sno,Sdept)∈ 3NF
D-L(Sdept,Sloc)∈ 3NF

6. BCNF
BCNF比3NF更進了一步。通常認爲BCNF是修正的第三範式,有時也稱爲擴充的第三範式


“即,如果所有依賴的左邊必包含候選碼,則屬於BCNF範式”

(1)BCNF的關係模式所具有的性質
①所有非主屬性都完全函數依賴於每個候選碼
②所有主屬性都完全函數依賴於每個不包含它的候選碼
③沒有任何屬性完全函數依賴於非碼的任何一組屬性
(2)如果一個關係數據庫中的所有關係模式都屬於BCNF,那麼在函數依賴範疇內,它已實現了模式的徹底分解,達到了最高的規範化程度,消除了插入異常和刪除異常。

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述
對於不是BCNF的關係模式,仍然存在不合適的地方。
非BCNF的關係模式也可以通過分解成爲BCNF。例如STJ可分解爲ST(S,T)與TJ(T,J),它們都是BCNF。

3NF和BCNF是在函數依賴的條件下對模式分解所能達到的分離程度的測度。
一個模式中的關係模式如果都屬於BCNF,那麼在函數依賴範疇內,它已實現了徹底的分離,已消除了插入和刪除的異常。

7. 多值依賴


Teaching具有唯一候選碼(C,T,B), 即全碼。
Teaching∈BCNF

仍然存在問題
1)數據冗餘度大:有多少名任課教師,參考書就要存儲多少次。
2)增加操作複雜:當某一課程增加一名任課教師時,該課程有多少本參照書,就必須插入多少個元組。
3)刪除操作複雜:某一門課要去掉一本參考書,該課程有多少名教師,就必須刪除多少個元組。
4)修改操作複雜:某一門課要修改一本參考書,該課程有多少名教師,就必須修改多少個元組。

產生問題的原因:存在多值依賴

(1)定義6.9
設R(U)是屬性集U上的一個關係模式。X,Y,Z是U的子集,並且Z=U-X-Y。關係模式R(U)中多值依賴X→→Y成立,當且僅當對R(U)的任一關係r,給定的一對(x,z)值,有一組Y的值,這組值僅僅決定於x值而與z值無關。

(前提Z=U-X-Y ,對於X的每一個值,Y有一組值與之對應,這組值僅僅決定於x值而與z值無關。)

例 Teaching(C, T, B)
對於C的每一個值,T有一組值與之對應,而不論
B取何值。因此T多值依賴於C,即C→→T。

(2) 平凡多值依賴和非平凡的多值依賴
1)平凡多值依賴:
若X→→Y,而Z=Ф,即Z爲空,則稱X→→Y爲平凡的多值依賴。
2)非平凡的多值依賴:若X→→Y,Z不爲空,稱X→→Y爲非平凡的多值依賴。

(3)多值依賴的性質
1)多值依賴具有對稱性。
即若X→→Y,則X→→Z,其中Z=U-X-Y
多值依賴的對稱性可以用完全二分圖直觀地表示出來。
2)多值依賴具有傳遞性。即若X→→Y,Y→→Z, 則 X→→Z -Y。
3)函數依賴是多值依賴的特殊情況,即若X→Y,則
X→→Y。
4)若X→→Y,X→→Z,則X→→YZ。
5)若X→→Y,X→→Z,則X→→Y∩Z。
6)若X→→Y,X→→Z,則X→→Y-Z,X→→Z -Y。

(4)多值依賴與函數依賴的區別
1)多值依賴的有效性與屬性集的範圍有關

在這裏插入圖片描述

2)
在這裏插入圖片描述

8. 4NF

4NF就是限制關係模式的屬性之間不允許有非平凡且非函數依賴的多值依賴。4NF所允許的非平凡多值依賴實際上是函數依賴。

在[例6.10]的WSC中,W →→S, W→→C,他們都是非平凡多值依賴。而W不是碼,關係模式WSC的碼是(W,S,C),即All-key,因此WSC 不屬於4NF。

可以把WSC分解成WS(W,S),WC(W,C), WS∈4NF,WC∈4NF。

9. 小結
(1)在關係數據庫中,對關係模式的基本要求是滿足第一範式。
(2)規範化程度過低的關係不一定能夠很好地描述現實世界
可能存在插入異常、刪除異常、修改複雜、數據冗餘等問題
解決方法就是對其進行規範化,轉換成高級範式。
(3)一個低一級範式的關係模式,通過模式分解可以轉換爲若干個高一級範式的關係模式集合,這種過程就叫關係模式的規範化。
(4)關係數據庫的規範化理論是數據庫邏輯設計的工具。
(5)規範化的基本思想
1)是逐步消除數據依賴中不合適的部分,使模式中的各關係模式達到某種程度的“分離”。
2)即採用“一事一地”的模式設計原則
讓一個關係描述一個概念、一個實體或者實體間的一種聯繫。
若多於一個概念就把它“分離”出去。
3)因此 規範化實質上是概念的單一化。

(6)不能說規範化程度越高的關係模式就越好。
必須對現實世界的實際情況和用戶應用需求作進一步分析,確定一個合適的、能夠反映現實世界的模式。
上面的規範化步驟可以在其中任何一步終止。

(三)數據依賴的公理系統(重點)
1.在這裏插入圖片描述

2. Armstrong公理系統
設U爲屬性集總體,F是U上的一組函數依賴, 於是有關係模式R <U,F >。對R <U,F> 來說有以下的推理規則:
(1)自反律:若Y ⊆X ⊆ U,則X →Y 爲F所蘊涵。
(2)增廣律: 若X→Y爲F所蘊涵,且Z ⊆ U,則XZ→YZ 爲F所蘊涵。
(3)傳遞律:若X→Y及Y→Z爲F所蘊涵,則X→Z 爲F所蘊涵。
由自反律所得到的函數依賴均是平凡的函數依賴。

根據以上三條推理規則可以得到下面三條推理規則
(1)合併規則
由X→Y,X→Z,有X→YZ。
(2)僞傳遞規則
由X→Y,WY→Z,有XW→Z。
(3)分解規則
由X→Y及Z⊆Y,有X→Z。

F的閉包:在關係模式R<U,F>中爲F所邏輯蘊涵的函數依賴的全體叫作F的閉包,記爲F +。
屬性集X關於函數依賴集F的閉包

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
重點:判定X→Y是否能由F根據Armstrong公理導出的問題,就能轉化爲求出X關於依賴F的閉包,判定Y是否爲閉包的子集。

求閉包的算法:
已知:X,F
求:X關於F的閉包

定理6.2 Armstrong公理系統是有效的、完備的。(即既充分又必要)

如果G+=F+,就說函數依賴集F覆蓋G(F是G的覆蓋,或G是F的覆蓋),或F與G等價。

最小依賴集和最小覆蓋
如果函數依賴集F滿足下列條件,則稱F爲一個極小函數依賴集,亦稱爲最小依賴集或最小覆蓋。
(1)F中任一函數依賴的右部僅含有一個屬性。
(2)F中不存在這樣的函數依賴X→A, 使得F與
F-{X→A}等價。(即F中的函數依賴均不能由F中其他函數依賴導出)
(3)F中不存在這樣的函數依賴X→A, X有真
子集Z使得F-{X→A}∪{Z→A}與F等價。 (即F中各函數依賴左部均爲最小屬性集(不存在冗餘屬性))


定理6.3的證明過程
是求F極小依賴集的過程
也是檢驗F是否爲極小依賴集的一個算法
若改造後的F與原來的F相同,說明F就是一個最小依賴集

證明過程:
(1)逐一檢查F中各函數依賴FDi:X→Y,
若Y=A1A2 …Ak,k≥2,
則用{X→Aj | j=1,2,…,k}來取代X→Y。
(2)逐一檢查F中各函數依賴FDi:X→A,
令G=F-{X→A},
若A∈XG+,則從F中去掉此函數依賴。
(3)逐一取出F中各函數依賴FDi:X→A,
設X=B1B2…Bm,m≥2,
逐一考查Bi (i=1,2,…,m),
若A ∈(X-Bi )F+,則以X-Bi 取代X。

F的最小依賴集Fm不一定是唯一的,它與對各函數依賴FDi 及X→A中X各屬性的處置順序有關。

在R<U,F>中可以用與F等價的依賴集G來取代F

(五)小結

  1. 若要求分解具有無損連接性,那麼模式分解一定能夠達到4NF。
  2. 若要求分解保持函數依賴,那麼模式分解一定能夠達到3NF,但不一定能夠達到BCNF。
  3. 若分解既具有無損連接性,又保持函數依賴,則模式分解一定能夠達到3NF,但不一定能夠達到BCNF。

並不是規範化程度越高,模式就越好
必須結合應用環境和現實世界的具體情況合理地選擇數據庫模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章