1. Dùng phép tách kết nối không mất thông để đưa về dạng chuẩn BCNF
a. Giải thuật:
- Input: Sơ đồ quan hệ R và tập phụ thuộc hàm F.
- Output: Một phép tách của R với kết nối không mất thông tin, sao cho mọi sơ đồ quan hệ trong phép tách sẽ ở dạng chuẩn Boyce – Codd và thỏa chiếu của F trên đó.
- Method:
Cấu trúc phép tách ρ trên R theo phương pháp lặp liên tiếp. Tại mỗi bước phép tách ρ là bảo đảm không mất mát thông tin đối với F.
Khởi đầu:ρ chỉ gồm R
Các bước kế tiếp: Nếu S là một lược đồ thuộc ρ, S chưa ở BCNF, chọn X
A là phụ thuộc hàm thỏa trên S, trong đó X không chứa khoá của S, A ∉ X. Rõ ràng cần phải có một số thuộc tính khác của S vừa không phải A, vừa không thuộc X hoặc nếu không thì X phải chứa một khoá của S. Thay thế S trong ρ bởi S1 và S2.
S1 = XA, S2 = S – A
(phép tách S thành S1 và S2 là không mất thông tin đối với tập phụ thuộc hàm trên S vì rằng S1∩ S2 = X, X S1 – S2 = A)
Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở BCNF. Chú ý rằng tại mọi thời điểm ρ luôn bảo đảm không mất thông tin, vì rằng ρ ban đầu là R, mà bước thay đổi ρ đều bảo toàn tính chất đó.
b. Ví dụ:
Cho lược đồ R(CTHRSG), trong đó C: giáo trình, T: thầy giáo, H: giờ, R: phòng học, S: sinh viên, G: lớp. Tập phụ thuộc hàm F:
C T HR C
HT R CS G
HS R Khoá của R là HS.
Tách lược đồ R thành các lược đồ BCNF:
- Xét CS G cho R. Vi phạm điều kiện BCNF vì CS không chứa khoá. Do
vậy, dùng thuật toán để tách R thành R1(CSG) và R2(CTHRS). Bước tiếp cần tính F+ và chiếu xuống R1 và R2, sau đó kiểm tra các lược đồ đã ở BCNF chưa. Có thể biểu diễn quá trình tách qua sơ đồ quan hệ sau:
2. Dùng phép tách bảo tồn phụ thuộc hàm để đưa về dạng chuẩn thứ 3
a. Giải thuật:
- Input: Lược đồ quan hệ R, tập các phụ thuộc hàm F; không làm mất tính tổng quát giả sử rằng nó là phủ tổi thiểu.
- Output: Một phép tách ρ trên R có bảo toàn phụ thuộc hàm, sao cho mọi sơ đồ quan hệ đều ở dạng chuẩn ba và thỏa chiếu F trên sơ đồ quan hệ đó.
- Method:
+ Nếu có một hoặc một số thuộc tính nào đó của R không có mặt trong tất cả các phụ thuộc hàm của F thì về nguyên tắc bản thân chúng sẽ tạo thành một sơ đồ quan hệ và ta sẽ xoá chúng ra khỏi R.
+ Nếu có một phụ thuộc hàm của F chứa hết tất cả các thuộc tính của R thì kết quả cần tìm chính là R. CTHRSG Khoá = HS C T, HR C HT R, CS G CSG Khoá = CS CS G CTHRS Khoá = HS C T, HR C HT R, HS CT Khoá = C CHRS Khoá = HS HR C, HC R HS R HRC Khoá = HR, HC HR C, HC HRS Khoá = HS
+ Ngược lại thì kết quả sẽ chứa sơ đồ quan hệ XA cho từng phụ thuộc hàm X
A trong F. Tuy nhiên, nếu X A1, X A2,…, X An trong F, ta có thể dùng sơ đồ X A1A2...An thay vì n sơ đồ X Ai (1 ≤ i ≤ n). Thực tế cách thay thế này được ưa thích hơn.
b. Ví dụ:
Cho sơ đồ quan hệ:
HOC(Mon, GV, TG, Phong, SV, KQ) và tập phụ thuộc hàm:
Mon GV Mon, SV KQ
TG, Phong Mon TG, SV Phong
TG, GV Phong
Theo giải thuật ta tách HOC thành các sơ đồ quan hệ: H1(Mon, GV) H2(TG, Phong, Mon) H3(TG, GV, Phong) H4(Mon, SV, KQ) H5(TG, SV, Phong) c. Định lý:
Giải thuật tạo ra một phép tách bảo toàn phụ thuộc hàm để đưa về dạng chuẩn thứ ba.
3. Dùng phép tách kết nối không mất thông tin và phép tách bảo tồn phụ thuộc hàm để đưa về dạng chuẩn thứ 3 hàm để đưa về dạng chuẩn thứ 3
a. Giải thuật:
- Input: Một phép tách ρ trên R có bảo toàn phụ thuộc hàm sao cho mọi sơ đồ quan hệ đều ở dạng chuẩn thứ ba và thỏa chiếu của F trên sơ đồ quan hệ đó.
- Output: Một phép tách σ trên R với kết nối không mất thông tin và bảo toàn phụ thuộc hàm sao cho mọi quan hệ đều ở dạng chuẩn thứ ba và thỏa chiếu của F trên sơ đồ quan hệ đó.
- Method: Nếu ρ không có lược đồ con chứa khoá của R và X là khoá nào đó của R thì ta chỉ đơn giản là thêm vào σ một sơ đồ quan hệ chứa X: σ = ρ∪ {X}
b. Ví dụ:
Xét lại ví dụ trên, ta có kết quả: H1(Mon, GV) H2(TG, Phong, Mon) H3(TG, GV, Phong) H4(Mon, SV, KQ) H5(TG, SV, Phong) và H6(TG, SV)
nhưng ta thấy H3 đã chứa TG, SV nên kểt quả là: H1(Mon, GV) H2(TG, Phong, Mon) H3(TG, GV, Phong) H4(Mon, SV, KQ) H5(TG, SV, Phong) c. Định lý:
Gọi ρ là phép tách đưa R về dạng chuẩn thứ ba bảo toàn phụ thuộc hàm, và gọi X là một khoá của R. Ta có σ = ρ∪ {X} là một phép tách R thành các sơ đồ quan hệ ở dạng chuẩn thứ ba, phép tách này bảo toàn phụ thuộc hàm và có kết nối không mất thông tin.
TÀI LIỆU THAM KHẢO
1. Bài giảng Cơ sở dữ liệu
Khoa Công nghệ thông tin, Trường Đại học Cần Thơ - Phạm Thị Xuân Lộc. 2. Cơ sở dữ liệu
NXB Đại học quốc gia Hà Nội - Đỗ Trung Tuân. 3. Giáo trình Cơ sở dữ liệu
Đà Nẳng - PGS.TSKH. Trần Quốc Chiến. 4. Nhập môn các hệ cơ sở dữ liệu (tập 1&2)
NXB Thống kê, Hà Nội 1986 -
Người dịch: Hồ Thuần, Nguyễn Quang Vinh, Nguyễn Xuân Huy, Hồ Thuần hiệu đính và giới thiệu.
5. Nhập môn Cơ sở dữ liệu quan hệ
NXB Khoa học và Kỹ thuật, 1995 – Lê Tiến Vương. 6. Principles of Database and Knowledge – Base systems (Volume 1&2)