Chuong 11 phan ra luoc do
Download
Report
Transcript Chuong 11 phan ra luoc do
Chương 11: Phân rã lược đồ
(Decomposition)
1
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
2
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.
3
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=
n
Ui
i1
F suy dẫn Fi với i = 1,..,n
4
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)
5
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)
6
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)
7
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
8
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+
9
Ví dụ
Xét lược đồ quan hệ
PERSON(SSN, Name, Address,Hobby)
SSN
1111111
1111111
5556667
5556667
9876543
Name
John
John
Mary
Mary
Simpson
Address
123 Main St.
123 Main St.
7 Lake Dr.
7 Lake Dr.
Fox 5 TV
Hobby
Stamps
Coins
Hiking
Skating
Acting
10
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??
11
Ví dụ
Vì PERSON1 HOBBY = {SSN} mà SSN là
khóa chính của PERSON1, do đó
PERSON1 HOBBY PERSON1
Phân rã này không mất thông tin
12
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???
13
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
14
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
15
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
n
nhau.
Fi
i 1
16
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 nf không
suy diễn được từ
thì
Fi
i 1
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
n
i 1
17
Fi
Ví dụ
Phân rã quan hệ HASACCOUNT
AccountNumber
B123
ClientId
111111
OfficeId
SB01
A908
123456
MN08
AccountNu OfficeId
mber
B123
SB01
Account
Number
ClientId
B123
111111
A908
A908
123456
MN08
18
Ví dụ
HASACCOUNT và phân rã của nó sau khi chèn
thêm 1 hàng
AccountNumber
B123
ClientId
111111
OfficeId
SB01
B567
111111
SB01
A908
123456
MN08
AccountNumber
OfficeId
Account Number
ClientId
B123
B567
A908
SB01
SB01
MN08
B123
111111
B567
111111
A908
123456
Sau khi join 2 lược đồ phân rã lại, phụ thuộc hàm
ClientId, OfficeId AcountNumber bị vi phạm
19
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}
20
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)
21
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
22
Giải thuật phân rã BCNF
Input R = (U,F)
Decomposition = R
While 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’
End
Return Decomposition
23
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})
24
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
25
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
26
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
27
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ã
28
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
29
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
30
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
31
Ví dụ
Cho tập thuộc tính ABCDEFGH, và tập phụ thuộc
hàm F
ABHC
AD
CE
BGHF
FAD
EF
BHE
32
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 đơn
ABHC
AD
CE
BGHF
FA
FD
EF
BHE
33
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
BHC (Loại bỏ A)
AD
CE
BHF (Loại bỏ G)
FA
FD
EF
BHE
34
Bước 3: Xóa tất cả các FD dư thừa khỏi G
Loại bỏ các FD BHF, FD và BH E
G còn lại các FD sau:
BHC
AD
CE
FA
EF
35
Giải thuật phân rã 3NF
Cho 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ã
36
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
37
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;{})
38
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
39
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 P
P Sem C
C Sem T P
P Sem T C R
P Sem C T R
P Sem T C
40
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 đơn
St C Sem P
P Sem C
C Sem T P
P Sem T C
P Sem T R
P Sem C T R
P Sem T C
41
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ái
Vì (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ại
Riêng P Sem C T R có C dư thừa
42
Tìm phủ tối thiểu của F
Kết quả bước 2:
FD1:
St C Sem P
FD2:
P Sem C
FD3:
C Sem T P
FD4:
P Sem T C
FD5:
P Sem T R
43
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ỏ
44
Tìm phủ tối thiểu của F
Phủ tối thiểu của F:
St C Sem P
P Sem C
C Sem T P
P Sem T R
45
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; {})
46
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
47
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
48
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)
49