Phân rã thành dạng chuẩn BCNF (hay chuẩn 3) bảo toàn thông tin

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Công nghệ thông tin - Cao đẳng) - Trường CĐ Nghề Công nghiệp Thanh Hóa (Trang 95 - 100)

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 YF 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]; F2Q2(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 SDM 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)={SDM, SDSM, SDDM, SDSDM}{SDM}= F1

F2+=Q2(F)={SID, SISD, SIDI, SISDI}{SID}= 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={CT; HR C; HTR; 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 XY 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à XY K‟ Q+. Điều này mâu thuẫn với K là khóa của QK 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  YF 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 = {CT; HR C; CH R; HS RG} không tƣơng đƣơng với F (HTR  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ó XA 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à XA. 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={SQ}

Ở 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+

= IBOO

Giảm S trong Y‟ ta đƣợc Y‟= OIQ4=(OI) và F4={IO}

- 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={IB}

2:Q2(SD) F2={SD}

3:Q3(SQI) F3={SIQ}

4:Q4(OI) F4={IO}

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.

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Công nghệ thông tin - Cao đẳng) - Trường CĐ Nghề Công nghiệp Thanh Hóa (Trang 95 - 100)

Tải bản đầy đủ (PDF)

(109 trang)