1. 程式人生 > >資料庫第六章

資料庫第六章

  •   關係資料理論

一:關係模式由五部分組成,是一個五元組:  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)繼續考察,直到     不再增大為止。