Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
134,5 KB
Nội dung
Hoàng Hà-TINK6 TOLIVEISTOFIGHT! ÔN TẬP CƠ SỞ DỮ LIỆU I TÁCH LƯỢC ĐỒ QUAN HỆ VỀ DẠNG 3NF Trước tách phải kiểm tra xem lược đồ cho dạng phủ tối thiểu hay chưa? BƯỚC 1:Thuật toán tìm phủ tối thiểu là: Phụ thuộc hàm tương đương: Cho hai tập phụ thuộc hàm F G, F G gọi hai tập phụ thuộc hàm tương đương hay F phủ G (G phủ F), phụ thuộc hàm F thuộc G+ phụ thuộc hàm G thuộc F+ Phủ tối thiểu: Cho tập phụ thuộc hàm F quan hệ R Phủ tối thiểu F đồng thời thỏa mãn điều kiện sau: 1.Vế phải F chứa thuộc tính Không chứa thuộc tính dư thừa vế trái Không chứa phụ thuộc hàm dư thừa Thuật toán tìm phủ tối thiểu là: Bước 1: tách phụ thuộc hàm dựa vào luật Tách cho Vế phải phụ thuộc hàm chứa thuộc tính Bước 2: Loại bỏ thuộc tính dư thừa vế trái phụ thuộc hàm Ở bước ta xét phụ thuộc hàm mà vế trái chứa từ hai thuộc tính trở lên(ví dụ:ab >c) giả sử f:X >Y thuộc vào tập phụ thuộc hàm F B tập X B >Y thuộc vào F+ Khi X:=B Bước 3::Loại bỏ phụ thuộc hàm dư thừa giả sử f thuộc vào F, G=F-f Mà G+=F+ f phụ thuộc hàm dư thừa đó, ta loại bỏ f cách gán F:=G BƯỚC 2: loại bỏ tất thuộc tính không liên quan đến phụ thuộc hàm F BƯỚC 3: Nếu có phụ thuộc hàm F mà liên quan đến tất thuộc tính R kết R BƯỚC 4: Phép tách phụ thuộc hàm có dạng X >A thành lược đồ Ri(XA) Nếu X >A1, X >A2, ,X->An thuộc vào F thay XA=XA1A2A3 An Chủ yếu sử dụng bước đầu tiên, quan trọng Sau ví dụ: Bài 9: Tìm phủ tối thiểu F Hoàng Hà-TINK6 TOLIVEISTOFIGHT! F={ MSCD >CD CD >MSCD; CD,MSSV >HG; MSCD,HG > MSSV; CD,HG > MSSV; MSCD, MSSV >HG; } ÁP DỤNG : BƯỚC 1: Tách tất phụ thuộc hàm dạng vế phải chứa thuộc tính, theo bước không cần làm BƯỚC 2: Loại bỏ thuộc tính dư thừa vế phải phụ thuộc hàm - Ta xét phụ thuộc hàm 3,4,5,6 - Xét phụ thuộc hàm CD,MSSV > HG + giả sử loại bỏ thuộc tính CD tính MSSV+=MSSV không chứa HG nên thuộc tính CD không dư thừa + giả sử loại bỏ thuộc tính MSSV tính CD+=CD,MSCD không chứa HG nên thuộc tính không dư thừa - Xét phụ thuộc hàm MSCD,HG >MSSV + giả sử loại bỏ thuộc tính MSCD tính HG+= HG ko chứa thuộc tính MSSV nên tt MSCD ko dư thừa + giả sử loại bỏ thuộc tính HG tính MSCD+=CD,MSCD ko chứa MSSV nên thuộc tính ko dư thừa - Xét tương tự cho phụ thuộc hàm 5,6: ko có thuộc tính dư thừa Vậy sau bước này, tập phụ thuộc hàm F giữ nguyên BƯỚC 3: Loại bỏ phụ thuộc hàm dư thừa Ta phải xét phụ thuộc hàm - Xét CD >MSCD: Loại bỏ pth khỏi F để tính CD+ CD+=CD khác U nên pth ko dư thừa -tương tự pth MSCD >CD ko dư thừa - Xét pth CD,MSSV >HG Loại bỏ phụ thuộc hàm khỏi F để tính (CD, MSSV)+ (CD, MSSV)+=CD,MSCD,MSSV,HG=U Mặt khác ta có: CD >MSCD Hoàng Hà-TINK6 TOLIVEISTOFIGHT! CD,MSSV >MSCD,MSSV (Tăng trưởng) MSCD,MSSV >HG (giả thiết) CD,MSSV >HG (Bắc cầu) Vì phụ thuộc hàm dư thừa nên bị loại bỏ khỏi F Khi đó: F={ MSCD >CD CD >MSCD; MSCD,HG > MSSV; CD,HG > MSSV; MSCD, MSSV >HG; } -XÉT tương tự ta tìm thêm phụ thuộc hàm dư thừa là: MSCD,HG >MSSV Vậy phủ tối thiểu F là: MSCD >CD CD >MSCD; CD,HG > MSSV; MSCD, MSSV >HG; II CHUẨN HÓA LƯỢC ĐỒ QUAN HỆ VỀ DẠNG BCNF 1.Định nghĩa - Lược đồ quan hệ R(U) đạt dạng chuẩn BCNF phụ thuộc hàm XA thỏa mãn A ko thuộc X X khóa Thuật toán -B1: Ban đầu phép tách có R -B2: Cho lược đồ quan hệ R(U) với tập phụ thuộc hàm F Nếu tồn phụ thuộc hàm f:XA không BCNF tách lược đồ quan hệ thành hai lược đồ là: R1=XA R2=U- {A} Lúc R1 đạt BCNF với khóa X Lặp lại b2 với lược đồ R2 Ở bước kiểm tra xem lược đồ đạt BCNF chưa III THUẬT TOÁN TÌM KHÓA Định nghĩa khóa: Cho lược đồ quan hệ R(U), với U tập thuộc tính K tập U, K gọi khóa thỏa mãn hai điều kiện: KU thuộc vào F+ ( K+=U K gọi siêu khóa) Không tồn K1 K mà K1+=U Cho lược đồ quan hệ R(U), với tập phụ thuộc hàm F Bước 1: Gán K=U; Hoàng Hà-TINK6 TOLIVEISTOFIGHT! Bước 2: Gán K=K-A (K-A)+=U, A thuộc U Bước 3: Lặp lại bước loại thêm phần tử Kết luận: K khóa cần tìm Chú ý: Thay đổi thứ tự loại thuộc tính dẫn đến việc tìm khóa khác lược đồ quan hệ Chú ý: Các thuộc tính nằm bên trái phụ thuộc hàm chắn tham gia vào khóa Các thuộc tính nằm bên phải phụ thuộc hàm chắn không tham gia vào khóa Các thuộc tính nằm hai bên phụ thuộc hàm tham gia vào khóa không Ví dụ: Bài 8: cho lược đồ quan hệ R(ABCD) F={ABC, DB, CABD } Bài làm: Bước 1: Gán K=ABCD; Bước 2: Gán K=ABCD- A=BCD Tính K+= (BCD)+= ABCD Do loại thuộc tính A Bước 3: Gán K=BCD-B= CD Tính K+=(CD)+= ABCD Do loại thuộc tính B Bước 4: Gán K=CD – C=D Tính K+=D+=DB #ABCD Do loại thuộc tính C Bước 5: Gán K=CD-D=C Tính K+=C+=ABCD Do dó loại thuộc tính D Vậy khóa R(U) vừa tìm là: C IV.THUẬT TOÁN TÌM NHIỀU KHÓA Cho lược đồ quan hệ R(U), với tập phụ thuộc hàm F Bước 1: tìm tất tập tập thuộc tính U khác tập rỗng Giả sử U={A1A2A3 An} có 2^n -1 tập U khác rỗng Đó là: X={X1,X2,X3, , Xn} Bước 2: Tính Xi+ Bước 3: Nếu Xi+=U Xi gọi siêu khóa Giả sử tập siêu khóa Hoàng Hà-TINK6 TOLIVEISTOFIGHT! S={S1,S2,…, Sk} Bước 4: Từ tập siêu khóa ta tìm tập khóa sau: Với Si, Sj thuộc tập siêu khóa , i # j, i ,j=1,k Nếu Si tập Sj loại Sj Tập lại tập khóa Ví dụ: Bài 13: Cho lược đồ quan hệ Q(ABCD) F={AD, DA, ABC} Tìm tất khóa Q Bài làm: Xi A B C D AB AD AC BD BC CD ABC ABD ACD BCD ABC D Xi+ Siêu khóa Khóa AD B C AD ABCD AD ADC ABCD BC ACD ABCD ABCD ACD ABCD ABCD AB AB BD BD ABC ABD BCD ABCD Vậy khóa lược đồ quan hệ Q AB BD V.THUẬT TOÁN TÌM KHÓA CẢI TIẾN 1.Định nghĩa Tập nguồn(TN): tập tất thuộc tính nằm bên trái phụ thuộc hàm không tham gia vào phụ thuộc hàm Tập trung gian(TG): tập tất thuộc tính nằm hai bên phụ thuộc hàm Tập đích(TĐ): tập tất thuộc tính nằm bên phải phụ thuộc hàm Hoàng Hà-TINK6 TOLIVEISTOFIGHT! 2.Thuật toán Bước 1: Tìm tập trung gian Bước 2: Nếu tập trung gian= Rỗng Khóa= tập nguồn Nếu tập trung gian khác rỗng tìm tất tập tập trung gian Giả sử tập là: X1,X2, Xn Bước 3: tính (Xi U TN) Tìm (Xi U TN)+? Bước 4: Nếu (Xi U TN)+= U Xi U TN siêu khóa Bước 5: Từ tập siêu khóa ta tìm tập khóa thuật toán Ví dụ: tìm khóa Q(ABCD) F={AB C, D B, C ABD} TẬP NGUỒN: RỖNG TẬP TRUNG GIAN= ABCD Xi Xi U TN (Xi U TN)+ Siêu khóa Khóa O O O A A A B B B C C ABCD C C D D BD AB AB ABCD AB AB AC AC ABCD AC AD AD ABCD AD BC BC ABCD BC BD BD BD CD CD ABCD CD ABC ABC ABCD ABC AD Hoàng Hà-TINK6 TOLIVEISTOFIGHT! ABD ABD ABCD ABD ACD ACD ABCD ACD BCD BCD ABCD BCD ABC D ABCD ABCD ABCD Vậy Q có khóa là: C, AB, AD VI THUẬT TOÁN TÌM BAO ĐÓNG CỦA TẬP THUỘC TÍNH 1.Định nghĩa Bao đóng tập phụ thuộc hàm: cho lược đồ quan hệ R(U) tập phụ thuộc hàm F, bao đóng tập phụ thuộc hàm F, ký hiệu F+, tập tất phụ thuộc hàm suy rộng từ F theo hệ tiên đề Amstrong Bao đóng tập thuộc tính: cho X tập tập thuộc tính U Bao đóng X, ký hiệu X+, tập tất thuộc tính A cho phụ thuộc hàm XA suy diễn logic từ F nhờ hệ tiên đề Amstrong X+={A|XA thuộc F+} Bài toán thành viên: Cho R(U), tập phụ thuộc hàm F, xác định xem f: X Y có thuộc F+ hay không? BG: X Y thuộc F+ Y thuộc X+ Thuật toán tìm bao đóng tập thuộc tính Input: R(U), F,X tập U Output: X+? Bước 1: gán X0=X; Bước 2: gán Xi+1=Xi U A tồn tập thuộc tính Y Xi mà YZ thuộc vào F+, A thuộc Z Bước 3: Ta xây dựng dãy tập thuộc tính Xn chứa Xi+1 chứa Xi chứa X1 chứa X0 Thuật toán dừng Xi=Xi+1 Ví dụ: 6a:cho R(ABCD), F={A D, D A, AB C} TÍNH AC+? BG: Bước 1: X0=X=AC ACAC Hoàng Hà-TINK6 TOLIVEISTOFIGHT! Bước 2: X1=X0 U D =ACD AD Bước 3: X2=X1 U A=ACD DA Do Xi+1=Xi nên dừng Kết luận : AC+= ACD *Các khái niệm hệ tiên đề Amstrong cho tập phụ thuộc hàm 1.Phụ thuộc hàm: Cho lược đồ quan hệ R(U), X,Y tập U Ta nói X xác định Y hay XY r quan hệ R với mọii t1, t2 cho t1[X]=t2[X] t1[Y]= t2[Y] Hay: Không tồn giống thuộc tính X mà khác hay nhiều thuộc tính Y Hệ tiên đề Amstrong a- Phản xạ: Y tập X XY b- Tăng trưởng: Nếu XY, Z tập U XZYZ c- Bắc cầu: Nếu XY, YZ XZ 3.Bổ đề: a- Luật tách: XY Z tập Y XZ b- Luật hợp: Nếu X Y X Z X YZ c- Luật tựa bắc cầu: Nếu XY WY Z WXZ VI CÁC DẠNG CHUẨN CỦA LƯỢC ĐỒ QUAN HỆ DẠNG CHUẨN 1NF Lược đồ quan hệ R(U) đạt 1NF toàn miền có mặt lược đồ quan hệ chứa giá trị nguyên tố Chú ý: không nói thêm lược đồ cho đạt chuẩn 1NF DẠNG CHUẨN 2NF Lược đồ quan hệ R(U) đạt 2NF R đạt 1NF thuộc tính không khóa phụ thuộc hàm đầy đủ vào khóa Tức là: thuộc tính không khóa không phụ thuộc vào tập khóa Chú ý: -Tập thuộc tính không khóa = rỗng 2NF - Khóa có thuộc tính 2NF Hoàng Hà-TINK6 TOLIVEISTOFIGHT! Phụ thuộc hàm đầy đủ: Cho lược đồ quan hệ R(U), tập phụ thuộc hàm F,X,Y tập U Ta nói Yphụ thuộc hàm đầy đủ vào X hay XY phụ thuộc hàm đầy đủ Y phụ thuộc vào X Và Y không phụ thuộc vào tập X 3.DẠNG CHUẨN 3NF R(U) đạt dạng chuẩn 3NF R đạt 2NF thuộc tính không khóa không phụ thuộc hàm bắc cầu vào khóa Chú ý:- tập thuộc tính không khóa = rỗng 3NF BCNF 3NF Phụ thuộc hàm bắc cầu: X tập U, A thuộc tính U Ta nói A phụ thuộc hàm bắc cầu vào X tồn tập Y tập thuộc tính U, cho XY YA, đồng thời Y! X 4.DẠNG CHUẨN BCNF R(U) đạt BCNF XA thỏa R,nếu A không thuộc X X khóa R Chú ý: BCNF 3NF Tách lược đồ quan hệ Cho lược đồ quan hệ R(U), R tách thành lược đồ Ri, i=1k; R=R1 U R2 U U Rk Các Ri không thiết phải giống Bài tập: kiểm tra phép tách có kết nối không mát thông tin Input: R(U), Ri, i=1,k Output: kiểm tra phép tách có kết nối không mát thông tin Bước 1: Lập bảng hai chiều gồm n cột k dòng tương ứng với n thuộc tính k lược đồ Điền giá trị bảng sau: Nếu Aj thuộc vào Ri điền aj, ngược lại điền bij vào dòng i, cột j Bước 2:Áp dụng phụ thuộc hàm lên bảng Nếu XY thuộc vào F+ , X làm Y Nếu giá trị Y aj ưu tiên làm aj, ngược lại làm bij Áp dụng cho phụ thuộc hàm, kể phụ thuộc hàm áp dụng Bước 3: xuất chứa đầy đủ a1,a2, an kết luận phép tách có kết nối không mát thông tin Hoàng Hà-TINK6 TOLIVEISTOFIGHT! Tìm kiếm sử dụng ngôn ngữ SQL a Tạo bảng CREATE_TABLE(danh_sách_thuộc_tính kiểu_dữ_liệu, ….) Xóa bảng DROP_TABLE Tên bảng Thêm liệu INSERT INTO Tên bảng VALUE () b Tìm kiếm Cấu trúc chung khối lệnh tìm kiếm là: SELECT[*/distinct] ds_thuộc_tính/ biểu thức FROM ds_bảng WHERE biểu _thức_điều_kiện GROUP BY ds_thuộc_tính HAVING biểu_thức_điều_kiện ORDER BY thuộc_tính ASC/DESC Trong đó: SELECT: xác định nội dung cần đưa kết *: chọn tất cột Distinct: loại bớt dòng liệu trùng Biểu thức kết hợp thuộc tính, toán tử, hàm gom nhóm Min, Max, Avg, Count… FROM: Xác định bảng cần lấy thông tin WHERE: xác định điều kiện việc truy xuất liệu Sau mệnh đề where biểu thức điều kiện, thỏa mãn điều kiện xuất bảng kết Trong mệnh đề Where thường sử dụng: - Toán tử so sánh: >,=,[...]... trong biểu thức COUNT(*): đếm số các bộ được chọn MAX(biểu thức): tính giá trị lớn nhất MIN(biểu thức): tính giá trị nhỏ nhất Chú ý: - Các hàm sum, avg chỉ làm việc với các biểu thức số - hàm count(*) không bỏ qua giá trị null khi tính toán ORDER BY : sắp xếp kết quả truy vấn theo 1 trường nào đó tăng dần hoặc giảm dần Sau order by là danh sách các cột cần sắp xếp, tăng dùng ASC, giảm dùng DESC.Mặc định ... 1.Định nghĩa Tập nguồn(TN): tập tất thuộc tính nằm bên trái phụ thuộc hàm không tham gia vào phụ thuộc hàm Tập trung gian(TG): tập tất thuộc tính nằm hai bên phụ thuộc hàm Tập đích(TĐ): tập tất thuộc... 2.Thuật toán Bước 1: Tìm tập trung gian Bước 2: Nếu tập trung gian= Rỗng Khóa= tập nguồn Nếu tập trung gian khác rỗng tìm tất tập tập trung gian Giả sử tập là: X1,X2, Xn Bước 3: tính (Xi... không khóa không phụ thuộc hàm bắc cầu vào khóa Chú ý:- tập thuộc tính không khóa = rỗng 3NF BCNF 3NF Phụ thuộc hàm bắc cầu: X tập U, A thuộc tính U Ta nói A phụ thuộc hàm bắc cầu vào X tồn tập