Tách không mất thông tin thành các lƣợcđồ ở dạng BCNF

Một phần của tài liệu Đề cương bài giảng học phần: Cơ sở dữ liệu (2014 - 2015) (Trang 141 - 143)

27. PHÉP TÁCH LƢỢCĐỒ QUAN HỆ

27.3.Tách không mất thông tin thành các lƣợcđồ ở dạng BCNF

Cho lƣợc đồ  = (U, F), và phép tách  ={U1, U2,.., Uk}, phép tách một lƣợc đồ thành một tập các lƣợc đồ ở dạng BCNF là phép tách thoả mãn: Phép tách  là phép tách kết nối không mất thông tin.

Tất cả các lƣợc đồ con i = (Ui, Fi) đều ở dạng BCNF. 1. Đặt D:={R};

2. Khi có một lƣợc đồ quan hệ Q trong D không phải là BCNF, ta thực hiện vòng lặp: Với mỗi lƣợc đồ quan hệ Q trong D không ở BCNF hãy tìm một phụ thuộc hàm X->Y trong Q vi phạm BCNF và thay thế Q trong D bằng 2 lƣợc đồ quan

hệ (Q-Y) và (XY). Quá trình lặp dừng khi không còn quan hệ nào trong D vi phạm BCNF

Phương pháp :

Xuất phát từ một phụ thuộc hàm X A nào đó của F, phụ thuộc hàm XA này vi phạm điều kiện BCNF, ta xây dựng phép tách  ={U1, U2}, tƣơng ứng với lƣợc đồ 1 và 2 sao cho:

Phép tách đó là phép tách kết nối không mất thông tin

Phụ thuộc hàm XA là phụ thuộc hàm của lƣợc đồ 1 và nó thoả mãn điều kiện của BCNF trong lƣợc đồ này

Nếu nhƣ các lƣợc đồ 1 và 2 vẫn chƣa ở dạng BCNF thì tiếp tục quá trình đó, vì các điều vi phạm BCNF đều bị loại bỏ, cuối cùng ta thu đƣợc một tập các lƣợc đồ con đều ở dạng BCNF và quá trình tách luôn luôn đảm bảo phép tách kết nối không mất thông tin.

Cơ sở của thuật toán trên là do giả thiết lƣợc đồ  = (U, F) chƣa ở dạng BCNF do đó tồn tại phụ thuộc hàm XA, AX, X không phải là siêu khoá

U1=XA, U2 =U \ A

Nhận xét:

X=U1  U2, U1 \ U2 =A, đã có XA do đó U1  U2  U1 \ U2 theo định lý ở phần trên thì phép tách  ={U1 , U2} là phép tách có kết nối không mất thông tin. Vì U1 =XA và phụ thuộc hàm XA là duy nhất trên lƣợc đồ 1 = (U1, F1) nên X là siêu khoá.

Nếu 1 , 2 chƣa ở dạng BCNF thì ta áp dụng quá trình tách tƣơng tự. Cuối cùng ta thu đƣợc một tập các lƣợc đồ ở dạng BCNF và quá trình tách là không mất thông tin.

Ví dụ:

Cho lƣợc đồ  = (U, F) với

U=CRHTSG (C: Course, T: Teacher, H: Hour, R: Room, S: Student, G: Group) F ={CT, HR  C, CH  R, CS G, HS R}

Nhận xét

- Lƣợc đồ này có duy nhất một khoá là HS - Lƣợc đồ này chƣa ở dạng BCNF

- Ta thấy trong lƣợc đồ  = (U, F) có phụ thuộc hàm CS G vi phạm điều kiện BCNF nên ta tách lƣợc đồ thành các lƣợc U1 =CGS, U2 =CTHRS

- Ta thấy trong lƣợc đồ 2 = (U2, F2) có phụ thuộc hàm C T vi phạm điều kiện BCNF nên ta tách lƣợc đồ thành các lƣợc U3 =CT, U4 =CHRS

- Ta thấy trong lƣợc đồ 4 = (U4, F4) có phụ thuộc hàm CH R vi phạm điều kiện BCNF nên ta tách lƣợc đồ thành các lƣợc đồ U5 =CHR, U6 =CHS

Nhƣ vậy phép tách cuối cùng là ={ CSG, CT , CHR , CHS }

Một phần của tài liệu Đề cương bài giảng học phần: Cơ sở dữ liệu (2014 - 2015) (Trang 141 - 143)