資料庫複習11——關係模式與範式,資料庫複習11範式

來源:互聯網
上載者:User

資料庫複習11——關係模式與範式,資料庫複習11範式
資料庫複習CH11 關係模式與範式11.1 關係模式的設計

資料庫模式(Schema)是資料庫中全體資料的邏輯結構和特徵的描述,關係型資料庫的模式又叫關係模式,我所理解的關係模式就是資料庫中表結構的定義以及多張表之間的邏輯聯絡

關係模式的設計就是根據一個具體的應用,把現實世界中的關係用表的形式來表示的邏輯設計過程,不規範的關係模式設計會帶來以下的問題:

  • 資料冗餘
  • 更新異常
  • 插入異常
  • 刪除異常

舉ppt中例子說明四種問題,如下表中描述了老師資訊(一個老師一個地址,可以教多門課,一門課只有一名老師):

Tname Addr C#(PK) Cname
T1 A1 C1 N1
T1 A1 C2 N2
T1 A1 C3 N3
T2 A2 C4 N4
T2 A2 C5 N5
T3 A3 C6 N6

- 資料冗餘:T1老師的地址A1記錄了三次,冗餘
- 更新異常:更新了某個元組中T1老師的地址A1,其餘兩個沒有更新,DBMS不會檢測到不一致,這是邏輯上的不一致而非資料庫不一致
- 插入異常:無法插入一個還未帶課的新老師,因為無C#違反主鍵約束
- 刪除異常:T3老師不帶C6這門課了,刪除元組時卻把T3老師的個人資訊如地址等刪去

解決上述問題最簡單的方法是模式分解,將教師資訊和課程資訊獨立出來,下面是一種分解方式:

R(Tname,Addr,C#(PK),Cname)     =>     R1(Tname(CK), Addr)    R2(C#(PK), Cname, Tname(FK))

模式分解有一套正常化的分解標準,稱為範式(本章重點,見後續小節)

11.2 函數依賴

函數依賴(Functional Dependency,FD)是指一個關係模式中一個屬性集和另一個屬性集間的多對一關聯性,如選課關係SC(S#, C#, Score),給定(S#,C#)只有一個Score對應,不同(S#,C#)對應的Score值允許相等

(1)形式化定義

X、Y是關係模式R(U)屬性集U的子集,R(U)的執行個體r中的兩個元組t1、t2,若t1[X]==t2[X]可以匯出t1[Y]==t2[Y],則稱Y函數依賴於X,記作X→Y

同一個關係模式可以有不同的FD,FD和應用相關;FD是對現實世界的斷言,檢測FD正確性只能通過考察屬性的含義

形式化定義關係模式為R(U, D, dom, F)

  • R為關係模式名
  • U是一個屬性集
  • D是U中屬性的值所來自的域
  • Dom是屬性向域的映射集合
  • F是屬性間的依賴關係

關係模式設計就是尋求一個最小FD集T,一旦實現T則可以實現所有FD

(2)函數依賴的平凡性

若X→Y且Y是X的子集,則X→Y是平凡FD(子集必然依賴),否則是稱FD不平凡;平凡FD無實際意義,可以通過消除平凡FD來縮小FD集

(3)函數依賴閉包

函數依賴有以下推斷規則,稱為Armstrong公理:

  • 自反律:若B是A的子集,則A→B
  • 增廣律:若A→B,則AC→BC
  • 傳遞律:若A→B且B→C,則A→C
  • 自含律:A→A
  • 分解律:若A→BC,則A→B且A→C
  • 合并律:若A→B且A→C,則A→BC
  • 複合律:若A→B且C→D,則AC→BD

函數依賴集F邏輯蘊含的函數依賴的全體構成的集合稱為函數依賴F的閉包,記做F+,通過一系列推斷規則可以求得F的閉包並判斷某一函數依賴X→Y是否能夠由F推出(即判斷X→Y是否屬於F+)

(4)屬性閉包

判斷X→Y是否能夠由F推出就去構造F+計算量比較大,其實只需構造**屬性X的閉包**X+即可,X+是所有能夠用A推出的屬性集合(即函數依賴於A的屬性集合)

(5)最小函數依賴集

最小函數依賴集F必須滿足以下性質:

  • F的每個FD的右邊只有一個屬性
  • F不可約,即F中的每個X→Y,F-{X→Y}與F不等價
  • F的每個FD的左部不可約,即刪除任意FD左邊的任何一個屬性後的F’不等價於F

求某個函數依賴集的最小函數依賴集的步驟如下:

11.3 關係模式的分解

關係模式R(U)的一個分解p={Ri(Ui)}滿足U=∪{Ui},模式分解必須是無損串連並且需要保持函數依賴

(1)無損串連

無損串連是指:某關係模式的案例r按照關係模式分解成多個關係r1,…,rk,若r1,…,rk的自然串連(Join操作)等於r,則稱該模式分解是無損的

(2)測試無損串連

Chase方法能夠檢測完全的無損串連,設有n個屬性的模式R分解為k個模式Ri,有如下Chase過程:

當模式分解是簡單的二元分解時(即p={R1,R2}),p是無損串連的分解若且唯若下面FD之一成立:

  • R1和R2兩模式屬性的交集 → R1與R2兩模式屬性的差集
  • R1和R2兩模式屬性的交集 → R2與R1兩模式屬性的差集
(3)保持函數依賴

保持函數依賴是指關係模式R的FD集F在分解後仍在資料庫模式中保持不變,這是模式分解的第二個條件

形式化的定義分解後F在模式Ri上的投影為:

πRi(F)={X→Y|X→Y∈F+⋂X、Y⊂Ri}

若分解p滿足如下條件則稱p**保持函數依賴**:

(⋃i=1kπRi(F))+=F+

11.4 關係模式的範式

範式xNF即是滿足特定要求的模式,將低一級範式的關係模式通過模式分解轉換為高一級範式的關係模式集合的過程叫做正常化

範式從低級到進階依次為:1NF、2NF、3NF、BCNF、4NF、5NF,高一級的範式總是低一級範式的真子集

根據關係模式R的不可約FD集F,可以畫出節點是屬性或屬性集,邊是由被依賴節點指向依賴節點的有向圖來輔助分析關係模式,叫做函數依賴圖

註:複習時間關係ppt中範式的例子來不及整理了

(1)1NF

1NF要求關係模式R的每一個執行個體r均滿足:r中的每一個元組t的每一個屬性中只有一個值,這是關係模式的基本要求

不滿足1NF的關係模式有二義性!

(2)2NF

假定:R只有一個候選碼,且該候選碼為主碼

R∈1NF且R的每一個非主屬性(非候選碼的其他屬性)都完全函數依賴於主碼時,R∈2NF

A完全依賴於W是指:W→A且A不依賴於任何一個W的真子集X,W是主鍵也可能包括多個屬性{X、Y},非主屬性A不能局部函數依賴於X或Y

不滿足2NF的關係模式可能存在[插入異常、刪除異常、更新異常和資料冗餘],通過畫出函數依賴圖無損分解非2NF得到2NF,但2NF也不能完全消除上述問題

(3)3NF

假定:R只有一個候選碼,且該候選碼為主碼

R∈2NF且R的每一個非主屬性都不傳遞依賴於主碼時,R∈3NF

A傳遞依賴於Y則有:Y→X,X→A,並且Y不依賴於X(即Y不等於X)、A不是X的子集

不滿足3NF的關係模式也可能存在[插入異常、刪除異常、更新異常和資料冗餘],通過打破傳遞依賴鏈條,把關係模式分解成多個子關係模式

(4)BCNF

BCNF是3NF處理R有多個候選碼的擴充,當R有多個候選碼時即使R∈3NF,也可能出現[插入異常、刪除異常、更新異常和資料冗餘],這時需要分解為BCNF範式

如果關係模式R的所有不平凡的、完全的函數依賴的決定因素(左邊的屬性集)都是候選碼,則R∈BCNF

若要求保持函數依賴和無損聯結,則總可以達到3NF,但不一定滿足BCNF;因為BCNF可以達到無損串連,但不一定保持函數依賴

11.5 關係模式分解為範式的分解演算法(1)保持函數依賴地分解R到3NF

演算法步驟:

(2)無損串連且保持函數依賴地分解R到3NF

演算法步驟:

(3)無損聯結地分解R到BCNF

演算法步驟:

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.