Chương 11: Phân rã lược đồ (Decomposition)

49
1 Chương 11: Phân rã lược đồ (Decomposition)

description

Chương 11: Phân rã lược đồ (Decomposition). Nội dung. Mục đích phân rã Định nghĩa phân rã Phân rã không mất thông tin Phân rã bảo toàn phụ thuộc Phân rã thành BCNF Phân rã thành 3NF Tìm phủ tối thiểu. Mục đích của phân rã lược đồ quan hệ. - PowerPoint PPT Presentation

Transcript of Chương 11: Phân rã lược đồ (Decomposition)

Page 1: Chương 11: Phân rã lược đồ (Decomposition)

1

Chương 11: Phân rã lược đồ(Decomposition)

Page 2: Chương 11: Phân rã lược đồ (Decomposition)

2

Nội dung

Mục đích phân rã Định nghĩa phân rã

Phân rã không mất thông tin Phân rã bảo toàn phụ thuộc

Phân rã thành BCNF Phân rã thành 3NF Tìm phủ tối thiểu

Page 3: Chương 11: Phân rã lược đồ (Decomposition)

3

Mục đích của phân rã lược đồ quan hệ

Được xem như 1 công cụ bổ sung vào phương pháp ER để loại trừ dư thừa dữ liệu

Công cụ chính dùng để phát triển lý thuyết phân rã là phụ thuộc hàm ( được xem như là sự khái quát hóa các ràng buộc chính)

Các FD được dùng để xác định các dang chuẩn lý thuyết phân rã còn được gọi là lý thuyết chuẩn hóa.

Page 4: Chương 11: Phân rã lược đồ (Decomposition)

4

Phân rã CSDL –Decomposition Phân rã 1 lược đồ R = (U,F) với U là tập các

thuộc tính, F là tập phụ thuộc hàm sẽ cho ra 1 tập hợp các lược đồR1 = (U1,F1) R2= (U2, F2)….

Rn = (Un,Fn)Sao cho thỏa mãn điều kiện sau:

U = F suy dẫn Fi với i = 1,..,n1

Uin

i

Page 5: Chương 11: Phân rã lược đồ (Decomposition)

5

Phân rã lược đồ –Decomposition Phân rã lược đồ sẽ dẫn đến việc phân rã

quan hệ. Phân rã 1 quan hệ r trên lược đồ R, cho ra 1

tập hợp các quan hệ

r1 = U1(r) r2 = U2(r),….

rn = Un(r)

Page 6: Chương 11: Phân rã lược đồ (Decomposition)

6

Phân rã không mất mát( Lossless decomposition) Khảo sát quan hệ r và các phân rã của nó r1,…, rn Sau phân rã, CSDL không còn lưu trữ quan hệ r

nữa mà chỉ lưu lại các quan hệ chiếu của nó r1,.. , rn. CSDL phải có khả năng khôi phục lại quan hệ gốc r từ các quan hệ chiếu này.

Nếu không khôi phục lại được quan hệ r thì việc phân rã không biểu diễn cùng 1 thông tin với CSDL gốc Phân rã mất mát (lossy decomposition)

Page 7: Chương 11: Phân rã lược đồ (Decomposition)

7

Phân rã không mất mát( Lossless decomposition) Phân rã lược đồ R = (U,F) thành 1 tập hợp các lược

đồ R1 = (U1,F1) R2= (U2, F2)….

Rn = (Un,Fn)

Không mất mát (lossless) nếu với mỗi điển hình (instance) hợp lệ r của lược đồ R thì

r = r1 r2 ….. rn

Với r1 = U1(r) r2 = U2(r),….

rn = Un(r)

Page 8: Chương 11: Phân rã lược đồ (Decomposition)

8

Phân rã không mất mát( Lossless decomposition) Thực tế sẽ nhận được nhiều bộ (tuple) từ phép kết

các r1, r2,…,rn hơn là các bộ gốc ban đầu Vậy tại sao lại gọi là mất mát (lossy)??

Tuy nhiều bộ hơn nhưng lại thiếu thông tin và không có cách nào biết được bộ nào là đúng, bộ nào là không đúng với bộ gốc.

Nhiều bộ hơn nhưng không đúng mất mát thông tin

Page 9: Chương 11: Phân rã lược đồ (Decomposition)

9

Phân rã nhị phân( Binary Decomposition) Cho lược đồ R = (U,F) và R1 = (U1,F1) , R2=

(U2, F2) là một phân rã nhị phân của R. Sự phân rã này không mất thông tin nếu và

chỉ nếu thỏa mãn một trong các điều kiện sau: (U1 U2) U1 F+

(U1 U2) U2 F+

Page 10: Chương 11: Phân rã lược đồ (Decomposition)

10

Ví dụ

Xét lược đồ quan hệPERSON(SSN, Name, Address,Hobby)

SSN Name Address Hobby1111111 John 123 Main St. Stamps1111111 John 123 Main St. Coins5556667 Mary 7 Lake Dr. Hiking5556667 Mary 7 Lake Dr. Skating9876543 Simpson Fox 5 TV Acting

Page 11: Chương 11: Phân rã lược đồ (Decomposition)

11

Ví dụ

Nếu phân rã lược đồ trên thành 2 lược đồ sau:PERSON1(SSN, Name, Address)HOBBY(SSN, Hobby)

Việc phân rã này có mất thông tin không??

Page 12: Chương 11: Phân rã lược đồ (Decomposition)

12

Ví dụ

Vì PERSON1 HOBBY = {SSN} mà SSN là khóa chính của PERSON1, do đó

PERSON1 HOBBY PERSON1Phân rã này không mất thông tin

Page 13: Chương 11: Phân rã lược đồ (Decomposition)

13

Phân rã bảo toàn phụ thuộc hàm(Dependency-Preseving Decomposition)

Khảo sát lược đồ quan hệ sau:HASACCOUNT(ClientId, OfficeId, AccountNumber)

Với các FD sau: ClientId, OfficeId AcountNumber AccountNumber OfficeId

Nếu phân rã lược đồ trên thành 2 lược đồ sau:ACCTOFFICE (AccountNumber, OfficeId)ACCTCLIENT (AccountNumber, ClientId)Phân rã trên có mất mát thông tin không???

Page 14: Chương 11: Phân rã lược đồ (Decomposition)

14

Phân rã bảo toàn phụ thuộc hàm

Phân rã trên không mất mát thông tin vì:ACCTOFFICE ACCTCLIENT ={AccountNumber}

Mà AccountNumber là khóa chính của ACCTOFFICE,nên

ACCTOFFICE ACCTCLIENT ACCTOFFICE

Nhưng phân rã này không bảo toàn phụ thuộc hàm

Page 15: Chương 11: Phân rã lược đồ (Decomposition)

15

Phân rã bảo toàn phụ thuộc hàm

Phụ thuộc hàm gốc ClientId, OfficeId AcountNumber (1) không tồn tại trong các phụ thuộc hàm của các lược đồ phân rã vì: Cả hai phụ thuộc hàm phân rã đều không chứa

đủ các thuộc tính của phụ thuộc hàm gốc (1) nên không thể suy diễn lại được phụ thuộc hàm này

Page 16: Chương 11: Phân rã lược đồ (Decomposition)

16

Phân rã bảo toàn phụ thuộc hàm

Cho lược đồ R = (U,F) và R1 = (U1,F1) , R2= (U2, F2),.., Rn= (Un, Fn) là phân rã của R.

Phân rã được gọi là bảo toàn phụ thuộc hàm nếu và chỉ nếu F và là tương đương nhau. 1

n

iFi

Page 17: Chương 11: Phân rã lược đồ (Decomposition)

17

Phân rã bảo toàn phụ thuộc hàm

Nếu 1 phụ thuộc hàm f F nhưng không thuộc bất kỳ Fi nào không có nghĩa là phân rã không bảo toàn phụ thuộc hàm nếu f có thể được suy diễn từ Chỉ khi nào f không suy diễn được từ thì

lúc đó phân rã mới không bảo toàn phụ thuộc để duy trì f đòi hỏi phải có kết nối các lược đồ phân rã trước, kiểm tra phụ thuộc hàm sau

1

n

iFi

1

n

iFi

Page 18: Chương 11: Phân rã lược đồ (Decomposition)

18

Ví dụ Phân rã quan hệ HASACCOUNT

AccountNumber ClientId OfficeIdB123 111111 SB01A908 123456 MN08

AccountNumber

OfficeId

B123 SB01A908 MN08

Account Number

ClientId

B123 111111

A908 123456

Page 19: Chương 11: Phân rã lược đồ (Decomposition)

19

Ví dụ HASACCOUNT và phân rã của nó sau khi chèn

thêm 1 hàngAccountNumber ClientId OfficeIdB123 111111 SB01B567 111111 SB01A908 123456 MN08

AccountNumber OfficeId

B123 SB01B567 SB01A908 MN08

Account Number ClientId

B123 111111

B567 111111

A908 123456

Sau khi join 2 lược đồ phân rã lại, phụ thuộc hàm ClientId, OfficeId ClientId, OfficeId AcountNumber bị vi phạm AcountNumber bị vi phạm

Page 20: Chương 11: Phân rã lược đồ (Decomposition)

20

Phép chiếu của tập phụ thuộc hàm

Khảo sát lược đồ R =(U,F), một quan hệ r trên R và 1 tập thuộc tính S U

Phép chiếu của tập F lên tập các thuộc tính S được định nghĩa như sau:

S(F)={XY|XY F+ and X Y S}

Page 21: Chương 11: Phân rã lược đồ (Decomposition)

21

Phân rã lược đồ quan hệ

2 tính chất của phân rã: Lossless ( không mất thông tin) Dependency-preserving (bảo toàn phụ thuộc

hàm) Tính chất nào quan trọng hơn??? Lossless là bắt buộc (mandatory) trong khi

dependency-preserving là tùy chọn (optional)

Page 22: Chương 11: Phân rã lược đồ (Decomposition)

22

Giải thuật phân rã BCNF

R=(U,F) là 1 lược đồ quan hệ không ở chuẩn BCNF.

Giải thuật: thực hiện lặp lại việc phân chia R thành những lược đồ nhỏ hơn sao cho các lược đồ mới có ít FD vi phạm BCNF hơn. Giải thuật kết thúc khi tất cả lược đồ kết quả đều ở dạng BCNF

Page 23: Chương 11: Phân rã lược đồ (Decomposition)

23

Giải thuật phân rã BCNF

Input R = (U,F)Decomposition = RWhile có lược đồ S= (V,F’) trong Decomposition

không phải BCNF/*Nếu có XY F sao cho X Y S và vi phạm BCNF, dùng FD này để phân rã*/ Thay S trong Decomposition với S1 = (XY, F1) S2=( (S-Y) X, F2) với F1,F2 là tất cả các FD của F’

EndReturn Decomposition

Page 24: Chương 11: Phân rã lược đồ (Decomposition)

24

Ví dụ

Cho R= (U,F), U={ABCDEFGH}, F= {ABH C, ADE, BGH F, F ADH, BH GE}

Tìm FD vi phạm BCNF (ABH)+ = U , ABH là siêu khóa, ABH C không vi phạm

BCNF A+ U, ADE vi phạm BCNF

Chia R thành R1 =(ADE, {ADE}) R2 = (ABCFGH,{ABHC, BGHF, F AH, BHG})

Page 25: Chương 11: Phân rã lược đồ (Decomposition)

25

Ví dụ

Sau khi phân rã, chú ý đến 2 phụ thuộc hàm gốc F ADH, BH GE Chia FADH thành {FAH, FD} Chia BHGE thành {BHG, BHE}

FD, BHE không có chỗ trong các phân rã mới (vì không có ràng buộc nào có đủ thuộc tính cho các FD này)

Nhưng FD có thể suy diễn từ FAH R2 và ADE R1 BH E có thể suy diễn được dựa vào (BH)+ từ R1,R2

Phân rã R1,R2 bảo toàn phụ thuộc hàm

Page 26: Chương 11: Phân rã lược đồ (Decomposition)

26

Ví dụ R1 là BCNF Với R2:

ABH C, BGH F không vi phạm BCNF (ABH, BGH đều là siêu khóa)

F AH vi phạm BCNF Phân rã R2 thành

R21=(FAH, {FAH}) R22= (FBCG, {})

R21, R22 đều là BCNF nhưng khi đó các FD ABH C, BGH F và BHG không có mặt nữa và cùng không thể suy dẫn được từ các FD của R21, R22 và R1

Phân rã R2 không bảo toàn phụ thuộc hàm

Page 27: Chương 11: Phân rã lược đồ (Decomposition)

27

Nhận xét

Việc phân rã R thành R1, R21, R22 không phải là duy nhất.

Nếu bắt đầu từ FD F ADH thì sẽ cóR1= (FADH; {F ADH})R2 = (FBCEG,{})

R1,R2 cũng ở chuẩn BCNF và 1 số FD gốc cũng bị mất, không thể suy diễn được

Page 28: Chương 11: Phân rã lược đồ (Decomposition)

28

Tính chất của giải thuật phân rã BCNF

Không mất mát thông tin Nhưng có thể không bảo toàn phụ thuộc hàm Là giải thuật không xác định

(nondeterministic), phụ thuộc vào thứ tự các FD được chọn để xét phân rã

Page 29: Chương 11: Phân rã lược đồ (Decomposition)

29

Phủ tối thiểu – Minimal cover

Cho 1 tập FD F. Phủ tối thiểu của F là 1 tập FD G có các tính chất sau: G tương đương với F Tất cả các FD trong G có dạng X A với A là 1

thuộc tính đơn Không thể làm cho G nhỏ hơn (mà vẫn còn thỏa

mãn 2 tính chất đầu) bằng một trong 2 cách sau: Xóa 1 FD Xóa 1 thuộc tính khỏi 1 FD

Page 30: Chương 11: Phân rã lược đồ (Decomposition)

30

Giải thuật tìm phủ tối thiểu Input: tập phụ thuộc hàm F Output: G là 1 phủ tối thiểu của F

Bước 1: G:=F, tất cả FD đều được biến đổi thành thuộc tính đơn bên phía phải

Bước 2: Xóa tất cả thuộc tính dư thừa khỏi phía trái của FD trong G

Bước 3: Xóa tất cả các FD dư thừa khỏi G

Return G

Page 31: Chương 11: Phân rã lược đồ (Decomposition)

31

Thuật toán để loại các FD có vế trái dư thừa Bước 1: lần lượt thực hiện bước 2 cho các

FD XY của F Bước 2: Với mỗi tập con thật sự X’ của

X. Nếu X'Y F+ thì thay XY trong F bằng X'Y, thực hiện lại bước 2

Page 32: Chương 11: Phân rã lược đồ (Decomposition)

32

Ví dụ

Cho tập thuộc tính ABCDEFGH, và tập phụ thuộc hàm FABHCADCEBGHFFADEFBHE

Page 33: Chương 11: Phân rã lược đồ (Decomposition)

33

Ví dụ (tt)

Bước 1: xác định G với tất cả các FD có vế phải thuộc tính đơnABHCADCEBGHFFAFDEFBHE

Page 34: Chương 11: Phân rã lược đồ (Decomposition)

34

Bước 2: Xóa tất cả thuộc tính dư thừa khỏi phía trái của FD trong GBHC (Loại bỏ A)ADCEBHF (Loại bỏ G)FAFDEFBHE

Page 35: Chương 11: Phân rã lược đồ (Decomposition)

35

Bước 3: Xóa tất cả các FD dư thừa khỏi GLoại bỏ các FD BHF, FD và BH EG còn lại các FD sau:

BHCADCEFAEF

Page 36: Chương 11: Phân rã lược đồ (Decomposition)

36

Giải thuật phân rã 3NFCho lược đồ R(U,F) Bước 1: Tìm phủ tối thiểu G của F Bước 2: Phân hoạch G thành các tập phụ thuộc

hàm G1,..,Gn sao cho mỗi Gi chứa các FD có cùng vế trái

Bước 3: với mỗi Gi, tạo 1 lược đồ (Ri, Gi) với Ri chứa tất cả thuộc tính có trong Gi

Bước 4: Nếu một trong các Ri là siêu khóa, nghĩa là (Ri)+F = R thì kết thúc, nếu không có Ri nào là siêu khóa thì đặt Ro=(R,{}) là 1 lược đồ mới. Khi đó R0, R1,…, Rn là kết quả phân rã

Page 37: Chương 11: Phân rã lược đồ (Decomposition)

37

Tính chất của giải thuật phân rã 3NF

Bảo toàn phụ thuộc hàm Không mất thông tin

Page 38: Chương 11: Phân rã lược đồ (Decomposition)

38

Ví dụ

Phủ tối thiểu G của tập F ví dụ trước:G={BHC,AD,CE,FA,EF} Phân rã thành 5 lược đồ:

(BHC; {BHC}) (AD; {AD}) (CE; {CE}) (FA; {FA}) (EF; {EF})

Không có lược đồ phân rã nào là siêu khóa BCGH, nên bổ sung thêm lược đồ thứ 6 (BCGH;{})

Page 39: Chương 11: Phân rã lược đồ (Decomposition)

39

Phân rã BCNF thông qua phân rã 3NF

Vì giải thuật phân rã BCNF có thể không bảo toàn phụ thuộc hàm nên phân rã BCNF thông qua phân rã 3NF. Nếu lược đồ sau phân rã là BCNF thì dừng, nếu không thì dùng lúc đó mới dùng giải thuật BCNF để phân rã tiếp

Page 40: Chương 11: Phân rã lược đồ (Decomposition)

40

Ví dụ

Xét tập thuộc tính sau: St (Student), C (course), Sem (semester), P (Professor), T (time) và R(room) và tập FD như sau:St C Sem PP Sem CC Sem T PP Sem T C RP Sem C T RP Sem T C

Page 41: Chương 11: Phân rã lược đồ (Decomposition)

41

Tìm phủ tối thiểu của F

Bước 1: Tách vế phải thành các thuộc tính đơnSt C Sem PP Sem CC Sem T PP Sem T C P Sem T RP Sem C T RP Sem T C

Page 42: Chương 11: Phân rã lược đồ (Decomposition)

42

Tìm phủ tối thiểu của F

Bước 2: xóa các thuộc tính dư thừa ở vế tráiVì (St Sem)+ = {St,Sem}

(St C)+ = {St,C}(C Sem)+ = {C Sem}

FD thứ nhất không dư thừa vế trái Tương tự cho các FD còn lạiRiêng P Sem C T R có C dư thừa

Page 43: Chương 11: Phân rã lược đồ (Decomposition)

43

Tìm phủ tối thiểu của F

Kết quả bước 2:FD1: St C Sem PFD2: P Sem CFD3: C Sem T PFD4: P Sem T C FD5: P Sem T R

Page 44: Chương 11: Phân rã lược đồ (Decomposition)

44

Tìm phủ tối thiểu của F

Bước 3: loại bỏ FD dư thừa Vì (ST C Sem)+{F-FD1}={ST C Sem} nên FD1 không

dư thừa Tương tự cho FD2, FD3, FD5 FD4 dư thừa nên bị loại bỏ

Page 45: Chương 11: Phân rã lược đồ (Decomposition)

45

Tìm phủ tối thiểu của F

Phủ tối thiểu của F:St C Sem PP Sem CC Sem T PP Sem T R

Page 46: Chương 11: Phân rã lược đồ (Decomposition)

46

Phân rã 3NF bảo toàn FD

Phân rã thành 4 FD như sau:(St C Sem P; {St C Sem P})(P Sem C; {P Sem C})(C Sem T P; {C Sem T P})(P Sem T R; {P Sem T R})

Vì không có phân rã nào hình thành siêu khóa cho lược đồ gốc, nên bổ sung thêm lược đồ mới (bước 4)

( St T Sem P; {})

Page 47: Chương 11: Phân rã lược đồ (Decomposition)

47

Phân rã thành BCNF

Các phân rã 1 và 3 không phải là BCNF vì P Sem C nằm trong phân rã 2

Phân rã 1 được tách thành 2 lược đồ mới (P Sem C; {P Sem C}) (St Sem P; {})

Phân rã tuy không mất mát thông tin nhưng không bảo toàn FD St C Sem P

Page 48: Chương 11: Phân rã lược đồ (Decomposition)

48

Phân rã thành BCNF

Phân rã lược đồ 3 thành (P Sem C; {P Sem C}) (P Sem T; {})

Không mất mát thông tin nhưng cũng không bảo toàn FD C Sem T P

Page 49: Chương 11: Phân rã lược đồ (Decomposition)

49

Phân rã thành BCNF

Kết quả cuối cùng:(P Sem C; {P Sem C})(P Sem St)(P Sem T)(P Sem T R; {P Sem T R})(St T Sem P)