CHƢƠNG 6 : CHUẨN HÓA CƠ SỞ DỮ LIỆU
3. THIẾT KẾ CƠ SỞ DỮ LIỆU BẰNG CÁCH PHÂN RÃ
3.1. Phân rã thành dạng chuẩn BCNF (hay chuẩn 3) bảo toàn thông tin
a. Cách thông thường
Thuật toán phân rã Q, F thành dạng chuẩn BC (hay chuẩn 3) bảo toàn thông tin
Bƣớc 1:Tìm tất cả khóa của Q
Bƣớc 2:Tìm phụ thuộc hàm X YF có X không là siêu khóa và Y không chứa thuộc tính khóa.
Nếu tìm thấy thì tách Q thành Q1 và Q2 theo quy tắc sau:
Q1=Q[XY]; F1 Q1(F) tìm bao đóng của tất cả tập con của XY để suy ra Q1(F)ị F1
Q2=Q[Q+-Y]; F2Q2(F)tìm bao đóng của tất cả tập con của Q+
- Y để suy ra
Q2(F) F2
Thực hiện thuật toán phân rã (Q1,F1) Thực hiện thuật toán phân rã (Q2,F2)
Ngƣợc lại nếu không tìm thấy thì có hai trƣờng hợp:
Trƣờng hợp 1: Mọi phụ thuộc hàm trong Fi đều cóvế trái là siêu khóa thì Qi đạt chuẩn BCNF
Trƣờng hợp 2: Nếu có phụ thuộc hàm có vế trái không là siêu khóa và vế phải là
thuộc tính khóa thì Qi đạt chuẩn 3.
Ví dụ Cho Q(S, D, I, M) F={SI D; SD M} hãy phân rã Q thành các lƣợc đồ con đạt chuẩn BCNF bảo toàn thông tin
Giải:
Bƣớc 1: tìm tất cả khóa của Q
Xi TNXi (TNXi)+ Siêu khóa Khóa
SI SDIM SI SI
D SID SDIM SID
Bƣớc 2: phụ thuộc hàm SDM F có SD không là siêu khóa.
Chú ý: để tính đƣợc F1, F2, K1, K2 nhƣ hình trên, ta phải tính bao đóng của tất cả
tập con của{SDM} và {SDI}F1, F2 rồi tìm tất cả khóa của Q1 và Q2.
S+=S D+=D M+=M S+=S D+=D I+ =I SD+ =SDM SM+=SM SD+=SDM SI+=SDIM
DM+ =DM DI+=DI SDM+=SDM SDI+=SDIM F1+=Q1(F)={SDM, SDSM, SDDM, SDSDM}{SDM}= F1
F2+=Q2(F)={SID, SISD, SIDI, SISDI}{SID}= F2
Q1 và Q2 đều đạt dạng chuẩn BCNF vì trong Qi chỉ có phụ thuộc hàm có vế trái là khóa. F1 đƣợc tạo thành bằng cách lấy các phụ thuộc hàm của PQ1(F)có vế phải
96 một thuộc tính. Tƣơng tự cho F2
Ví dụ: Cho Q(CTHRSG), F={CT; HR C; HTR; CS G; HS R} hãy phân rã Q thành các lƣợc đồ con đạt chuẩn BC bảo toàn thông tin. (giải nhƣ ví dụ trên)
Tính chất: Theo thuật toán trên, khi phân rã Q thành Q1(XY)với XY và Q2 thì tập khóa SQ của Q luôn luôn bằng với tập khóa SQ2 của Q2.
Chứng minh
Thật vậy, K là một khóa của Q K là một siêu khóa của Q2. Giả sử có K‟ K và K‟ là khóa của Q2 K‟ (Q+
-Y) mà XY K‟ Q+. Điều này mâu thuẫn với K là khóa của QK là khóa của Q2. Ngƣợc lại cũng đúng.
Dựa vào tính chất trên, ta cải tiến thuật toán phân rã nhằm giảm bớt khối lƣợng tính các phụ thuộc hàm của tập F+
Thuật toán phân rã Q, F thành dạng chuẩn BCNF (hay chuẩn 3) bảo toàn thông tin
Bƣớc 1: Tìm tập tất cả khóa SK của Q
Bƣớc 2: Tìm phụ thuộc hàm X YF có X không là siêu khóa và Y không chứa thuộc tính khóa. Nếu tìm thấy thì tách Q thành Q1 và Q2 theo quy tắc sau:
Q1= Q[XY]; Tính F1 bằng cách tính bao đóng tất cả tập con của XY Q2= Q[Q+ -Y] SK cũng là tập khóa của Q2
Thực hiện bƣớc 1 cho Q1 Thực hiện bƣớc 2 cho Q2
Ngƣợc lại nếu không tìm thấy thì có hai trƣờng hợp:
Trƣờng hợp 1: Mọi phụ thuộc hàm trong Fi đều có vế trái là siêu khóa thì Qi đạt chuẩn BCNF
Trƣờng hợp 2: nếu có phụ thuộc hàm có vế trái không là siêu khóa và vế phải là
thuộc tính khóa thì Qi đạt chuẩn 3.
Chú ý: Thuật toán này chỉ tiện trong trƣờng hợp khối lƣợng tính toán trong việc
tìm tất cả khóa của lƣợc đồ quan hệ Q không lớn. Nói cách khác tập trung gian TG có ít thuộc tính. Ngƣợc lại ta phải dùng thuật toán của phần tiếp theo.
Ví dụ : Phân rã lƣợc đồ ở ví dụ trên thành các lƣợc đồ con ở dạng chuẩn BCNF
bảo toàn thông tin.
Trong F có 4 phụ thuộc hàm C T, HR C,HT R, CS G làm Q không đạt dạng chuẩn 3 hay BCNF và phép phân rã trên đã chọn ngẫu nhiên phụ thuộc hàm Cđ T để phân rã thành Q1 và tập thuộc tính của Q12 chính là tập thuộc tính của Q bỏ thuộc tính T. Tập phụ thuộc hàm F12 sẽ chứa các phụ thuộc hàm của F bỏ đi các phụ thuộc hàm có vế trái hay vế phải chứa thuộc tính T. Nhƣ vậy tùy theo cách chọn phụ thuộc hàm để phân rã thành Q1 mà số lƣợng phụ thuộc hàm mang xuống Q12 khác nhau và chất lƣợng phân rã cũng khác nhau. Kết quả của phép phân rã trên chính là Q1, Q2, Q3 của hình trên. Phép phân rã bảo toàn thông tin, và các lƣợc đồ con đạt chuẩn BCNF nhƣng phép phân rã không bảo toàn phụ thuộc hàm vì G
97
= F1 F2 F3 = {CT; HR C; CH R; HS RG} không tƣơng đƣơng với F (HTR G+
và CS G G+
). Ta hãy xem phép phân rã sau sẽ cho kết quả tốt hơn.
Phép phân rã cũng cho kết quả phép phân rã bảo toàn thông tin, các lƣợc đồ con Q1, Q2, Q3, Q4 đạt chuẩn BC và phép phân rã không bảo toàn phụ thuộc hàm vì G = F1 F2 F3 F4={CS G; HR C; CH R;C T; HS C} không tƣơng đƣơng với F (HT R ẽ G+).Phép phân rã này tốt hơn vì chỉ có một phụ thuộc hàm HT R không thuộc G+
trong khi phép phân rã trên có tới 2 phụ thuộc hàm HT
R và CS G không thuộc G+ .Sở dĩ phép phân rã thứ 2 tốt hơn vì ở bƣớc chọn phụ thuộc hàm để phân rã thành Q1 phép phân rã đã chọn phụ thuộc hàm sao cho khi chiếu F xuống Q12 số phụ thuộc hàm mang xuống càng nhiều càng tốt.
Ví dụ: Cho Q(A,B,C,D,E,G), F={AE C; CG A; BD G; GA E} hãy phân rã Q thành các lƣợc đồ con đạt chuẩn BC bảo toàn thông tin.
Nếu Q đƣợc phân rã thành:
(Q1(BDG), Q2(A,B,C,D,E)) lƣợc đồ cơ sở dữ liệu đạt chuẩn 3
(Q1(BDG), Q2(A,C,E), Q3(A,B,D,E)) lƣợc đồ cơ sở dữ liệu đạt chuẩn BCNF
b. Bổ đề:
Nếu Q không ở dạng chuẩn BCNF thì có thuộc tính A, B thuộc Q+
sao cho (Q+- AB)A
Chứng minh:
Q không ở dạng chuẩn BC có XA sao cho X không là siêu khóa có thuộc tính B XA (vì nếu không có B XA thì X phải là siêu khóa) (Q+-AB) X
(Q+-AB) A
Nhận xét:
+ Một lƣợc đồ Q ở dạng chuẩn BCNF vẫn có thể có AB sao cho (Q+- AB) A
+ Một lƣợc đồ Q không có AB sao cho (Q+- AB) A thì Q ở dạng chuẩn BCNF
c.Thuật toán
Thuật toán phân rã sau không cần tìm tất cả khóa của lƣợc đồ quan hệ Q
Thuật Toán phân rã Q, F thành dạng chuẩn BCNF bảo toàn thông tin Bƣớc 1: Z‟ = Q+
Bƣớc 2: Phân rã Z‟ theo thuật toán chi tiết để đƣợc 2 lƣợc đồ Z‟- A và XA trong
đó XA ở dạng chuẩn BCNF và X A
Nếu thuật toán chi tiết cho kết quả thì qua bƣớc 3 Ngƣợc lại kết thúc thuật toán
Bƣớc 3: Nhận XA là một lƣợc đồ con của các lƣợc đồ kết quả Q1,...,Qk
Bƣớc 4: Thực hiện phân rã Z‟- A, F Thuật toán chi tiết
98
Bƣớc1: Nếu Z‟ không chứa AB sao cho (Z‟- AB)A. thì báo không phân rã đƣợc.
Ngƣợc lại qua bƣớc 2
Bƣớc 2: Đặt Y‟ = Z‟
Bƣớc 3: Nếu Y‟ chứa AB sao cho (Y‟- AB) A. thì gán Y‟ = Y‟–B thực hiện lại bƣớc 2
Bƣớc 4: Bƣớc 3 cho kết quả Y‟ = XA với XA ở dạng chuẩn BCNF và XA. Trả về XA
Nhận xét
Ở mỗi bƣớc 2 của thuật toán phân rã Q, F ta thu đƣợc 2 lƣợc đồ Qi+=Z‟-A, Q1+=XA với Qi+ Q1+ =(Z‟-A) XA = X và X Q1+
và Q1 là lƣợc đồ ở dạng chuẩn BCNF. Thuật toán lại tiếp tục phân rã Qi theo đúng cách đã làm thuật toán phân rã bảo toàn thông tin và các lƣợc đồ con Qi đạt dạng chuẩn BCNF.
Thuật toán chi tiết tìm Ql đạt chuẩn BCNF sao cho Ql+ chứa nhiều thuộc tính nhất. Để tìm đƣợc Ql nhƣ vậy thuật toán chi tiết tìm hai thuộc tính AB Q+ sao cho (Q+- AB) A. Nếu tìm thấy chứng tỏ Q chƣa đạt chuẩn BCNF và thuật toán giảm B trong Q với hy vọng thu đƣợc lƣợc đồ con Ql đạt chuẩn BCNF và thỏa phụ thuộc hàm (Q+
- AB) A. Thuật toán chi tiết tiếp tục tìm và giảm cho tới khi thu đƣợc lƣợc đồ con không có hai thuộc tính AB sao cho (Q+
- AB) A Ql là lƣợc đồ
con đạt chuẩn BCNF cần tìm.
Ví dụ : Cho quan hệ Q(B,O,S,Q,I,D) và tập phụ thuộc hàm F
F = {S D, I B, IS Q, B O}
Hãy phân rã Q thành các lƣợc đồ con đạt dạng chuẩn BCNF và bảo toàn thông tin.
Giải
Đặt Z‟= Q+= BOSQID Thực hiện thuật toán chi tiết Y‟= BOSQID
Chọn 2 thuộc tính . Tìm bao đóng của tập hợp thuộc tính còn lại. Nếu bao đóng chứa 1 trong 2 thuộc tính chọn chẳng hạn A, nghĩa là ta đã tìm đƣợc 2 thuộc tính AB sao cho (Y‟-AB) A
Chọn BO: (SQID)+
B
Giảm O trong Y‟ ta đƣợc Y‟= BSQID Chọn BS:(QID)+
B
Giảm S trong Y‟ ta đƣợc Y‟= BQID Chọn BQ:(ID)+
B
Giảm Q trong Y‟ ta đƣợc Y‟= BID Chọn BD: I+
B
Giảm D trong Y‟ ta đƣợc Y‟= BI Q1=(BI) và F1={I B} Để tính F1 ta phải tính bao đóng của tất cả tập con của {BI}F1 - Giảm B trong Z‟ ta đƣợc Z‟= OSQID
99 Chọn OD: (SQI)+
D;
Giảm O trong Y‟ ta đƣợc Y‟= SQID Chọn QD: (SI)+D
Giảm Q trong Y‟ ta đƣợc Y‟= SID Chọn ID: S+
D;
Giảm I trong Y‟ ta đƣợc Y‟= SD Q2=(SD) và F2={S D}
Để tính F2 ta phải tính bao đóng của tất cả tập con của {SD} F2 - Giảm D trong Z‟ ta đƣợc Z‟= OSQI
Đặt Y‟=OSQI
Chọn OQ: (SI)+Q
Giảm O trong Y‟ ta đƣợc Y‟= SQI Q3=(SQI) và F3={SQ}
Ở bƣớc trên không chọn AB để bao đóng tập hợp thuộc tính còn lại chứa A hay B Để tính F3 ta phải tính bao đóng của tất cả tập con của {SQI}F3
- Giảm Q trong Z‟ ta đƣợc Z‟= OSI Đặt Y‟=OSI
Chọn OS: I+
= IBOO
Giảm S trong Y‟ ta đƣợc Y‟= OIQ4=(OI) và F4={IO}
- Giảm O trong Z‟ ta đƣợc Z‟= SI Q5 =(SI)và F5={PTHHN}
Ta có thể hiểu Q3(SQI)là tổ hợp của 2 lƣợc đồ con Q5(SI) và Q3(SQI) Vậy kết quả phân rã là:
1:Q1(BI) F1={IB}
2:Q2(SD) F2={SD}
3:Q3(SQI) F3={SIQ}
4:Q4(OI) F4={IO}
d. Chú ý
+ Nên tránh phân rã nếu lƣợc đồ đã ở dạng chuẩn mong muốn.
+ Nên xem xét tổ hợp các lƣợc đồ quan hệ con thành lƣợc đồ lớn hơn nếu lƣợc đồ lớn hơn vẫn đạt dạng chuẩn mong muốn.
+ Một kết quả phân rã bảo toàn phụ thuộc hàm sẽ có giá trị hơn kết quả phân rã không bảo toàn phụ thuộc hàm. Giữa hai kết quả phân rã đều không bảo toàn phụ thuộc hàm thì kết quả phân rã thỏa nhiều phụ thuộc hàm trong F sẽ có giá trị hơn . + Không có thuật toán phân rã lƣợc đồ Q thành các lƣợc đồ con ở dạng chuẩn BCNF vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm.
+ Vẫn có lƣợc đồ Q đƣợc phân rã thành các lƣợc đồ con ở dạng chuẩn BCNF vừa bảo toàn thông tin vƣa bảo toàn phụ thuộc hàm.
Ví dụ: cho lƣợc đồ Q(C,S, Z) có F={CS Z, Z C}. Q không thể phân rã thành các lƣợc đồ con ở dạng chuẩn BCNF vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm. Thật vậy:
100 Tất cả khóa của Q là:
Xi TNXi (TNXi)+ Siêu khóa Khóa
S S
Z SZ SZC SZ SZ
C SC SZC SC SC
ZC SZC SZC SZC
Vậy Q đạt dạng chuẩn 3 nhƣng không ở dạng chuẩn BCNF vì có Z C có vế trái không là siêu khóa. Nhƣng nếu ta phân rã Q thành các lƣợc đồ con có ít hơn 3 thuộc tính thì phụ thuộc CS Z không suy ra đƣợc từ các phụ thuộc hình chiếu.