1. 程式人生 > >資料庫——設計關係模式要用的概念

資料庫——設計關係模式要用的概念

函式依賴 閉包 自反 增廣 傳遞 正規化 關係模式的分解

來不及解釋了,快上車!!~~~

函式依賴

1.函式依賴(FD)是關係模式內最常見的資料依賴,屬於語義範疇的概念
2. 函式依賴定義為:設R(U)是屬性集U上的關係模式。X,Y是U的子集,若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則成X函式確定Y或者Y函式依賴與X, 記作:X→Y。
3. 平凡的函式依賴:如果X→Y,但Y∈X,則稱X→Y是平凡的函式依賴
4. 非平凡的函式依賴:如果X→Y,但Y∉X,則稱X→Y是非平凡的函式依賴。通常情況下總是討論非平凡的函式依賴
5. 完全函式依賴:在R(U)中,如果X→Y,並且對於x的任何一個真子集X’,都有X´不能決定Y,則稱Y對X完全函式依賴,記作:X-f->Y (f即 full)
6. 部分函式依賴:在R(U)中,如果X→Y,但Y不完全函式依賴於X,則稱Y對X部分函式依賴,記作:X-p->Y (p即part) 部分函式依賴也稱為區域性函式依賴
7. 傳遞依賴:在R(U,F)中,如果X→Y,Y∉X,Y→Z,Y不完全函式依賴於X,則稱Z對X傳遞依賴
8. 候選碼:設K為R(U,F)中屬性的組合,若K-f->U,且對於K的任何一個真子集K’,都有K’不能決定U,則K為R的候選碼(候選關鍵字)。若有多個候選碼,則選其中一個座位主碼(主鍵),包含在任何一個候選碼中的屬性稱之為主屬性,反之稱之為非主屬性

函式依賴的邏輯蘊涵

定義:設有關係模式R(U)及其函式依賴集F,如果對於R的任一個滿足F的關係r函式依賴X→Y都成立,則稱F邏輯蘊涵X→Y,或稱X→Y可以由F推出。

例:關係模式 R=(A,B,C),函式依賴集F={A→B,B→C}, F邏輯蘊涵A→C。
證:設u,v為r中任意兩個元組:
若A→C不成立,則有u[A]=v[A],而u[C]≠v[C]
而且A→B, B→C,知
u[A]=v[A], u[B]=v[B], u[C]=v[C],
即若u[A]=v[A]則u[C]=v[C],和假設矛盾。
故F邏輯蘊涵A→C。
滿足F依賴集的所有元組都函式依賴X→Y(X→Y不屬於F集),則稱F邏輯蘊涵X→Y
(X→Y由F依賴集中所有依賴關係推斷而出)

Armstrong公理

1、定理:若U為關係模式R的屬性全集,F為U上的一組函式依賴,設X、Y、Z、W均為R的子集,對R(U,F)有:
F1(自反性):若X≥Y(表X包含Y),則X→Y為F所蘊涵;(F1’:X→X)
F2(增廣性): 若X→Y為F所蘊涵,則XZ→YZ為F所蘊涵;(F2’:XZ→Y)
F3(傳遞性): 若X→Y,Y→Z為F所蘊涵,則X→Z為F所蘊涵;
F4(偽增性):若X→Y,W≥Z(表W包含Z)為F所蘊涵,則XW→YZ為F所蘊涵;
F5(偽傳性): 若X→Y,YW→Z為F所蘊涵, 則XW→Z為F所蘊涵;
F6(合成性): 若X→Y,X→Z為F所蘊涵,則X→YZ為F所蘊涵;
F7(分解性): 若X→Y,Z≤Y (表Z包含於Y)為F所蘊涵,則X→Z為F所蘊涵。
函式依賴推理規則F1∽F7都是正確的。

2、Armstrong公理:
推理規則F1、F2、F3合稱Armstrong公理;
F4 ∽ F7可由F1、F2、F3推得,是Armstrong公理的推論部分。

函式依賴的閉包

 
定義:若F為關係模式R(U)的函式依賴集,我們把F以及所有被F邏輯蘊涵的函式依賴的集合稱為F的閉包,記為F+。
即:F+={X→Y|X→Y∈F∨“應用Armstong公理從F中匯出的任何X→Y”}

 △ F包含於F+,如果F=F+,則F為函式依賴的一個完備集。
 △ 規定:若X為U的子集,X→Φ 屬於F+。

  例:R=ABC,F={A→B, B→C}, 求F+
  解: F+ ={A→Φ,AB→Φ,AC→Φ,ABC→Φ,B→Φ,C→Φ,
            A→A,AB→A,AC→A,ABC→A,B→B,C→C,
            A→B,AB→B,AC→B,ABC→B,B→C,
            A→C,AB→C,AC→C,ABC→C,B→BC,
            A→AB,AB→AB,AC→AB,ABC→AB,BC→Φ,
            A→AC,AB→AC,AC→AC,ABC→AC,BC→B,
            A→BC,AB→BC,AC→BC,ABC→BC,BC→C,
            A→ABC,AB→ABC,AC→ABC,ABC→A,BC→BC}

   例:已知關係模式R中
       U={A,B,C,D, E, G},
       F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG},判斷BD→AC是否屬於F+

   解:由D→EG知D→E,BD→BE             … ①
       又知BE→C,C→A 所以BE→A, BE→AC … ②
       由①、②知,BD→AC,所以BD→AC被F所蘊涵,即BD→AC屬於F+

   例:已知關係模式R中
       U={A,B,C,E, H, P, G},
       F={AC→PE, PG→A, B→CE, A→P, GA→B, GC→A, PAB→G, AE→GB, ABCP→H},證明BG→HE屬於F+
    證:由B→CE知B→C,B→E, BG→GC         … ①
        又知GC→A,A→P 所以BG→A, BG→ABCP … ②
        又ABCP→H,由①、②知BG→HE,所以BG→HE被F所蘊涵,
        即BG→HE屬於F+

屬性集閉包

 
1、定義:若F為關係模式R(U)的函式依賴集,X是U的子集,則由Armstrong公理推匯出的所有X→Ai所形成的屬性集

例:設R=ABC,F={A→B, B→C}當X分別為A,B,C是求X+。
解:當X=A時,X+=ABC
當X=B時,X+=BC
當X=C時,X+=C
* X代表的屬性集可以決定的屬性集(包括本身)

2、定理:當且僅當Y屬於X+時,X→Y能根據Armstron公理由F匯出。
證:設Y=A1,A2,…,An
①充分條件:當Y屬於X+時,對於每個i,X→Ai可由公理匯出。
再用合併規則可得X→Y。
②必要條件:若X→Y能夠由公理匯出,則根據分解規,
X→Ai(i=1,2,…,n)成立,所以Y屬於X+。

3、計算X+
(1)演算法依據:若F為關係模式R(U)的函式依賴集,X,Z,W是U的子集,對於任意的Z→W∈F,若 X≥Z(表X包含Z),則X→XW。

(2)演算法:
a.令X+ = X;
b.在F中依次查詢每個沒有被標記的函式依賴,若“左邊屬性集”包含於X+ ,則令 X+ = X+∪“右邊屬性集”,為被訪問過的函式依賴設定訪問標記。
c.反覆執行b直到X+不改變為止。
(先令X+等於本身,然後在F+中依次查詢左邊包含於X+的屬性,把其右邊的對應屬性併到X中)

(3)演算法實現
輸入:關係模式R的子集X,R上的函式依賴集F。
輸出:X關於F的閉包X+

演算法偽語言描述:
Closure(X,F)
{
olds=Φ; news=X; G=F;
while (olds!=news)
{
olds=news;
for (G中的每個函式依賴W→Z)
{
if (news包含W)
{
news=news∪Z;
從G中刪除函式依賴W→Z;
}
}
}
return news;
}

例:已知關係模式R中
U={A,B,C,D, E, G},
F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG},
求(BD)+,判斷BD→AC是否屬於F+
解:X+=BDEGCA
結論:(BD)+=ABCDEG,BD→AC可由F匯出,即BD→AC屬於F+

例:已知關係模式R中
U={A,B,C,E, H, P, G},
F={AC→PE, PG→A, B→CE, A→P, GA→B,GC→A, PAB→G, AE→GB, ABCP→H},
證明BG→HE屬於F+
證:因為,(BG)+ =ABCEHPG,
所以BG→HE可由F匯出,即BG→HE屬於F+

4、結論
判定函式依賴X→Y是否能由F匯出的問題,可轉化為求X+並判定Y是否是X+子集的問題。
即求閉包問題可轉化為求屬性集問題。
判定給定函式依賴X→Y是否蘊涵於函式依賴集F演算法實現:

輸入:函式依賴集合F,函式依賴X→Y
輸出:若X→Y∈F+輸出真,否則輸出假

演算法偽語言描述:
number(F,X→Y)
{ if (Y包含於close(X,F))
return 真
else
return 假
}

{Ai|i=1,2,…}稱為X對於F的閉包,記為X+。

關係模式的分解

  1. 關係模式的分解有幾個不同的衡量標準:①分解具有無損連線;②分解要保持函式依賴;③分解既要保持函式依賴,又要具有無損連線
  2. 無損連線性判定定理:關係模式R分解為兩個關係模式R1和R2,滿足無損連線性的充分條件是R1∩R2→(R1-R2)或R1∩R2→(R2-R1)
  3. 保持函式依賴的定義是:若滿足(F1∪F2)+=F+,則分解保持函式依賴,其中Fi函式依賴集F在Ri上的投影
  4. 在泛關係模式R分解成資料庫模式ρ={R1,R2…Rk}時,泛關係r在ρ的每一模式Ri(1≤i≤n)上投影后再連線起來,比原來r中多出來的元組,稱為“寄生元組”或外元組。實際上,寄生元組表示錯誤的資訊
  5. 先存在r(泛關係)的情況下,再去談論分解,這是關係資料庫理論中著名的泛關係假設
    在無泛關係假設時,對兩個關係進行自然連線中被丟失的元組稱為懸掛元組
  6. 懸掛元組是造成兩個關係不存在泛關係的原因
  7. 模式分解的優點:①能消除資料冗餘和操作異常的現象;②在分解了的資料庫中可以儲存懸掛元組,儲存泛關係中無法儲存的資訊
  8. 模式分解的缺點:①分解以後,檢索操作需要做笛卡爾積或連結操作,這將付出時間代價;②在有泛關係假設時,對資料庫中的關係進行自然連線時,可能產生寄生元組(即損失了資訊);在無泛關係假設時,由於資料庫可能存在懸掛元組,因此有可能不存在泛關係
  9. 無損分解的測試方法。①輸入:關係模式R=(A1,A2…An),F是R上成立的函式依賴集,ρ={R1,R2…Rn}是R的一個分解;②輸出:判斷ρ相對於F是否具有無損分解特性。無損分解的測試演算法如下:
        1.構造一張k行n列的表格,每列對應一個屬性Aj(1≤j≤n),每行對應一個模式Rj(1≤i≤k)。如果Aj在Ri中,那麼在表格的第i行第j列處填上符號aj,否則填上bij。
        2.把表格看成模式R的一個關係,反覆檢查F中每個FD在表格中是否成立,若不成立,則修改表格中的值,修改方法為:對於F中一個函式依賴X→Y,如果表格中有兩行在X值上相等,在Y值上不相等,那麼把這兩行在Y值上也改成相等的值,如果Y值中一個是aj,那麼另一個也改成aj;如果沒有aj那麼用其中一個bij替換另一個字(儘量把下表ij改成較小的數)。一直到表格不能修改為止,這個過程成為chase(追蹤)過程
        3.若修改後的最後一直表格中有一方全是a,即a1,a2...an,則稱ρ相對於F是無損分解,否則稱為損失分解

10.如果某個分解能保持FD集,那麼在資料輸入或更新時,只要每個關係模式本身的FD約束被滿足,就可以確保整個資料庫中資料的語義完整性不受破壞
11.關係模式在分解時應保持等價,有資料等價和依賴等價兩種,分別用無損分解和保持依賴兩個特徵來衡量。
12.資料等價是指兩個資料庫例項贏表示同樣的資訊內容。如果是無損分解,那麼對泛關係反覆的投影和連線都不會丟失資訊
13.依賴等價是指兩個資料庫模式應有相同的依賴集閉包,在依賴集閉包相等的情況下,資料的語義是不會出差錯的

正規化

a.正規化是衡量關係模式優劣的標準,它表達了模式中資料依賴之間應滿足的聯絡
b.第一正規化(1NF):若關係模式R的每一個分量是不可分的資料項,則R∈1NF
c.2NF:若R∈1NF,且每一個非主屬性完全函式依賴於碼,則R屬於2NF。換言之,當1NF消除了非主屬性對碼的部分函式依賴時,則稱為2NF。典型有:捐贈資訊(捐贈編號。捐贈校友,捐贈時間,受益人身份證號,受益人姓名),其中捐贈編號和受益人身份證號是主鍵,但是存在” 捐贈編號→捐贈校友,捐贈時間“和”受益人身份證號→受益人姓名“的部分依賴,所以這個不是2NF
d.3NF:若R∈2NF,且每一個非主屬性既不部分依賴於碼,也不傳遞依賴於碼,則R∈3NF。換言之:當2NF消除了非主屬性對碼的部分函式傳遞時,稱為3NF。典型有:校友資訊(校友編號,姓名,工作單位,職位,院系,班級,入學年份,身份證號)班級為班級編號,包含院系編號,入學年份和專業方向編號。可以知道 校友編號應該是主鍵,同時身份證號也是該關係模式的決定性因素,因此他們都是候選鍵。由“班級→入學年份 ”和“校友編號→班級”,出現了“ 校友編號→入學年份”,雖然每一個非主屬性不部分依賴與碼,但是傳遞依賴與碼了,因此這不是3NF
e.BCNF:關係模式R∈1NF,若X→Y且Y∉X時,X必含碼,則R屬於BCNF。換言之,當3NF消除了主屬性對碼的部分和傳遞函式依賴時,則稱為BCNF。注意:BCNF是3NF消除主屬性的部分和傳遞函式依賴,2NF 1NF晉級是消除非主屬性的依賴
他們之間的相互關係是:1NF⊃2NF⊃3NF⊃BCNF
f.BCNF的關係模式都具有如下3個性質

1.所有非主屬性都完全函式依賴於每個候選碼
2.所有主屬性都完全函式依賴於每個不包含於他的候選碼
3.沒有任何屬性完全函式依賴於非碼的任何一組屬性
4.多值依賴MVD:設R(U)施屬性集U上的一個關係模式,X,Y是U的子集,若對R(U)的任一關係r,對於X的一個給定的值存在著Y的一組值與其對應,同時Y的這組值又不以任何方式與U-X-Y中的屬性相關,那麼稱Y多值依賴於X,記為X→→Y

e.4NF:關係模式R∈1NF,若對於R的每個非平凡多值依賴X→→Y且Y∉X時,X必含碼,則R∈4NF
對於4NF關係進行投影,消除原關係中不是由候選碼所蘊含的函式依賴,即可得到一組5NF關係,5NF是最終範

g.規範化理論提供了一套完整的模式分解演算法,按照這套演算法可以做到:

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

h.模式設計方法的原則:關係模式R相對於函式依賴集F分解成資料庫模式ρ={R1,R2,..Rn},一般應具有以下特性。

ρ中每個關係模式Ri是3NF或BCNF
保持無損連線
保持函式依賴集F
ρ中模式個數最少和屬性總數最少

i.一個好的模式設計方法應符合3條原則:表達性、分離性和最小冗餘性
j.表達性設計兩個資料庫模式的等價性問題,即資料等價和依賴等價,分別用無損連線和保持函式依賴性來衡量
k.分離性是指屬性間的”獨立聯絡“;應該用不同的關係模式表達
l.最小冗餘性要求在分解後的資料庫,能表達原來資料庫的所有資訊這個前提下實現
關係模式設計方法基本上可以分為分解與合成兩大類。

選自:

函式閉包