資料庫第六章
- 關係資料理論
一:關係模式由五部分組成,是一個五元組: R(U, D, DOM, F)
關係名R是符號化的元組語義
U為一組屬性
D為屬性組U中的屬性所來自的域
DOM為屬性到域的對映
F為屬性組U上的一組資料依賴
二:一對一聯絡
設X,Y為關係中的屬性或屬性組,它們的所有可能取值組成兩個集合。如果對於X中的任一具體值Y中至多有一個值與之對應,稱X,Y這兩個屬性之間是一對一聯絡
三:多對多聯絡
在X,Y兩個屬性值集中,如果任一個值都可以至多和另一個屬性值集中多個值對應,反之亦然,則稱屬性X和Y是m:n關係。
四:資料依賴
是一個關係內部屬性與屬性之間的一種約束關係
通過屬性間值的相等與否體現出來的資料間相互聯絡
是現實世界屬性間相互聯絡的抽象
是資料內在的性質
是語義的體現
五:資料依賴的主要型別
函式依賴(Functional Dependency,簡記為FD)
多值依賴(Multi-Valued Dependency,簡記為MVD)
六:關係模式Student<U, F>中存在的問題:
(1)資料冗餘
浪費大量的儲存空間
每一個系主任的姓名重複出現,重複次數與該系所有學生的所有課程成績出現次數相同。
(2)更新異常(Update Anomalies)
資料冗餘 ,更新資料時,維護資料完整性代價大。
某系更換系主任後,必須修改與該系學生有關的每一個元組。
(3)插入異常(Insertion Anomalies)
如果一個系剛成立,尚無學生,則無法把這個系及其系主任的資訊存入資料庫。
(4)刪除異常(Deletion Anomalies)
如果某個系的學生全部畢業了, 則在刪除該系學生資訊的同時,把這個系及其系主任的資訊也丟掉了。
七:規範化
規範化理論正是用來改造關係模式,通過分解關係模式來消除其中不合適的資料依賴,以解決插入異常、刪除異常、更新異常和資料冗餘問題。
1.函式依賴
函式依賴
平凡函式依賴與非平凡函式依賴
完全函式依賴與部分函式依賴
傳遞函式依賴
2:碼
定義6.4 設K為R<U,F>中的屬性或屬性組合。若K → U,則K稱為R的一個候選碼(Candidate Key)。
如果U部分函式依賴於K,即K → U,則K稱為超碼 (Surpkey)。候選碼是最小的超碼,即K的任意一個真子集都不是候選碼。
若關係模式R有多個候選碼,則選定其中的一個做為主碼(Primary key)。
定義6.5 關係模式 R中屬性或屬性組X 並非 R的碼,但 X 是另一個關係模式的碼,則稱 X 是R 的外部碼(Foreign key)也稱外碼。
SC(Sno,Cno,Grade)中,Sno不是碼
Sno是 S(Sno,Sdept,Sage)的碼,則Sno是SC的外碼
主碼與外部碼一起提供了表示關係間聯絡的手段
3:正規化
正規化是符合某一種級別的關係模式的集合。
關係資料庫中的關係必須滿足一定的要求。滿足 不同程度要求的為不同正規化。
正規化的種類:第一正規化(1NF) 第二正規化(2NF) 第三正規化(3NF) BC正規化(BCNF)
第四正規化(4NF) 第五正規化(5NF)
4:2NF
若關係模式R∈1NF,並且每一個非主屬性都完全函式依賴於任何一個候選碼,則R∈2NF
一個關係模式不屬於2NF,會產生以下問題:
插入異常
如果插入一個新學生,但該生未選課,即該生無Cno,由於插入元組時,必須給定碼值,因此插入失敗。
刪除異常
如果S4只選了一門課C3,現在他不再選這門課,則刪除C3後,整個元組的其他資訊也被刪除了。
修改複雜
如果一個學生選了多門課,則Sdept,Sloc被儲存了多次。如果該生轉系,則需要修改所有相關的Sdept和Sloc,造成修改的複雜化。
出現這種問題的原因
例子中有兩類非主屬性:
一類如Grade,它對碼完全函式依賴
另一類如Sdept、Sloc,它們對碼不是完全函式依賴
解決方法:
用投影分解把關係模式S-L-C分解成兩個關係模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)
5:設關係模式R<U,F>∈1NF,若R中不存在這樣的碼X、屬性組Y及非主屬性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,則稱R<U,F> ∈ 3NF。
SC沒有傳遞依賴,因此SC ∈ 3NF
不良特性
插入異常:如果系中沒有學生,則有關係的資訊就無法插入。
刪除異常:如果學生全部畢業了,則在刪除學生資訊的同時有關係的資訊也隨之刪除了。
更新異常:如果學生轉系,不但要修改SDept,還要修改Sloc,如果換Sloc,則該系每個學生元組都要做相應修改。
資料冗餘:每個學生都儲存了所在系的Sloc的資訊。
解決方法
採用投影分解法,把S-L分解為兩個關係模式,以消除傳遞函式依賴:
S-D(Sno, Sdept)
D-L(Sdept,Sloc)
S-D的碼為Sno, D-L的碼為Sdept。
分解後的關係模式S-D與D-L中不再存在傳遞依賴
6:BCNF
BCNF(Boyce Codd Normal Form)由Boyce和Codd提出,比3NF更進了一步。通常認為BCNF是修正的第三正規化,有時也稱為擴充的第三正規化。
定義6.8 設關係模式R<U,F>∈1NF,若X →Y且Y ⊆ X時X必含有碼,則R<U,F>∈BCNF。
換言之,在關係模式R<U,F>中,如果每一個決定屬性集都包含候選碼,則R∈BCNF。
7:多值依賴
設R(U)是屬性集U上的一個關係模式。X,Y,Z是U的子集,並且Z=U-X-Y。關係模式R(U)中多值依賴X→→Y成立,當且僅當對R(U)的任一關係r,給定的一對(x,z)值,有一組Y的值,這組值僅僅決定於x值而與z值無關。
8:4NF
關係模式R<U,F>∈1NF,如果對於R的每個非平凡多值依賴X→→Y(Y ⊈ X),X都含有碼,則R<U,F>∈4NF。
不允許有非平凡且非函式依賴的多值依賴。
允許的非平凡多值依賴實際上是函式依賴。
八:在關係資料庫中,對關係模式的基本要求是滿足第一正規化。
規範化程度過低的關係不一定能夠很好地描述現實世界
可能存在插入異常、刪除異常、修改複雜、資料冗餘等問題
解決方法就是對其進行規範化,轉換成高階正規化。
九:資料依賴的公理系統
對於滿足一組函式依賴F的關係模式 R <U,F>,其任何一個關係r,若函式依賴X→Y都成立(即r中任意兩元組t、s,若t[X]=s[X],則 t[Y]=s[Y]),則稱F邏輯蘊涵X →Y。
十:演算法:
令ai =|X(i)|,{ai }形成一個步長大於1的嚴格遞增的序列,序列的上界是 | U |,因此該演算法最多 |U| - |X| 次迴圈就
會終止。
由引理二,判定X®Y是否能由F根據Armstrong公理匯出,可轉化為求 ,判定YÍ 是否成立。
輸入:X,F
輸出:
1) := X;
2)考察每個F中的函式依賴 A®B,
若 A Í ,則 := ÈB
3)繼續考察,直到 不再增大為止。