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à (XY). 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 XA 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 XA 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 XA, AX, 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ó XA 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 XA 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 ={CT, 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 }