GIÁO TRÌNHTHIẾT KẾ CƠ SỞ DỮ LIỆUNgày nay, chúng ta đang sống và làm việc trong thời đại phát triển của công nghệ thông tin. Nhu cầu sử dụng thông tin ngày càng được mọi người quan tâm hơn. Thông tin truy xuất không những phải chính xác mà yêu cầu cần phải tránh dư thừa dữ liệu và những dị thường trong cập nhật dữ liệu. Liên quan đến vấn đề này, lý thuyết cơ sở dữ liệu đóng góp một vai trò hết sức quan trọng.Mô hình CSDL quan hệ là một mô hình có tính độc lập dữ liệu cao, thuận lợi cho người sử dụng nên trong giáo trình này chúng ta chúng ta đặc biệt quan tâm nghiên cứu một số phương pháp thiết kế một mô hình CSDL tốt từ một mô hình CSDL đã cho. Nội dung của giáo trình chủ yếu trình bày các ràng buộc dữ liệu trong các quan hệ, các dạng chuẩn của các lược đồ CSDL quan hệ, và việc tách một lược đồ thành một số lược đồ con theo một dạng chuẩn nào đó.Chương 1LÝ THUYẾT PHỤ THUỘC HÀM1.1. Giới thiệuTrong quá trình thiết kế một cơ sở dữ liệu quan hệ, một số vấn đề thường có thể xảy ra:Dư thừa dữ liệuDị thường trong cập nhật dữ liệuVí dụ: Xét lược đồ quan hệ NCC(TCC,DCC,TMH,GIA), trong đó TCC là tên người cung cấp, DCC là địa chỉ người cung cấp hàng, TMH là tên mặt hàng được cung cấp, GIA là giá tiền tương ứng của mặt hàng được cung cấp. Có một vài vấn đề nẩy sinh đối với lược đồ này:Sự dư thừa: Địa chỉ của người cung cấp được lặp lại mỗi khi một mặt hàng được cung cấp. Chẳng hạn, trong quan hệ sau địa chỉ của ông Trần Ngọc An lặp lại 3 lần.TCCDCCTMHGIÁTrần Ngọc An23. Lê LợiKhoai tây4000Lê Thị Nga17. Hà nộiCà chua5000Trần Ngọc An23. Lê LợiBắp cải2000
GIÁO TRÌNH THIẾT KẾ CƠ SỞ DỮ LIỆU Ngày nay, sống làm việc thời đại phát triển công nghệ thông tin Nhu cầu sử dụng thông tin ngày người quan tâm Thông tin truy xuất phải xác mà yêu cầu cần phải tránh dư thừa liệu dị thường cập nhật liệu Liên quan đến vấn đề này, lý thuyết sở liệu đóng góp vai trò quan trọng Mô hình CSDL quan hệ mô hình có tính độc lập liệu cao, thuận lợi cho người sử dụng nên giáo trình chúng ta đặc biệt quan tâm nghiên cứu số phương pháp thiết kế mô hình CSDL tốt từ mô hình CSDL cho Nội dung giáo trình chủ yếu trình bày ràng buộc liệu quan hệ, dạng chuẩn lược đồ CSDL quan hệ, việc tách lược đồ thành số lược đồ theo dạng chuẩn Chương LÝ THUYẾT PHỤ THUỘC HÀM 1.1 Giới thiệu Trong trình thiết kế sở liệu quan hệ, số vấn đề thường xảy ra: Dư thừa liệu Dị thường cập nhật liệu Ví dụ: Xét lược đồ quan hệ NCC(TCC,DCC,TMH,GIA), TCC tên người cung cấp, DCC địa người cung cấp hàng, TMH tên mặt hàng cung cấp, GIA giá tiền tương ứng mặt hàng cung cấp Có vài vấn đề nẩy sinh lược đồ này: Sự dư thừa: Địa người cung cấp lặp lại mặt hàng cung cấp Chẳng hạn, quan hệ sau địa ông Trần Ngọc An lặp lại lần TCC Trần Ngọc An Lê Thị Nga DCC 23 Lê Lợi 17 Hà nội TMH Khoai tây Cà chua GIÁ 4000 5000 Trần Ngọc An Trần Ngọc An Lê Văn Hoàn Đỗ Anh Tuấn 23 Lê Lợi 23 Lê Lợi 18 Thuận An 30 An Lăng Bắp cải Hành Tây Tỏi Cà rốt 2000 4000 100000 8000 Bảng 1.1 Sự mâu thuẫn bổ sung: Nếu người cung cấp hàng quen thuộc cung cấp mặt hàng địa thay đổi quan hệ xuất mâu thuẩn (một người có hai điạ chỉ) Chẳng hạn, ông Lê Văn Hoàn sau chuyển cư trú 11 Võ Thị Sáu bán thêm cho siêu thị mặt hàng su hào với giá 7000 đồng/kg quan hệ trở thành sau: TCC Trần Ngọc An Lê Thị Nga Trần Ngọc An Trần Ngọc An Lê Văn Hoàn Đỗ Anh Tuấn Lê Văn Hoàn DCC 23 Lê Lợi 17 Hà nội 23 Lê Lợi 23 Lê Lợi 18 Thuận An 30 An Lăng 11 Võ Thị Sáu TMH Khoai tây Cà chua Bắp cải Hành Tây Tỏi Cà rốt Su hào GIÁ 4000 5000 2000 4000 1000 8000 7000 Bảng 1.2 Sự bất thường loại bỏ: Khi cần xóa mặt hàng cung cấp người lại xóa hết thông tin người Như xãy trường hợp thông tin người cung cấp mặt hàng tìm thấy CSDL Chẳng hạn, siêu thị không cần mặt hàng Cà chua sở liệu bảng cần phải loại dòng thứ khỏi bảng lại là: TCC Trần Ngọc An Trần Ngọc An Trần Ngọc An Lê Văn Hoàn Đỗ Anh Tuấn Lê Văn Hoàn DCC 23 Lê Lợi 23 Lê Lợi 23 Lê Lợi 18 Thuận An 30 An Lăng 11 Võ Thị Sáu TMH Khoai tây Bắp cải Hành Tây Tỏi Cà rốt Su hào GIÁ 4000 2000 4000 100000 8000 7000 Bảng 1.3 Do thông tin nhà cung cấp cà chua không CSDL tìm cần thiết Sự bất thường bổ sung: Một nhà cung cấp chưa cung cấp hàng đưa địa chỉ, tên nhà cung cấp vào quan hệ Chúng ta đặt giá trị null cho thành phần TMH GIA cho người cung cấp đưa vào mặt hàng với người cung cấp này, liệu có nhớ để xóa chứa giá trị null hay không? Trong ví dụ nêu, nhược điểm khắc phục thay quan hệ NC hai quan hê: NCC(TCC,DCC) CC(TCC,TMH,GIA) Khi quan hệ bảng 1.1 tách thành bảng: TCC DCC Trần Ngọc An 23 Lê Lợi Lê Thị Nga 17 Hà nội Lê Văn Hoàn 18 Thuận An Đỗ Anh Tuấn 30 An Lăng Bảng 1.4 TCC Trần Ngọc An Lê Thị Nga Trần Ngọc An Trần Ngọc An Lê Văn Hoàn Đỗ Anh Tuấn TMH GIA Khoai tây 4000 Cà chua 5000 Bắp cải 2000 Hành Tây 4000 Tỏi 1000 Cà rốt 8000 Bảng 1.5 Rõ ràng liệu bảng 1.4 3.5 tổ chức hai lược đồ cho lượng thông tin quan hệ lược đồ ban đầu, đồng thời tránh nhược điểm nêu Có hai phương pháp để thiết kế sở liệu quan hệ Phương pháp 1: Thiết kế xuất phát từ mô hình E-R Phương pháp 2: Thiết kế phương pháp chuẩn hóa Ví dụ: Giả sử ta cần xây dựng hệ thống để quản lý thông tin sinh viên trường đại học (MaSV, HT, NS) thông tin khoa trường (MaKhoa, TenKhoa, TruongKhoa) Ngoài ta phải quản lý sinh viên thuộc khoa Thiết kế theo phương pháp Xây dựng mô hình E-R MaGV HT GV GV #MaGV HT NS MaKhoa Khoa Gian g NS TenKhoa TruongKhoa ∞ MaKhoa (n,n) (1,1) Khoa #MaKhoa TenKhoa TruongKhoa Thiết kế theo phương pháp Giả sử người ta sử dụng lược đồ quan hệ để quản lý hệ thống GiaoVien = Trong đó: U = {MaGV, HT, NS, MaKhoa, TenKhoa, TruongKhoa} Cho quan hệ r sau: MaGV HT NS MaKhoa TenKhoa TruongKhoa Le Van A 1/1/08 A1 CNTT Mr.Han Le Van B 1/2/08 A1 CNTT Mr.Han Le Van C 1/3/08 A2 Toan Mr.Phung Le Van D 1/4/08 A2 Toan Mr.Phung SC = {MaSV → U ; MaKhoa → TenKhoa.TruongKhoa} Việc thiết kế sở liệu sử dụng lược đồ quan hệ nảy sinh vấn đề sau: Dư thừa liệu, dị thường cập nhật liệu : sửa, bổ sung, xoá Dựa theo phương pháp thứ hai, ta phát điều lược đồ quan hệ SinhViên không đạt chuẩn 3NF (hoặc BCNF) Từ ta thực việc phân tách lược đồ quan hệ SinhVien thành hai lược đồ SV Khoa tương tự kết cuối phương pháp 1.2 Cơ sở lý thuyết phụ thuộc hàm 1.2.1 Qui ước ký hiệu Các thuộc tính: A, B, C, …, A1, A2, … Tập thuộc tính: X, Y, Z, …; ABC ↔ {A, B, C} Hợp tập thuộc tính: XY ↔ X∪Y; XYZ ↔ X∪Y∪Z; … Lược đồ quan hệ: R, S, …, RS = ;(SC : Set of Constraint) Quan hệ: r, s, … Bộ: t, t1, t2, … Với t bộ, X tập thuộc tính ký hiệu t[X] để giá trị t tập thuộc tính X 1.2.2 Phụ thuộc hàm (Functional Dependency) Định nghĩa: (Quan hệ thỏa mãn phụ thuộc hàm) Cho lược đồ quan hệ R = , cho X, Y ⊆ U Xét quan hệ r R Quan hệ r gọi thỏa phụ thuộc hàm: X → Y (đọc X xác định Y, Y phụ thuộc hàm vào X) nếu: ∀ t1, t2 ∈ r cho: t1[X] = t2[X] ⇒ t1[Y] = t2[Y] Nhận xét : Do đó, r không thỏa X→Y ⇔ ∃t1,t2 ∈ r : t1[X] = t2[X] ⇒ t1[Y] ≠ t2[Y] Ví dụ: A B r = r không thỏa : A → B b a r thỏa : AB → C a c r không thỏa : B → C b c r thỏa : C → A r thỏa : CD → A r không thỏa : AD → C C c a b D a a a Thuật toán: Kiểm tra quan hệ r có thỏa mãn phụ thuộc hàm X →Y không? Function Ktra(r, X, Y); Begin Temp := true ; for i := to n-1 for j := i+1 to n if (ti[X]= tj[X] and ti[Y] tj[Y]) then begin temp:= false; break; end; Ktra:= temp; End; Định nghĩa: (Lược đồ quan hệ thỏa mãn phụ thuộc hàm) Cho lược đồ quan hệ R = , cho X, Y ⊆ U R gọi thỏa phụ thuộc hàm X→Y ⇔ ∀ r ∈ R: r thỏa X→Y ⇔ ∀ r ∈ R, ∀ t1, t2 ∈ r : t1[X] = t2[X] ⇒ t1[Y] = t2[Y] Lưu ý: Thông thường ta quy ước tập ràng buộc SC tập phụ thuộc hàm ký hiệu F Vì vậy, lược đồ quan hệ ký hiệu R = R phải thỏa tất phụ thuộc hàm F Định nghĩa: (Suy diễn logic) Cho lược đồ quan hệ R = , X, Y ⊆ U Ta nói phụ thuộc hàm X→Y suy diễn logic từ F, ký hiệu: F╞ X→Y, với quan hệ r R thỏa mãn phụ thuộc hàm F thỏa X→Y Khi ta nói X→Y phụ thuộc hàm hệ F Ví dụ: F = {A → B, B → C} A → C suy diễn logic từ F (dễ thấy !) Định nghĩa: (Bao đóng tập phụ thuộc hàm) Cho R = Bao đóng tập phụ thuộc hàm F, ký hiệu F +, tập tất phụ thuộc hàm suy diễn logic từ F, nghĩa là: F+ = {X→Y | X, Y ⊆ U F╞ X→Y} Ví dụ: Cho R = Ta có F+ = {A → B, B → C, A → C, AB → C, A → A, } Lưu ý: F ⊆ F+ Định nghĩa: (Khoá lược đồ quan hệ) Cho R = , cho X ⊆ U Khi X gọi khoá R thỏa mãn đồng thời điều kiện: X→U ∈ F+ (hay: X siêu khoá lược đồ quan hệ R) Không ∃ X’ ⊂ X : X’ siêu khoá R Ví dụ 1: Cho R = U = ABC; F = {A→B, B→C} ⇒ X = A khoá lược đồ quan hệ R Ta chứng minh: A → ABC ∈ F+ ⇔ R thỏa A → ABC ⇔ ∀r ∈ R : R thỏa A → ABC (dễ dàng!) Ví dụ 2: Cho R = U = ABC; F = {AB→C, C→A} R có hai khoá AB AC (vì ?) Lưu ý: Khoá lược đồ quan hệ không Một lược đồ quan hệ ∃ khoá 1.2.3 Hệ tiên đề Amstrong Cho R = , Armstrong đưa ba qui tắc (tiên đề, luật) sau: Luật phản xạ: Nếu X, Y ⊆ U X ⊆ Y Y→X ∈ F+ Luật gia tăng (tăng trưởng): Nếu X, Y, Z ⊆ U X→Y ∈ F+ XZ→YZ ∈ F+ Luật bắc cầu: Nếu X, Y, Z ⊆ U X→Y ∈ F+, Y→Z ∈ F+ X→Z ∈ F+ Ta có quy tắc suy diễn mở rộng: Mệnh đề: Cho R = , X, Y, Z, W ⊆ U Lúc đó: 1) Luật hợp: Nếu X→Y X→Z X→YZ 2) Luật tách: Nếu X→Y Z ⊆ Y X→Z 3) Luật tựa bắc cầu: Nếu X→Y WY→Z WX→Z Định lý: Hệ tiên đề Armstrong đắn đầy đủ Lưu ý: Tính đầy đủ hệ tiên đề hiểu với phụ thuộc hàm hệ ta sử dụng số hữu hạn quy tắc hệ tiên đề để chứng minh Ví dụ: Cho R = , đó: U = ABC, F = {A→B, A→C} Chứng minh: A → BC ∈ F+ Ta có: A→B (1) A→C (2) Từ (1) ⇒ A → AB (3) (Luật gia tăng) Từ (2) ⇒ AB → BC (4) (Luật gia tăng) Từ (3) & (4) ⇒ A → BC (Luật bắc cầu) ⇒ đpcm 1.2.4 Bao đóng tập thuộc tính Định nghĩa: Cho R = Cho X ⊆ U Khi đó, bao đóng X, ký hiệu X +, định nghĩa sau: X+ = {A | X→A ∈ F+} Lưu ý: Để rõ bao đóng X xác định tập phụ thuộc hàm F, ta ký hiệu: X+F X siêu khoá ⇔ X → U ∈ F+ ⇔ X+ = U X ⊆ X+ Định lý: (Bài toán thành viên: Điều kiện cần đủ để X→Y ∈ F+) Cho R = X, Y ⊆ U Khi đó: X → Y ∈ F+ ⇔ Y ⊆ X+ Chứng minh: Giả sử Y = A1…An, với Ai ∈ U thuộc tính Đủ: Giả sử Y ⊆ X+, suy Ai ∈ X+, với i =1,…,n Từ định nghĩa X+ ta có X → Ai, suy X → Y (luật hợp) Cần: Giả sử có X → Y ∈ F+, suy X → Ai ∈ F+ (luật tách) Từ suy Y ⊆ X+ Ví dụ: Cho R = , đó: U = ABC, F = {A→B, A→C} AB → C ∈ F+ (AB)+ = ABC ⊇ C B → A ∉ F+ (do B+ = B không chứa A) 1.2.1 Thuật toán tính bao đóng tập thuộc tính Vào: R = X ⊆ U Ra: X+F Phương pháp: Function BaoDong(X); Begin new:= X; Repeat old:= new; for X → Y ∈ F if X ⊇ new thenm new:= new ∪ Y; Until old = new; Return new; End; Ví dụ: Cho R = , đó: U = ABCDEG F = {AB→C, C→A, BC→D, D→EG, BE→C, CG→BD, CE→AG} Tính (BD)+: X(0) = BD X(1) = BD ∪ {EG} = BDEG X(2) = BDEG ∪ {C} = BDEGC X(3) = BDDEGC ∪ {A, AG} = BDEGCA X(4) = BDEGCA = X(3) ⇒ (BD)+ = ABCDEG Chứng minh BD khoá R: Theo câu ta có BD siêu khoá Mặt khác ta có: B + = B ≠ U ⇒ B → U ∉ F+ D+ = DEG ≠ U ⇒ D → U ∉ F+ ⇒ đpcm Bài tập: Viết thuật toán tựa Pascal nhằm kiểm tra tập X có phải khoá R hay không? Vào: R = X ⊆ U Ra: Yes/No 1.3 Phủ tối thiểu (phủ cực tiểu) Định nghĩa: (Hai tập phụ thuộc hàm tương đương) Cho tập phụ thuộc hàm F G Khi đó: F gọi tương đương với G, ký hiệu: F ⇔ G, F+ = G+ Ví dụ: Cho F = {A→B, B→C}, G = {A→B, B→C, A→C} ⇒F⇔G Ý nghĩa: Cho R = G tương đương với F ta dùng G thay cho F lược đồ quan hệ R Tức R = = Bổ đề 1: Nếu F ⊆ G ⇒ F+ ⊆ G+ Bổ đề 2: (F+)+ = F+ Tính chất: + F ⊆ G (1) F ⇔G⇔ G ⊆ F + (2) Chứng minh, dùng bổ đề trên: (⇒): F ⊆ F+ = G+ ⇒ (1) G ⊆ G + = F+ ⇒ (2) (⇐): F ⊆ G+ ⇒ (F)+ ⊆ (G+)+ = G+ (bổ đề 1) G ⊆ F+ ⇒ (G)+ ⊆ (F+)+ = F+ Vậy F+ = G+, F tương đương G Ý nghĩa: Cho phép xây dựng thuật toán để kiểm tra xem hai tập phụ thuộc hàm có tương đương với hay không Thuật toán kiểm tra F tương đương G Procedure KTTD(F, G) ; Begin {Kiểm tra F ⊆ G+} for X→Y ∈ F if X+G ⊇ Y then begin write(‘F G không tương đương’); exit; end; {Kiểm tra G ⊆ F+} for X→Y ∈ G if X+F ⊇ Y then begin write(‘F G không tương đương’); exit; end; writeln(‘ F tương đương với G’); End; Bổ đề: Cho R = , X ⊆ U, Ai ∈ U, i = n Các khẳng định hay sai? Nếu đúng, chứng minh; sai, phản ví dụ a Nếu X→Y W→Z XW→YZ b Nếu X→Y Y→Z X→YZ c Nếu XY→Z Z→X Z→Y d Nếu X→Y, W→Z W ⊆Y X→Z a Đúng X→Y ⇒ XW→YW (tăng trưởng) W→Z ⇒ YW→YZ (tăng trưởng) ⇒ XW→YZ (bắc cầu) b Đúng c Sai Xét quan hệ sau X 11 11 Y 11 00 Z 11 11 d Đúng Cho lược đồ quan hệ R(A,B,C,D,E,F,G,H,I) tập phụ thuộc hàm F R F = {AB→D, AH→I, D→H, HI→G, BD→I} Chứng minh quan hệ r lược đồ quan hệ R thoả mãn F r thoả phụ thuộc hàm AB→GI cách: a Sử dụng hệ tiên đề Armstrong b Tính bao đóng tập thuộc tính a Chứng minh Armstrong AB→D D→H ⇒ AB→H (bắc cầu) ⇒AB→AH (tăng trưởng) AH→I ⇒ AB→I (bắc cầu) ⇒AB→HI (hợp) HI→G ⇒AB→G (bắc cầu) ⇒ AB→GI (hợp) b Bao đóng AB theo F là: ABDHIG Vậy GI ⊆ AB+ ⇒ F |== AB→GI 48 Cho lược đồ quan hệ R(A,B,C,D,E,F) tập thuộc hàm R F = {A→B, D→F, E→D, D→C} Tính bao đóng tập thuộc tính AE, BD AE+ = ABDCDEF, BD+ = BDCF 10 Cho quan hệ r lược đồ quan hệ R A B thuộc tính R, X Y tập thuộc tính R Bằng lập luận logic, chứng minh quan hệ r thoả mãn phụ thuộc hàm A→X, Y→B Y⊆X r thoả A→B Xét quan hệ r thoả A→X Y→B Giả sử r không thoả A→B ⇒ ∃ t1, t2 ∈ r cho t1[A] = t2[A] t1[B] ≠ t2[B] (1) Do r thoả A→X nên t1[X] = t2[X] ⇒ t1[Y] = t2[Y] (do Y⊆ X) (2) (1) (2) ⇒ r không thoả Y→B (mâu thuẫn) Vậy r thoả A→B 11 Cho lược đồ quan hệ R tập phụ thuộc hàm F R Nếu F = ∅ F+ tập phụ thuộc hàm nào? F+ = {X→Y | Y⊆X, X, Y⊆R} 12 Kiểm tra tính chất bảo toàn thông tin phép tách ρ=(ABC, ADE, DFG) lược đồ quan hệ R(A, B, C, D, E, F, G) tương ứng với tập phụ thuộc hàm : a F = {AB→C, C→DE, AF→G} b F = {A→CB, A→DE, BD→FG} c F = {AC→DE, BE→FG} d F = {BD→AE, B→CFG} R= ABCDEFG, ρ=(ABC, ADE, DFG) Hướng dẫn: Câu b: F = {A→CB, A→DE, BD→FG} Xây dựng bảng sau : A B C D E F G ABC a1 a2 a3 b14 b15 b16 b17 ADE a1 b22 b23 a4 a5 b26 b27 DFG b31 b32 b33 a4 b35 a6 a7 Xét A→CB: 49 ABC ADE DFG A B C D E F G a1 a2 a3 b14 b15 b16 b17 a1 a2 a3 a4 a5 b26 b27 b31 b32 b33 a4 b35 a6 a7 ABC ADE DFG A B C a1 a2 a3 a1 a2 a3 b31 b32 b33 D a4 a4 a4 E F G a5 b16 b17 a5 b26 b27 b35 a6 a7 ABC ADE DFG A B C a1 a2 a3 a1 a2 a3 b31 b32 b33 D a4 a4 a4 E F G a5 b16 b17 a5 b16 b17 b35 a6 a7 Xét A→DE: Xét BD→FG: Xét lại lượt phụ thuộc hàm, ta nhận thấy thay đổi bảng Vậy: Phép tách không bảo toàn phụ thuộc hàm bảng cuối không xuất dòng có giá trị a 13 Kiểm tra tính chất bảo toàn phụ thuộc hàm phép tách ρ = (ABD, ACE, BEF, DEG) lược đồ quan hệ R(A,B,C,D,E,F,G) tương ứng với tập phụ thuộc hàm : a F = {BD→A, A→CF, D→F, BE→G} b F = {A→EF, BD→CD, F→G} c F = {A→B, A→D, D→E, E→C, BD→FG} 14 Cho lược đồ quan hệ R(A,B,C,D,E,F) tập phụ thuộc hàm F R: F={AB→C, A→DE, D→F, A→B, F→A} a Tập phụ thuộc hàm F có cực tiểu hay không ? Nếu không xác định phủ cực tiểu F b Phép tách ρ = {ABC, ADE, DF, AF} có bảo toàn thông tin hay không ? c Phép tách có bảo toàn phụ thuộc hàm hay không ? a Tìm phủ cực tiểu F 50 Bước 1: Thay tất phụ thuộc hàm có từ hai thuộc tính vế phải trở lên phụ thuộc hàm có thuộc tính vế phải F = {AB→C, A→D, A→E, D→F, A→B, F→A} Bước 2: Loại bỏ khỏi vế trái phụ thuộc hàm F thuộc tính thừa Xét AB→C: A+F = ABDCEF ⇒ C∈A+F ⇒ thuộc tính B thừa ⇒ F = {A→C, A→D, A→E, D→F, A→B, F→A} Bước 3: Loại bỏ khỏi F phụ thuộc hàm thừa Xét A→C: A+F\{A→C} = ABDEF ⇒ C∉A+F\{A→C} Xét A→D: A+F\{A→D} = ABC ⇒ D∉A+F\{A→D} Xét A→E: A+F\{A→E} = ACDFB ⇒ E∉A+F\{A→E} Xét D→F: D+F\{D→F} = D ⇒ F∉D+F\{D→F} Xét A→B: A+F\{A→B} = ACDEF ⇒ B∉A+F\{A→B} Xét F→A: F+F\{F→A} = F ⇒ A∉F+F\{F→A} Vậy phụ thuộc hàm thừa ⇒ Phủ cực tiểu F là: {A→C, A→D, A→E, D→F, A→B, F→A} b Phép tách ρ = {ABC, ADE, DF, AF} bảo toàn thông tin c Phép tách ρ = {ABC, ADE, DF, AF} bảo toàn phụ thuộc hàm 15 Cho lược đồ quan hệ R(A,B,C,D,E,F,G) tập phụ thuộc hàm F R: F = {AB→C, AC→D, D→A, DC→EF, B → G} a Hãy tìm phủ cực tiểu F b Xác định tất khoá lược đồ quan hệ R c Trên R có tồn dư thừa dị thường liệu hay không? Nếu có, tìm phép tách thành BCNF R d Phép tách tìm có bảo toàn phụ thuộc hàm hay không? 51 Hướng dẫn: a Phủ cực tiểu F: {AB→C, AC→D, D→A, DC→E, DC→F, B→G} b Tập khoá R: {AB, BD} c Tìm phép tách thành BCNF R: ABCDEFG Xét cặp {CD, CE, CF, CG} ABC ABDEFG Xét cặp {DE, DF, DG, AB} AD BDEFG Xét cặp {GD, GE, GF} BG BDEF Xét cặp {EF} BDE BDF Phép tách tìm ρ = (ABC, AD, BG, BDE, BDF) d Phép tách không bảo toàn phụ thuộc hàm 16 Cho lược đồ quan hệ R = ABCDEFGH Xác định tất khoá R tương ứng với tập phụ thuộc hàm đây: a Fa = {A→B, A→C, D→ B, D→C, CE→A, CE→D, G→H} b Fb = {CD→E, AD→F, A→G, C→H, B→A, B→C, GH→B} c Fc = {AB→E, CD→F, EF→G, C→H, H→A, H→B} d PTH = {AB→C, AB→D, AB→E, C→A, D→B, E→F, H→B, FG→H} a Fa = {A→B, A→C, D→ B, D→C, CE→A, CE→D, G→H} Sử dụng thuật toán tìm tất khoá ta có: Tập khoá ban đầu: К = {EFGC} Xét khoá: EFGC A→B Siêu khóa: AEFGC A >C Siêu khóa: AEFG ==> Tìm khoá AEFG К = {EFGC, AEFG} D→B Siêu khóa: DEFGC D→C Siêu khóa: DEFG ==> Tìm khoá DEFG К = {EFGC, AEFG, DEFG} CE→A Siêu khóa: CEFG CE→D Siêu khóa: CEFG G→H Siêu khóa: GEFC 52 Xét khóa: AEFG A→B A→C D→B D→C CE→A CE→D G→H Siêu khóa: AEFG Siêu khóa: AEFG Siêu khóa: DAEFG Siêu khóa: DAEFG Siêu khóa: CEFG Siêu khóa: CEAFG Siêu khóa: GAEF Xét khóa: DEFG A→B A→C D→B D→C CE→A CE→D G→H Siêu khóa: ADEFG Siêu khóa: ADEFG Siêu khóa: DEFG Siêu khóa: DEFG Siêu khóa: CEDFG Siêu khóa: CEFG Siêu khóa: GDEF Tập tất khoá là: К = {EFGC, AEFG, DEFG} b Fb = {CD→E, AD→F, A→G, C→H, B→A, B→C, GH→B} К = {DGH, ADH, CDG, CAD, BD} c Fc = {AB→E, CD→F, EF→G, C→H, H→A, H→B} К = {CD} d PTH = {AB→C, AB→D, AB→E, C→A, D→B, E→F, H→B, FG→H} К = {GCF, AGF, EGC, EAG, BGC, ABG, DGC, HGC, DAG, HAG} 17 Cho lược đồ quan hệ R(A, B, C, D, E) tập phụ thuộc hàm R: F = {A→BC, CD→E, ♣→D } Trong ♣ thuộc tính số thuộc tính R ♣→D phụ thuộc hàm không tầm thường Có thể đưa kết luận khoá R cho dù ♣ thuộc tính Mọi khoá R phải chứa thuộc tính A 18 Cho lược đồ quan hệ R, X→Y phụ thuộc hàm R K khoá R Chứng minh X∪(K\Y) siêu khoá R Ta có: X→Y ⇒ X∪(K\Y) → Y∪(K\Y) (tăng trưởng) 53 K ⊆ Y∪(K\Y) ⇒ Y∪(K\Y) → K Do K khoá nên K → R ⇒ X∪(K\Y) → R (bắc cầu) ⇒ X∪(K\Y) siêu khoá 19 Dựa vào lược đồ quan hệ R tập phụ thuộc hàm câu 16: a Hãy tìm phép tách thành BCNF R ứng với tập phụ thuộc hàm Fa, Fb, Fc b Hãy tìm phép tách thành 3NF R ứng với tập phụ thuộc hàm Fa, Fb, Fc c Các phép tách tìm câu b có bảo toàn thông tin hay không? 20 Cho lược đồ quan hệ R(A,B,C,D) tập phụ thuộc hàm F={B→C} R Có thể bổ sung vào F phụ thuộc hàm số phụ thuộc hàm để R 3NF BCNF (a) D→AB (b) AC →D (c) CD→B (d) AD→B Để R 3NF không BCNF với phụ thuộc hàm X→A∈F, A phải thuộc tính khoá Vậy bổ sung vào F phụ thuộc hàm CD→B để R 3NF nhung không BCNF 21 Cho lược đồ quan hệ R(A, B, C, D) tập phụ thuộc hàm F ={AB→C} R Phải bổ sung vào F phụ thuộc hàm số phụ thuộc hàm để R 3NF BCNF a AB→D b C→B c C→D Có thể bổ sung vào F phụ thuộc hàm C→B để R 3NF không BCNF 22 Cho lược đồ quan hệ R(A,B,C,D,E) Xác định dạng chuẩn R tương ứng với tập phụ thuộc hàm sau: a F = {AB→C, AB→D, C→A, D→B} b F = {AB→E, CD→A, E→B} 54 c F = {CD→A, BCD→E} a 3NF b 1NF c 1NF 23 Cho lược đồ quan hệ R(A, B, C, D) tập phụ thuộc hàm F = {AB→C, C→D, D→A} R a Tìm tập tất phụ thuộc hàm không tầm thường phụ thuộc hàm mà vế phải thuộc tính xuất vế trái suy dẫn từ F b Xác định tất khoá R a Trả lời: {AB→C, C→D, D→A, C→A, C→DA, AB→D, AB→CD, AC→D, BC→A, BC→D, BC→AD, BD→A, BD→C, BD→AC, CD→A, ABC→D, ABD→C, BCD→A} b Tập tất khoá: AB, CB, BD 24 Cho lược đồ quan hệ R(A, B, C, D) tập phụ thuộc hàm F = {A→B, B→C, B→D} R a Tìm tập tất phụ thuộc hàm không tầm thường phụ thuộc hàm mà vế phải thuộc tính xuất vế trái suy dẫn từ F b Xác định tất khoá R 25 Cho lược đồ quan hệ R(A, B, C, D) tập phụ thuộc hàm F = {Ab→C, BC→D, CD→A, AD→B} R a Tìm tập tất phụ thuộc hàm không tầm thường phụ thuộc hàm mà vế phải thuộc tính xuất vế trái suy dẫn từ F b Xác định tất khoá R 26 Cho lược đồ quan hệ R(A, B, C, D) tập phụ thuộc hàm F = {A→B, B→C, C→D, D→A} R a Tìm tập tất phụ thuộc hàm không tầm thường phụ thuộc hàm mà vế phải thuộc tính xuất vế trái suy dẫn từ F b Xác định tất khoá R 27 Hãy phản ví dụ để chứng tỏ phát biểu sai a Nếu quan hệ r thoả A→B r thoả B→A b Nếu quan hệ r thoả AB→C A→C r thoả B→C c Nếu quan hệ r thoả AB→C r thoả A→C B→C a Quan hệ thoả A→B không thoả B→A 55 A B 0 b Quan hệ r thoả AB→C A→C không thoả B→C A B C 1 0 1 28 Cho X Y hai tập thuộc tính Chứng minh X⊆Y X+ ⊆ Y+ (với bao đóng X Y tính theo tập phụ thuộc hàm) Chứng minh: ∀A∈X+, ta có F |== X→A Do X ⊆ Y nên Y→X Theo tiên đề bắc cầu: F |== Y→A ⇒ A∈Y+ Vậy X+ ⊆ Y+ 29 Cho F tập phụ thuộc hàm Chứng tỏ phụ thuộc hàm X→A∈F dư thừa A thuộc X+ bao đóng tính theo tập phụ thuộc hàm F\{X→A} Chứng minh * Chứng minh X→A∈F dư thừa A∈X+F\{X→A} Nếu X→A ∈ F dư thừa F+ = (F\{X→A})+ ⇒ Với phụ thuộc hàm W→V ∈ F+, ta có F\{X→A} |== W→V X→A ∈ F nên F\{X→A} |== X→A ⇒ A∈ X+F\{X→A} * Chứng minh A∈X+F\{X→A} X→A∈F dư thừa Do F\{X→A} ⊆ F nên (F\{X→A})+ ⊆ F+ Ta chứng minh F+ ⊆ (F\{X→A})+ Thật vậy, ∀W→V∈F ta có W→V ∈F\{X→A} W→V X→A ⇒ V⊆ W+F\{X→A} ⇒ F+ ⊆ (F\{X→A})+ Vậy F+ = (F\{X→A})+ ⇒ X→A∈F thừa 56 30 Chứng tỏ thuộc tính B∈X phụ thuộc hàm X→A∈F dư thừa A∈(X\{B})+F 31 Cho hai lược đồ quan hệ R1 R2, R1 ∩ R2 = X Chứng tỏ với quan hệ r(R1R2) thoả X→R2 ta có: r = πR1(r) ⋈ πR2(r) Dễ dàng chứng minh r ⊆ πR1(r) ⋈ πR2(r) Ta chứng minh πR1(r) ⋈ πR2(r) ⊆ r Xét µ ∈ πR1(r) ⋈ πR2(r) ⇒ ∃µ1∈ πR1(r) ∃µ2 ∈ πR2(r) cho: µ1[X] = µ2[X] = µ[X] ⇒ µ1[R1\R2] = µ[R1\R2] µ2[R2\R1] = µ[R2\R1] ⇒ ∃ν1, ν2 ∈ r cho µ1 = ν1[R1] µ2 = ν2[R2] µ1[X] = ν1[X] ⇒ µ1[R1\R2] = ν1[R1\R2] µ2[X] = ν2[X] µ2[R2\R1] = ν2[R2\R1] ν1[X] = ν2[X] = µ[X] ⇒ ν1[R1\R2] = µ[R1\R2] ν2[R2\R1] = µ[R2\R1] Do r thoả X→R1\R2 nên ν1[R1\R2] = ν2[R1\R2] ⇒ ν2 = µ ⇒ µ ∈ r ⇒ πR1(r) ⋈ πR2(r) ⊆ r Vậy r = πR1(r) ⋈ πR2(r) 32 Cho hai tập phụ thuộc hàm F G Chứng minh ∀X→Y∈F, bao đóng X theo G chứa Y F+ ⊆G+ Chứng minh: Xét W→V ∈ F+, ta có: F |== W→V Do Y⊆X+G ∀X→Y∈F nên F ⊆ G+ ⇒ G+ |== W→V 57 ⇒ G |== W→V Vậy: W→V ∈ G+ ⇒ F+ ⊆ G+ 33 Cho quan hệ sau đây: TENLOP MONHOC PHONG BUOI Tin K1 Pascal Sáng Tin K2 Foxpro Chiều Tin K2 Pascal Sáng Quan hệ có thoả mãn phụ thuộc đa trị: F = {TENLOP →→PHONG, TENLOP→→BUOI} hay không? Nếu không, phải bổ sung vào quan hệ liệu để quan hệ thoả mãn F Quan hệ không thoả mãn tập phụ thuộc đa trị: F = {TENLOP →→PHONG, TENLOP→→BUOI} Để quan hệ thoả F, phải bổ sung vào F liệu sau: TENLOP MONHOC PHONG BUOI Tin K2 Pascal Sáng Tin K2 Foxpro Chiều Tin K2 Pascal Chiều Tin K2 Foxpro Sáng 34 Cho quan hệ r sau đây: A B C D E Phải bổ sung vào r liệu để quan hệ r thoả mãn phụ thuộc đa trị A→→BC CD→→BE 35 Quan hệ r sau đây: A B C D E 2 1 0 2 1 1 0 2 1 Thoả mãn phụ thuộc đa trị số phụ thuộc đa trị sau đây: 58 A→→B, AC→D, AC→BE Quan hệ r thoả mãn phụ thuộc đa trị AC→BE 36 Cho quan hệ r(A,B,C,D) Quan hệ r phải để phụ thuộc đa trị ∅→→CD r r = πAB(r) × πCD(r) 37 Cho quan hệ r lược đồ quan hệ R X, Y, Z, W tập thuộc tính R Chứng minh phát biểu sau đúng: a Nếu r thoả X→→Y r thoả XZ→→Y b Nếu r thoả X→→Y X→→Z r thoả X→→YZ c Nếu r thoả {X→→Y, X→→Z} r thoả {X→→Y∩Z, X→→Y-Z} d Nếu r thoả {X→→Y, Y→→Z} r thoả {X→→YZ, X→→Z-Y} a Xét quan hệ r thoả X→→Y Giả sử ∃ t1, t2 ∈ r cho t1[XZ] = t2[XZ] Ta có: t1[X] = t2[X] t1[Z] = t2[Z] Do r thoả X→→Y nên tồn t3 cho: t3[X] = t1[X], t3[Y] = t1[Y] t3[R-XY] = t2[R-XY] => t3[R-XYZ] = t2[R-XYZ] Mặt khác: t3[(R-XY) ∩ Z] = t1[(R-XY)∩Z] (do (R-XY)∩Z⊆R-XY (RXY)∩Z⊆Z) Vậy: t3[X] = t1[X], t3[Y] = t1[Y] t3[(R-XY)∩Z] = t1[(R-XY)∩Z] => t1[XZ] = t1[XZ] Vậy, ∃t3 ∈ r cho: t3[XZ] = t1[XZ], t3[Y] = t1[Y] t3[R-XYZ] = t2[R-XYZ] => r thoả XZ→→Y b Xét quan hệ r thoả X→→Y X→→Z Giả sử ∃ t1, t2 ∈ r cho: t1[X] = t2[X] Do r thoả X→→Y nên ∃t3∈r cho t3[X] = t1[X] t3[Y] = t1[Y] t3[R-XY] = t2[R-XY] Do r thoả X→→Z nên ∃t4∈r cho t4[X] = t1[X] (1) 59 (1) (2) t4[Z] = t1[Z] t4[R-XZ] = t3[R-XZ] ⇒ t3[R-XYZ] = t2[R-XYZ] ⇒ t4[R-XYZ] = t3[R-XYZ] ⇒ t4[R-XYZ] = t2[R-XYZ] (2) (*) Ta có: t4[Y∩(R-XZ)] = t3[Y∩(R-XZ)] (Do Y∩(R-XZ)⊆R-XZ t4[R-XZ]=t3[R-XZ]) t3[Y∩(R-XZ)] = t1[Y∩(R-XZ)] (Do Y∩(R-XY) ⊆ Y t3[Y] = t1[Y]) ⇒ t4[Y∩(R-XZ)] = t1[Y∩(R-XZ)] Vậy: t4[X] = t1[X], t4[Z] = t1[Z] t4[Y∩(R-XZ)] = t1[Y∩(R-XZ)] ⇒ t4[YZ] = t1[XZ] ⇒ ∃t4 ∈ r thoả t4[X] = t1[X], t4[YZ] = t1[YZ] t4[R-XYZ] = t2[R-XYZ] ⇒ r thoả X→→YZ c Sử dụng qui tắc hợp bù để chứng minh d Chứng minh {X→→Y, Y→→Z} |= X→→YZ Xét quan hệ r thoả {X→→Y, Y→→Z} Giả sử ∃t1, t2 ∈ r cho: t1[X] = t2[X] Do r thoả X→→Y nên ∃t3∈r cho: t3[X] = t1[X] t3[Y] = t1[Y] t3[R-XY] = t2[R-XY] Do r thoả Y→→Z nên ∃t4∈r cho: t4[Y] = t1[Y] t4[Z] = t1[Z] t4[R-YZ] = t3[R-YZ] Ta nhận thấy: t4[YZ] = t1[YZ] (1) t4[R-XYZ] = t3[R-XYZ] = t2[R-XYZ] (2) Ta có: t3[X] = t1[X] t4[R-YZ] = t3[R-YZ] ⇒ t4[X∩(R-YZ)] = t1[X∩(R-YZ)] (3) Từ (1) (3), suy ra: t4[(X∩(R-YZ))∪YZ] = t1[(X∩(R-YZ))∪YZ] Do X ⊆ (X∩(R-YZ))∪YZ => t4[X] = t1[X] (4) Từ (4), (1) (2) => X→→YZ Sử dụng kết câu (c) để chứng minh r thoả X→→Z-Y 60 38 Cho quan hệ r lược đồ quan hệ R X, Y, Z, W tập thuộc tính R Chứng minh r thoả X→→Y Z⊆W r thoả XW→→YZ Hướng dẫn Giả sử ∃t1, t2 ∈ r thoả t1[XW] = t2[XW] Chứng minh tồn t∈r thoả: t[XW] = t1 [XW], t[YZ] = t1[YZ] t[R-XYW] = t2[R-XYW] 39 Cho lược đồ quan hệ R(A, B, C, D, E) Chứng minh quan hệ r R thoả tập phụ thuộc đa trị: F = {A→→BC, DE→→C} r thoả A→→BDE, A→→CDE Hướng dẫn Ta có: A→→BC ⇒ A→→DE (tính bù) DE→→C ⇒ A→→C (bắc cầu) ⇒ A→→ B (luật tách) ⇒ A→→BDE A→→CDE (luật hợp) 40 Cho quan hệ r(R) X Y tập thuộc tính R, Z=R-XY Chứng minh phép tách ρ = (XY, XZ) phép tách bảo toàn thông tin r thoả X→→Y Hướng dẫn (⇒) Giả sử phép tách ρ = (XY, XZ) phép tách bảo toàn thông tin tức r = πXY(r) ⋈ πXZ(r) Giả sử ∃t1, t2 ∈ r cho t1[X] = t2[X] => ∃t1’ ∈ πXY(r) cho t1’ = t1[XY] ∃t2’ ∈ πXZ(r) cho t2’ = t2[XZ] Do r = πXY(r) ⋈ πXZ(r) nên r phải tồn t3 cho: t3[XY] = t1[XY] t3[XZ] = t2[XZ] Vậy r phải tồn t3 thoả điều kiện t3[X] = t1[X], t3[Y] = t1[Y] t3[R-XY] = t2[R-XY] ⇒ r thoả X→→Y (⇐) Xét quan hệ r thoả phụ thuộc đa trị X→→Y, ta chứng minh r = πXY(r) ⋈ πXZ(r) Hiển nhiên r ⊆ πXY(r) ⋈ πXZ(r) 61 Xét t ∈ πXY(r) ⋈ πXZ(r) => ∃t1 ∈ πXY(r) ∃t2 ∈ πXZ(r) cho: t1[X] = t2[X] = t[X], t1[Y] = t[Y] t2[Z] = t[Z] Ta lại có: ∃t1’ ∈ r cho t1’[XY] = t1 ∃t2’ ∈ r cho t2’[XZ] = t2 Do r thoả X→→Y nên ∃t’ ∈ r cho: t’[X] = t1’[X] = t[X], t’[Y] = t1’[Y] = t[Y] t[Z] = t2’[Z] = t[Z] ⇒ t’ = t ⇒t∈r Vậy r = πXY(r) ⋈ πXZ(r) ⇒ Phép tách ρ phép tách bảo toàn thông tin 41 Cho lược đồ quan hệ R(A, B, C, D, E, F) tập phụ thuộc đa trị R: F = {A→→BC, AD→→EF} Tinh sở phụ thuộc A, AD 42 Cho quan hệ R(A,B,C,D,E) tập phụ thuộc hàm R: F = {AB→C, C→D, D→AE} Tìm tất khoá R a b Phụ thuộc hàm tập phụ thuộc hàm F vi phạm BCNF Giả sử ta tách R thành hai lược đồ R 1(A,D,E) R2(B,C,D) Hãy xác c định tập phụ thuộc hàm cực tiểu R1 R2 d Tìm tất khoá R1 R2 Xác định dạng chuẩn R1 R2 e R = ABCDE, F = {AB→C, C→D, D→AE} a Tập khoá R: {BD, CB, AB} b Phụ thuộc hàm C→D D→AE vi phạm BCNF c πADE(F) = {D→AE} πBCD(F) = {BD→C, C→D} d R1(ADE) dạng chuẩn Boyce-Codd, R2(BCD) dạng chuẩn 43 Cho lược đồ quan hệ R(A,B,C) tập phụ thuộc hàm F = {AB→C, A→B} R Hãy cho ví dụ để chứng tỏ phụ thuộc hàm F suy dẫn logic phụ thuộc hàm lại 62