Giai Bai Tap Co So Du Lieu 2
CHƯƠNG ITÌM BAO ĐÓNG CỦA TẬP THUỘC TÍNH1. Định nghĩa bao đóng : Cho lược đồ quan hệ R=(U, F). Bao đóng của tập thuộc tính X (X Í U), ký hiệu X+ là tập tất hợp cả các thuộc tính mà có thể suy diễn logic từ X.· Nhận xét: Bao đóng của tập thuộc tính X thực chất là tập tất cả các thuộc tính mà ta có thể “với tới” (hay suy ra) nó từ tập thuộc tính X ban đầu.· Việc tính toán bao đóng là cơ sở cho việc tìm khoá, tìm tập khoá, kiểm tra một phụ thuộc hàm nào đó có tồn tại trong quan hệ hay không...2. Thuật toán tìm bao đóng của tập thuộc tínhĐầu vào: Tập thuộc tính X cần tính bao đóng trên lược đồ quan hệ R=(U,F).Đầu ra: Tập thuộc tính X++ Phương pháp: Kiểm tra lần lượt từng phụ thuộc hàm fi = a®b, nếu aÍ X+ thì kết nạp vế phải (tức b) vào vào X+: X+ := X+ Èb.Lặp lại cho đến khi nào X+ = Const.Thuật toán 1CònThayĐổi := True;X+ := X;While Còn_Thay_Đổi DoBegin Còn_Thay_Đổi := False; For mỗi fi = a®b Do Begin If aÍ X+ Then Begin X+ := X+ Èb; Còn_Thay_Đổi := True; End; End;End;*** Lưu ý: Việc cài đặt chi tiết thuật toán xin xem trong phụ lụcBài tập áp dụng:Bài tập 1:Cho lược đồ quan hệ R = (U, F)U= {A,B,C,D,E,G,H}F= {ABàC, DàEG, ACDàB, CàA, BEàC, CEàAG, BCàD, CGàBD, Gà H}a) Tính (D)+b) Tính (DE)+c) Tính (BE)+d) Tính (CG)+Giải:a) Tính (D)+X0 = D1) X1 = DEG (áp dụng DEG)2) X2 = DEGH (áp dụng GH) (= Constant)Vậy (D)+ = DEGHb) Tính (DE) +X0 = DE1) X1 = DEG (áp dụng DEG)2) X2 = DEGH (áp dụng GH) (= Constant)Vậy (DE)+ = DEGHc) Tính (BE)+X0 = BE1) X1 = BEC (áp dụng BEC)2) X2 = BECAG (áp dụng CEAG)3) X3 = BECAGD (áp dụng BCD)4) X4 = BECAGDH (áp dụng GH) (= Constant)Vậy (BE)+ = ABCDEGHd) Tính (CG)+X0 = CG1) X1 = CGA (áp dụng CA)2) X2 = CGABD (áp dụng CGBD)3) X3 = CGABDH (áp dụng GH)4) X4 = CGABDHE (áp dụng DEG) (= Constant)Vậy (CG)+ = ABCDEGHBài tập 2: Cho lược đồ quan hệ R = (U, F)U = {A,B,C,D,E,G}F = {CàG, BG à CD, AEG à BC, CG à AE, B à CG }a) Tính C+b) Tính (B)+c) Tính (AEG)+Giải:a) Tính C +X0 = C1) X1 = CG (áp dụng CG)2) X2 = CGAE (áp dụng CGAE)3) X3 = CGAEB (áp dụng AEGBC)4) X4 = CGAEBD (áp dụng BGCD) (= Constant)Vậy (C)+ = ABCDEGb) Tính (B)+X0 = B1) X1 = BCG (áp dụng BCG)2) X2 = BCGD (áp dụng BGCD)3) X3 = BCGDAE (áp dụng CGAE) (= Constant)Vậy (B)+ = ABCDEGc) Tính (AEG)+X0 = AEG1) X1 = AEGBC (áp dụng AEGBC)2) X2 = AEGBCD (áp dụng BGCD) (= Constant)Vậy (AEG)+ = ABCDEG** Chú ý: Tương tự như bao đóng của tập thuộc tính, người ta cũng định nghĩa bao đóng của tập phụ thuộc hàm. Tuy nhiên việc tính bao đóng của tập phụ thuộc hàm nói chung là phức tạp, nó thuộc loại bài toán NP – Khó. Hơn nữa việc tính bao đóng của tập phụ thuộc hàm ít được ứng dụng do vậy xin không đề cập trong tài liệu này.Một ví dụ về tính bao đóng của tập phụ thuộc hàm.Tính (BG à CD)+ với R cho ở bài tập 2.X0 = BG à CDX1 = (BGàC, BG à D) (Theo luật tách trong hệ tiên đề Amstrong)X2 = (BG à C, BG à D, BG à B, BG à G) (Theo luật phản xạ) X3 = (BG à B, BG à G, BG à C, BG à D, BG à CG) (Luật hợp)X4 = (BG à B, BG à G, BG à C, BG à D, BG à CG, CG à AE) …..
CHƯƠNG IITÌM PHỦ TỐI THIỂU CỦA TẬP PHỤ THUỘC HÀMVới mỗi tập phụ thuộc hàm F đã cho, rất có thể có nhiều phụ thuộc hàm là dư thừa, tức là ta có thể suy dẫn ra các phụ thuộc hàm này thông qua tập phụ thuộc hàm còn lại trong F. Vấn đề đặt ra là phải làm sao thu gọn số phụ thuộc hàm F thành tối thiểu (gọi là G) để sao cho G vẫn tương đương với F.Ví dụ về phụ thuộc hàm dư thừa:F = {A à B, B à C, A à C. ở đây phụ thuộc hàm A à C là dư thừa bởi vì ta có thể dễ dàng có được phụ thuộc hàm này thông qua A à B, B à C Như vậy tập phụ thuộc hàm tương đương với F là G = { A à B, B à C }Định nghĩa phụ thuộc hàm dư thừa:Cho lược đồ R = {U, F}, một phụ thuộc hàm trong F có dạng a®b được gọi là dư thừa nếu như bao đóng của a trong tập phụ thuộc hàm F – { a®b } có chứa b. Tức là : (a)+(F – {a®b})Éb.Định nghĩa phủ tương đương:Một tập phụ thuộc hàm G được gọi là tương đương với tập phụ thuộc hàm F của lược đồ R nếu như : F+ = G+. Khi đó ta nói F phủ G hay G phủ F.Định nghĩa phủ tối thiểu:Một phủ tối thiểu của tập phụ thuộc hàm F là một tập phụ thuộc hàm G, Trong đó:+ G tương đương với F (tức là G+ = F+)+ Tất cả các phụ thuộc hàm trong G đều có dạng X à A Trong đó A là một thuộc tính.+ Không thể làm cho G nhỏ hơn được nữa. (Tức là không thể xoá thêm bất kỳ phụ thuộc hàm nào trong G hay xoá đi bất kỳ một thuộc tính nào bên phía phải, phía trái của mỗi phụ thuộc hàm mà G vẫn tương đương với F).Lưu ý : Các phụ thuộc hàm hay các thuộc tính xoá được theo cách trên mà vẫn đảm bảo G tương đương với F thì ta gọi đó là phụ thuộc hàm hay thuộc tính dư thừa.Phương pháp tìm phủ tối thiểu:Bước 1: Tách mỗi phụ thuộc hàm trong F có dạng X à A1A2A3…An thành các phụ thuộc hàm mà vế phải (RH – Right Hand) chỉ có một thuộc tính:X à A1X à A2………X à AnBước 2: Loại bỏ các thuộc tính dư thừa bên phía trái của mỗi phụ thuộc hàm.Bước 3: Duyệt từng phụ thuộc hàm và kiểm tra xem có dư thừa không, nếu dư thừa thì thì xoá đi.Lưu ý: Trình tự bước 2 và 3 là KHÔNG THỂ thay đổi !!!Ở đây ta cần giải thích rõ thế nào thuộc tính dư thừa, phụ thuộc hàm dư thừa ?Định nghĩa 1: Một phụ thuộc hàm có dạng aAàb, với A là một thuộc tính đơn lẻ. Ta nói A là thuộc tính dư thừa nếu có thể suy dẫn ra btừ a, Tức là a+Êb.Ví dụ: Cho F = {AC à B, C à B, ABDE à GH, A à E, A à D}+ Xét phụ thuộc hàm ACà B:Rõ ràng thuộc tính A trong AC à B là dư thừa vì C+ = (CB) É B.+ Xét phụ thuộc hàm ABDE à GH- Thuộc tính A : Không dư thừa vì (BDE)+ = BDE không chứa GH - Thuộc tính B : Không dư thừa vì (ADE)+ = ADE không chứa GH - Thuộc tính D: Dư thừa vì (ABE)+ = ABDE có chứa ABDE ( Loại thuộc tính D khỏi phụ thuộc hàm ABDE à GH ta được ABE à GH+ Xét phụ thuộc hàm ABE à GH- Thuộc tính E: Dư thừa vì (AB)+ = ABDE É ABE + Các thuộc tính trong các phụ thuộc hàm còn lại đều không dư thừa.Cuối cùng ta được tập phụ thuộc hàm không có thuộc tính dư thừa gồm:F = {C à B, AB à GH, A à E, A à D}Định nghĩa phụ thuộc hàm dư thừa:Một phụ thuộc hàm có dạng a®b, được gọi là dư thừa nếu như xoá bỏ nó khỏi tập F thì ta vẫn có : (a)+Êb(tức là vẫn suy dẫn ra b từ a, mặc dù đã xoá bỏ phụ thuộc hàm a®b khỏi F).Ví dụ: Cho F = {A à B, B à C, A à C, B à DE, A à E, A à D}+ Kiểm tra xem A à B có dư thừa hay không bằng cách : Thử loại phụ thuộc hàm này khỏi F sau đó tính A+, Nếu A+ Ê B thì nó là dư thừa, trái lại là không dư thừa.Sau khi loại A à B ta có F = {B à C, A à C, B à DE, A à E, A à D}Rõ ràng A+ = {AED} nên B Ï A+, chứng tỏ A à B là không dư thừa.Vậy phụ thuộc hàm này không thể loại khỏi F.F vẫn là: {A à B, B à C, A à C, B à DE, A à E, A à D}+ Kiểm tra Bà C có dư thừa ?- Loại BC khỏi F, ta có F = {AB, AC, BDE, AE, AD}- B+ = {BDE} không chứa C, chứng tỏ BC là không dư thừa.F vẫn là: {AB, BC, AC, BDE, AE, AD}+ Kiểm tra AC có dư thừa ?- Loại AC khỏi F ta được F = {AB, BC, BDE, AE, AD}- A+ = {ABCDE} có chứa C, chứng tỏ AC là dư thừaè F bây giờ là: F = {AB, BC, BDE, AE, AD}+ Kiểm tra BDE có dư thừa ?- Loại BDE khỏi F, ta được F = {AB, BC, AE, AD}- B+ = {BC} không chứa DE, chứng tỏ BDE không dư thừaè F vẫn là {AB, BC, BDE, AE, AD}+ Kiểm tra AE có dư thừa ?- Loại AE khỏi F, ta được F = {A à B, BC, BDE, AD}- A+ = {ABCDE} chứa E, chứng tỏ phụ thuộc hàm này dư thừaè F bây giờ là: {AB, BC, BDE, AD}+ Kiểm tra AD có dư thừa ?- Loại AD khỏi F, ta được F = {AB, BC, BDE}- A+ = {ABCDE} chứa D, chứng tỏ phụ thuộc hàm AD là dư thừa.è F bây giờ là {AB, BC, BDE}. Duyệt lại các phụ thuộc hàm ta thấy không có phụ thuộc hàm nào bị loại thêm nữa (Tức là F = Const). Do vậy tập phụ thuộc hàm cuối cùng sau khi loại các phụ thuộc dư thừa là:F = {Aà B, B à C, B à DE}Với phương pháp loại bỏ thuộc tính và phụ thuộc hàm dư thừa đã đề cập ở trên, sau đây ta lấy ví dụ thực hiện việc tìm phủ tối thiểu của tập phụ thuộc hàm F.Bài tập áp dụngVí dụ 2: Tìm phủ tối thiểu của tập phụ thuộc hàm T sau đây :T = {ABH à CK, A à D, C à E, BGH à F, F à AD, E à F, BH à E}• Bước 1: Chuyển vế phải của mỗi phụ thuộc hàm thành các thuộc tính đơn lẻ, ta được:– ABH à C– ABH à K– A à D– BGH à F– F à A– F à D– E à F– BH à E• Bước 2: Loại bỏ các thuộc tính dư thừa bên phía trái của mỗi phụ thuộc hàm (Sử dụng phương pháp loại giống như ví dụ 1).+ Xét phụ thuộc hàm ABHC- A dư thừa vì (BH)+ = {BHEFDAKC} có chứa C.- B Không dư thừa vì (AH)+ = {AHD} không chứa C- H không dư thừa vì (AB)+ = {ABD} không chứa Cè Kết quả sau lần thứ nhất:T = {BH à C, ABH à K, A à D, BGH à F, F à A, F à D, E à F, BH à E}+ Tương tự: A dư thừa trong ABHK vì (BH)+ = {BHCEFDAK} chứa K và G dư thừa trong BGHF vì (BH)+ = {BHEFDAKC} có chứa F.è Kết quả cuối cùng:T = {BH à C, BH à K, A à D, BH à F, F à A, F à D, E à F, BH à E}Đển đây ta không thể loại thêm được thuộc tính nào nữa.• Bước 3: Loại bỏ các phụ thuộc hàm dư thừaHiện tại T = {BHàC, BHàK, AàD, BHàF, FàA, FàD, EàF, BHàE}+ Thử loại BH à C, Ta có (BH)+ = {BHFADEK} không chứa C => không dư thừa.+ Thử loại BHàK, Ta có (BH)+ = {BHCFADE} không chứa K => không dư thừa. + Thử loại Aà D, Ta có (A)+ = {A} không chứa D => không dư thừa.+ Thử loại BHà F, Ta có (BH)+ = {BHCKEFAD} có chứa F => luật này dư thừa, loại ra khỏi T, ta được: T = {BHàC, BHàK, AàD, FàA, FàD, EàF, BHàE}+ Thử loại Fà A, Ta có F+ = {FD} không chứa A => không dư thừa+ Thử loại Fà D, ta có F+ = {FAD} có chứa D nên luật này dư thừa. Loại khỏi T ta được : T = {BHàC, BHàK, AàD, FàA, EàF, BHàE}+ Thử loại EF, ta có E+ = {E} không chứa F => Không dư thừa.+ Thử loại BHE, ta có (BH)+ = {BHCK} không chứa E nên không dư thừa.Đến đây ta đã thử xong tất cả các phụ thuộc hàm trong lược đồ. Kết quả cuối cùng ta có phủ tối thiểu T = {BHàC, BHà K, AàD, FàA, EàF, BHàE}.Ví dụ 2: Tìm phủ tối thiểu của lược đồ cho dưới đây:R = <U, F>, Với: U = {ABCDEGH}F = {Aà BC, BE à G, E à D, D à G, A à B, AG à BC}Bước 1 Tách vế phải thành 1 thuộc tính:§ AàB§ AàC§ BEG§ ED§ DG§ AB§ AGB§ AGCBước 2 Xoá thuộc tính dư thừaB dư thừa trong BEG. Vì (E)+ = {DEG} chứa GG dư thừa trong AGB. Vì (A)+ = {ABC} chứa BG dư thừa trong AGC. Vì (A)+ = {ABC} chứa CBước 3 Xoá phụ thuộc hàm dư thừa:AB dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABC} Chứa BAC dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABC} Chứa CAB dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABC} Chứa BEG dư thừa. Vì nếu xoá khỏi F, ta vẫn có (E)+ = {DEG} Chứa GPhủ tối thiểu của F là :1) AB2) AC3) DG4) EDVí dụ 3: Tìm phủ tối thiểu của lược đồ cho dưới đây:R = <U, F>U = (ABCDEGHIJ)F = {A à BDE, DE à G, H à J, J à HI, E à DG, BCà GH, HGàJ, EàG}Bước 1 Tách vế phi thành 1 thuộc tính:§ AB§ AD§ AE§ DEG§ HJ§ JH§ JI§ ED§ EG § BCG§ BCH§ HGJ§ EGBước 2 Xoá thuộc tính dư thừaD dư thừa trong DEG. Vì (E)+ = {DEG} chứa GG dư thừa trong HGJ. Vì (H)+ = {HIJ} chứa JBước 3 Xoá phụ thuộc hàm dư thừa: AD dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABDEG} Chứa DEG dư thừa. Vì nếu xoá khỏi F, ta vẫn có (E)+ = {DEG} Chứa GHJ dư thừa. Vì nếu xoá khỏi F, ta vẫn có (H)+ = {HIJ} Chứa JEG dư thừa. Vì nếu xoá khỏi F, ta vẫn có (E)+ = {DEG} Chứa GPhủ tối thiểu của F là :§ AB§ BCH§ AE§ BCG§ HJ§ JH§ JI§ ED§ EG
CHƯƠNG IIITÌM KHOÁ TỐI THIỂU CỦA LƯỢC ĐỒ QUAN HỆ1. Định nghĩa khoá tối thiểu:Cho lược đồ R = <U,F>, trong đó U là tập thuộc tính, F là tập phụ thuộc hàm. K được gọi là khoá tối thiểu của R nếu như số thuộc tính trong K là ít nhất nhưng vẫn thoả mãn K+ =U .2. Phát biểu bài toán tìm khoá tối thiểu:Cho lược đồ quan hệ R = <U, F>Hãy tìm một khoá (tối thiểu) của quan hệ R.3. Thuật toán tìm khoá tối thiểu (Lưu ý, từ nay nếu không có sự nhầm lẫn thì ta gọi tắt khoá tối thiểu là Khoá).*** Chi tiết cài đặt xin xem trong phần phụ lục.Bài tập áp dụngVí dụ 1:Cho lược đồ R = <U, F> :U = {ABCDE}F = {AB, BC, BDE, AE, AD}Hãy tìm một khoá tối thiểu K của lược đồ R ?Hướng dẫn:Bước 1: Đặt T = {AB} (T là tập các thuộc tính xuất hiện phía trái)P = {BCDE} (P là tập các thuộc tính xuất hiện phía phải)K = U\P = {A}Bước 2: Tính thử K+Ta có K+ = {ABCDE}Vì K+ = U, nên K = {A} là một khoá của R.Ví dụ 2: Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABCDE}F = {ABDE, EAD, DC}Hãy tìm một khoá tối thiểu K của lưược đồ RHướng dẫn : Bước 1: ĐặtT = {ABED}P = {DEAC}K = U\P = {B}Bước 2: Tính thử K+Ta có K+ = {B} ≠ U, nên tiếp tục bước 3Bước 3 : Tính K = K È (T Ç P)Ta có K = K È (T ÇP) = {ABDE}Bước 4 : Thử xoá từng thuộc tính trong T Ç P= {AED} khỏi KThử loại bỏ {A} khỏi K, Ta có:K = {BED} và K+ = {BEDAC} vẫn bằng U, nên ta loại được AThử loại bỏ {E} khỏi K, Ta có:K = {BD} và K+ = {BDC}Do K+ ≠ U nên không loại được {E}. K vẫn là {BDE}Thử loại bỏ {D} khỏi K, Ta có:K = {BE} và K+ = {BEADC} = U. Đến đây ta đã thử hết. Vậy khoá tối thiểu tìm được là : K = {BE}Ví dụ 3 Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABCDEG}F = {ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG}Hãy tìm một khoá tối thiểu K của lược đồ R.Hướng dẫn : Bước 1: Đặt§ T = {ABCDEG} § P = {ABCDEG} (P là tập các thuộc tính xuất hiện phía phải)§ K = U\P = {}Bước 2: Tính thử K+Ta có K+ = { } ≠ U, nên tiếp tục bước 3Bước 3 : Tính K = K È (T Ç P)Ta có K = K È (T Ç P) = {ABCDEG}Bước 4 : Thử xoá từng thuộc tính trong TÇ P = {ABCDEG} khỏi KThử loại bỏ {A} khỏi K, Ta có:K = {BCDEG} và K+ = {BCDEGA} vẫn bằng U, nên ta loại được AThử loại bỏ {B} khỏi K, Ta có:K = {CDEG} và K+ = {CDEGAB} vẫn bằng U, nên ta loại được BThử loại bỏ {C} khỏi K, Ta có:K = {DEG} và K+ = {DEG}Do K+ ≠ U nên không loại được {C}. K vẫn là {DEGC}Thử loại bỏ {D} khỏi K, Ta có:K = {EGC} và K+ = {EGCABD} vẫn bằng U, nên ta loại được DThử loại bỏ {E} khỏi K, Ta có:K = {GC} và K+ = {GCABDE} vẫn bằng U, nên ta loại được EThử loại bỏ {G} khỏi K, Ta có:K = {C} và K+ = {CA}Do K+ = ≠ U nên không loại được {G}. K vẫn là {CG} à Đã thử hết !Đến đây ta đã thử hết. Vậy khoá tối thiểu tìm được là : K = {CG}Ví dụ 4Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABCDEGH}F = {AC, ABC, CDG, CDG, ECABEG,C, HC}Hãy tìm một khoá tối thiểu K của lược đồ RHướng dẫn : Bước 1: ĐặtT = {ABCDEH}P = {ABCDEG}K = U\P = {H}Bước 2: Tính thử K+Ta có K+ = {HCDG} ≠ U, nên tiếp tục bước 3Bước 3 : Tính K = KÈ (T Ç P)Ta có K = KÈ (T Ç P) = {HABCDE}Bước 4 : Thử xoá từng thuộc tính trong TÇ P= {ABCDE} khỏi KThử loại bỏ {A} khỏi K, Ta có:K = {HBCDE} và K+ = {HBCDEGA}Do K+ ¹ U nên không loại được {A}. K vẫn là {HBCDEA}Thử loại bỏ {B} khỏi K, Ta có:K = {HCDEA} và K+ = {HCDEAGB}Do K+ ¹ U nên không loại được {B}. K vẫn là {HCDEAB}Thử loại bỏ {C} khỏi K, Ta có:K = {HDEAB} và K+ = {HDEABCG}Do K+ ¹ U nên không loại được {C}. K vẫn là {HDEABC}Thử loại bỏ {D} khỏi K, Ta có:K = {HEABC} và K+ = {HEABCDG}Do K+ ¹ U nên không loại được {D}. K vẫn là {HEABCD}Thử loại bỏ {E} khỏi K, Ta có:K = {HABCD} và K+ = {HABCDG}Do K+ ¹ U nên không loại được {E}. K vẫn là {HABCDE}.Đến đây ta đã thử hết. Vậy khoá tối thiểu tìm được là : K = {HABCDE}Ví dụ 5:Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABC}F = {AB, BA, CB}Hãy tìm một khoá tối thiểu K của lược đồ RHướng dẫn : Bước 1: ĐặtT = {ABC}P = {AB}K = U\P = {C}Bước 2: Tính thử K+Ta có K+ = {CBA} = UVì K+ = U, nên K = {C} là một khoá của R.Đề thi và bài giải của các khóa trước, bà con tham khảo nha.
mediafire.com ddqzc4y2lmj
Nghe nói bài giải là chính xác. Các bác check có gì tham khảo nha.
đưa ra 3 đề của k11 bà con tham khảo thử nha!
Đề 1 :
1. Cho quan hệ Q (ABCDEGH) và tập phụ thuộc hàm F thỏa Q. (1.5 điểm)
F = { A -> BG ,D -> EG ,GB -> HA , D -> BA , B -> HG }
- Tìm phủ tối thiểu của F.
- Xác định xem các phụ thuộc hàm sau, phụ thuộc hàm nào được suy ra từ F.
o EG -> BD
o AB -> CDEGH
o D -> GH
Đáp án
- Phủ tối thiểu
A -> B Không bỏ
A -> G bỏ vì A -> B -> HG
F = { A -> B ,D -> EG ,GB -> HA , D -> BA , B -> HG }
D -> G bỏ vì D -> B -> HG
F = { A -> B ,D -> E ,GB -> HA , D -> BA , B -> HG }
GB -> H bỏ vì B -> H
F = { A -> B ,D -> E ,GB -> A , D -> BA , B -> HG }
D -> B không bỏ
D -> A bỏ vì D -> B -> GB -> A
F = { A -> B ,D -> E ,GB -> A , D -> B , B -> HG }
B -> H không bỏ
B -> G không bỏ
Bỏ thuộc tính G trong GB -> A vì B -> G
Phủ tối thiểu : {A -> B ,D -> E , B -> A , D -> B , B -> HG}
- EG -> BD không thuộc vì EG+ = EG
- AB -> CDEGH không thuộc vì AB+ = ABHG
- D -> GH thuộc vì D+ = DEBHGA
2. Cho cơ sở dữ liệu
Quản lý rau quả
Loai (ma_loai char(2), ghi_chu char(20), han_luu_giu int)
Sanpham (ma_san_pham char(5), ten_san_pham char(20), ma_loai char(2))
Phieunhapxuat (so_phieu int, ngay_nhap datetime, loai char(1))
Chitietphieu (so_phieu int, ma_san_pham char(5), so_luong int)
Ghi chú :
- <<Han_luu_giu>> : thời gian tính bằng đơn vị là ngày để cho sản phẩm thuộc loại đó có thể trử trong kho mà không bị hư.
- <<Loai>> trong bảng Phieunhapxuat chỉ ra đây là nhập hay xuất :
o Loai = 1 : nhập loai = 0 : xuất
Phát biểu :
- Mỗi một sản phẩm thuộc một loại.
- Mỗi lần nhập một sản phẩm về kho hay xuất sản phẩm ra kho đều được ghi nhận trong bảng “phieuxuatnhap” với thuộc tính loại để phân biệt.
- Cụ thể mỗi lần nhập vào hay xuất kho những mặt hàng nào thì đều được ghi nhận trong bảng chitietphieu.
Câu hỏi :
a. Liệt kê danh sách gồm mã sản phẩm và tên sản phẩm mà có khả năng lưu giử trong kho hơn 3 tuần. (0.5 điểm)
b. Liệt kê danh sách gồm năm, tháng, tổng số lượng nhập vào của hàng hóa có mã là “A”. (Hàm lấy tháng và năm là hàm month(ngày) và year(ngày)). (1 điểm)
c. Liệt kê danh sách gồm mã sản phẩm, tên sản phẩm mà không được nhập vào trong ngày 24/12/2006. (1 điểm)
d. Liệt kê danh sách gồm số phiếu, ngày nhập phiếu mà phiếu này nhập vào nhiều hơn 2 loại hàng hóa. (1 điểm)
e. Liệt kê danh sách cho biết ngày nào mà công ty nhập nhiều mã sản phẩm nhất. (1 điểm)
Đáp án
- Select sp.ma_san_pham,sp.ten_san_pham
From sanpham sp inner join loai l on l.ma_loai = sp.ma_loai
Where l.han_luu_giu > 21
- Select year(p.ngay_nhap), month(p.ngay_nhap), sum(ct.so_luong)
From phieunhapxuat p inner join chitietphieu ct on ct.so_phieu = p.so_phieu
Where ct.ma_san_pham = ‘A’ and p.loai = 1
Group by year(p.ngay_nhap), month(p.ngay_nhap)
- Select ma_san_pham,ten_san_pham
From sanpham
Where ma_san_pham not in (
Select ct.ma_san_pham
From chitietphieu ct inner join phieunhapxuat p on p.so_phieu = ct.so_phieu
Where p.ngay_nhap = ‘12/24/2006’ and p.loai = 1
)
- Select p.so_phieu,p.ngay_nhap
From (phieunhapxuat p inner join chitietphieu ct on ct.so_phieu=p.so_phieu)
Inner join sanpham sp on sp.ma_san_pham = ct.ma_san_pham
Where p.loai = 1
Group by p.so_phieu,p.ngay_nhap
having count(distinct sp.ma_loai) > 2
- Select p.ngay, count(distinct ct.ma_san_pham) as tssp
From phieunhapxuat p inner join chitietphieu ct on ct.ma_phieu = p.ma_phieu
ð Q1
Select ngay
From Q1
Where tssp = (select max(tssp) from Q1)
Đề 2 :
1. Cho quan hệ Q (ABCDEGH) và tập phụ thuộc hàm F thỏa Q. (1.5 điểm)
F = { A -> BG ,D -> EG ,GB -> HA , D -> BA , B -> HG }
- Tìm phủ tối thiểu của F.
- Chứng minh A tương đương B (A <-> B)
Đáp án :
- Phủ tối thiểu
A -> B Không bỏ
A -> G bỏ vì A -> B -> HG
F = { A -> B ,D -> EG ,GB -> HA , D -> BA , B -> HG }
D -> G bỏ vì D -> B -> HG
F = { A -> B ,D -> E ,GB -> HA , D -> BA , B -> HG }
GB -> H bỏ vì B -> H
F = { A -> B ,D -> E ,GB -> A , D -> BA , B -> HG }
D -> B không bỏ
D -> A bỏ vì D -> B -> GB -> A
F = { A -> B ,D -> E ,GB -> A , D -> B , B -> HG }
B -> H không bỏ
B -> G không bỏ
Bỏ thuộc tính G trong GB -> A vì B -> G
Phủ tối thiểu : {A -> B ,D -> E , B -> A , D -> B , B -> HG}
- Chứng minh
A+ = BHG B+ = HGA
2. Cho cơ sở dữ liệu
Quản lý đề tài
Loai (ma_loai char(5), ten loai char(20))
Giaovien (ma_gv char(5), ten_gv char(20))
Sinhvien (ma_sv char(5), ten_sv char(20), nien_khoa int)
Detai (ma_de_tai char(5), ten_de_tai char(50), ma_gv char(5), ma_loai char(5))
Sinhvien_detai (ma_de_tai char(5), ma_sv char(5))
Ghi chú :
- Loai : ghi thông tin về loại đề tài, VD : đề tài thuộc loại “Thống kê”, hay “Tính toán thông minh”,…
- <<nien_khoa>> ghi nhận là một số năm vào học. VD : niên khóa 2006, ghi là 2006
Phát biểu :
- Mỗi một đề tài đăng ký là thuộc duy nhất một loại nào đó, và có một giáo viên hướng dẫn.
- Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm.
- Một sinh viên có thể tham gia làm 1 hay nhiều đề tài (số lượng tùy theo ràng buộc đưa sau)
Câu hỏi
a. Liệt kê danh sách gồm mã sinh viên, tên sinh viên mà là học viên năm thứ 3 (năm học được tính bằng cách lấy năm hiện tại trừ đi niên khóa). (0.5 điểm)
b. Liệt kê danh sách gồm mã sinh viên, tên sinh viên mà làm hơn 2 loại đề tài khác nhau. (1 điểm)
c. Liệt kê danh sách gồm mã giáo viên, tên giáo viên mà không hề tham gia hướng dẫn bất cứ đề tài nào. (1 điểm)
d. Liệt kê danh sách gồm mã đề tài, tên đề tài, tên giáo viên hướng dẫn mà chỉ có duy nhất 1 sinh viên tham gia làm(1 điểm)
e. Liệt kê danh sách gồm mã giáo viên, tên giáo viên mà hướng dẫn ít đề tài nhất.(1 điểm)
Đáp án :
- Select ma_sv, ten_sv
From sinhvien
Where year(date()) – nien_khoa = 3
- Select sv.ma_sv,sv.ten_sv
From (sinhvien as sv inner join sinhvien_detai svdt on sv.ma_sv = svdt.ma_sv)
Inner join detai dt on dt.ma_de_tai = svdt.ma_de_tai
Group by sv.ma_sv,sv.ten_sv
Having count(distinct dt.ma_loai) > 2
- Select ma_gv,ten_gv
From giaovien
Where ma_gv not in (
Select ma_gv from detai
)
- Select dt.ma_de_tai, dt.ten_de_tai, gv.ten_gv
From ( detai dt inner join giaovien gv on gv.ma_gv = dt.ma_gv )
Inner join sinhvien_detai svdt on svdt.ma_de_tai = dt.ma_de_tai
Group by dt.ma_de_tai, dt.ten_de_tai, gv.ten_gv
Having count(svdt.masv) = 1
- Select ma_gv, count(distinct ma_de_tai) as tsdt
From detai
Group by ma_gv
ð Q
Select gv.ma_gv,gv.ten_gv
From Q inner join giaovien gv on gv.ma_gv = Q.ma_gv
Where Q.tsdt = (Select min(Q.tsdt) from Q)
Đề 3 :
1. Cho quan hệ Q (ABCDEGH) và tập phụ thuộc hàm F thỏa Q. (1 điểm)
F = { A -> BG ,D -> EG ,GB -> HA , D -> BA , B -> HG }
- Tìm tất cả các khóa chính.
- Hỏi tập phụ thuộc hàm K { A -> B ,D -> EBHG, B ->H , BG -> HA } có tương đương tập F hay không ? Giải thích tại sao ?
- Tìm bao đóng của các thuộc tính sau
o ABC
o DBG
Đáp án :
A -> B , B -> A , D -> EB , B -> HG
- Tìm tất cả các khóa
DC
- Không tương đương vì B -> G không được suy từ K
- ABC + = ABCHG
- DBG+ = DBGHAE
2. Cho cơ sở dữ liệu
Quản lý nguồn nhân lực
Chucvu (ma_chuc_vu char(5), ten_chuc_vu char(5))
Nhanvien (ma_nhan_vien char(5), ten_nhan_vien char(20), dia_chi char(50))
Congviec (so_cong_van char(5),ma_nhan_vien char(5), ma_chuc_vu char(5),
nam_bat_dau int, thang_bat_dau int, nam_ket_thuc int, thang_ket_thuc int)
Hesoluong (ma_chuc_vu char(5), so_nam_lam_viec int, he_so float)
Phát biểu :
- Mỗi một nhân viên chỉ có thể đảm nhiệm duy nhất một công việc trong 1 thời điểm.
- Mỗi nhân viên vẫn được lưu lại tất cả các chức vụ mà mình đã từng trải qua trong quá trình làm việc.
- Các chức vụ mà nhân viên đó đã làm trong quá khứ và sau đó đổi chức vụ và cũng có thể đổi lại chức vụ đó.
- Một công việc của một nhân viên được ghi nhận bằng năm bắt đầu và tháng bắt đầu và khi đã chuyển sang công việc mới thì năm kết thúc và tháng kết thúc mới được ghi nhận. (Bắt đầu là tính đầu tháng, kết thúc là tính cuối tháng)
- Tiền lương hằng tháng được tính theo hệ số lương theo chức vụ * mức lương căn bản.
- Hệ số lương được tính theo chức vụ và số năm làm việc với chức vụ đó (số năm này làm tròn xuống – tức làm 3 năm 6 tháng là 3 năm)
Câu hỏi :
a. Liệt kê danh sách gồm mã nhân viên và tên nhân viên mà đã làm hơn 2 chức vụ cho công ty. (1 điểm)
b. Liệt kê danh sách gồm mã nhân viên và tên nhân viên mà có làm chức vụ có tên là “giam doc” hay “truong phong” trong thời gian hơn 2 năm. (1 điểm)
c. Liệt kê danh sách gồm tên nhân viên, tên chức vụ hiện tại mà nhân viên này đang làm, và hệ số lương cho chức vụ đó. (1 điểm)
d. Liệt kê danh sách gồm mã nhân viên, tên nhân viên mà đã làm hết mọi chức vụ. (1 điểm)
e. Liệt kê danh sách gồm mã nhân viên, tên nhân viên mà đã làm chức vụ có tên là “truong phong” vào tháng 2 năm 2005 và cho đến bây giờ vẫn còn làm chức vụ đó mà không hề có sự thay đổi. (1 điểm)
Đáp án :
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien
Group by nv.ma_nhan_vien, nv.ten_nhan_vien
Having count(distinct cv.ma_chuc_vu) > 2
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From (nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien)
Inner join chucvu ch on ch.ma_chuc_vu = cv.ma_chuc_vu
Where
ch.ten_chuc_vu in (“giam doc”,”truong phong”)
and
(
([(cv.nam_ket_thuc – cv.nam_bat_dau)*12 + (cv.thang_ket_thuc – cv.thang_bat_dau) >= 24 ] and [cv.nam_ket_thuc is not null] )
Or
( [(year(date()) – cv.nam_bat_dau)*12 + (month(date()) – cv.thang_bat_dau) >= 24 ] and [cv.nam_ket_thuc is null] )
)
- Select nv.ma_nhan_vien, nv.ten_nhan_vien, hs.he_so
From ((nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien)
Inner join chucvu ch on ch.ma_chuc_vu = cv.ma_chuc_vu)
Inner join hesoluong hs on
INT(((cv.nam_ket_thuc – cv.nam_bat_dau)*12 + (cv.thang_ket_thuc – cv.thang_bat_dau))/12) = hs.so_nam_lam_viec
Where cv.nam_ket_thuc is null and cv.thang_ket_thuc is null
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien
Group by nv.ma_nhan_vien, nv.ten_nhan_vien
Having count(distinct cv.ma_chuc_vu) =
(select count(ma_chuc_vu) from chucvu)
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From (nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien) inner join chucvu ch on ch.ma_chuc_vu = cv.ma_chuc_vu
Where ch.ten_chuc_vu = ‘Truong phong’ and
cv.nam_ket_thuc is null and
[
( cv.nam_bat_dau = 2005 and cv.thang_bat_dau <= 2)
Or
( cv.nam_bat_dau < 2005)
]ĐỀ CƯƠNG ÔN TẬP CƠ SỞ DỮ LIỆU
Chương 1: ĐẠI CƯƠNG VỀ CÁC HỆ CƠ SỞ DŨ LIỆU
1) Sự cần thiết của việc tổ chức lưu trữ dữ liệu theo lý thuyếtCSDL.
2) Định nghĩa các thuật ngữ:CSDL,hệ quản trị CSDL,hệ CSDL.
3) Chứ năng và vai trò của hệ quản trị CSDL.
4) Hiểu như thế nào về tính độc lập của dữ liệu?
5) Liệt kê những “vị trí ”của con người có liên quan đến hệ CSDL.
6) Sự phân loại các hệ CSDL.
Chương 2: CÁC MÔ HÌNH DỮ LIỆU
1) Phân loại các mô hình dữ liệu dựa trên các khái niệm được sử dụng để mô tả cấu trúc CSDL.
2) Vai trò của mô hình dữ liệu bậc cao trong quá trình thiết kế CSDL
3) Định nghĩa các thuật ngữ sau trong mô hình thực thể liên kết:Thực thể,thuộc tính,giá trị thuộc tính,thể hiện liên kết,thuộc tính phức hợp,thuộc tính đa trị,thuộc tính suy diễn được,thuộc tính khóa,miền giá trị.
4) Sự khác nhau giữa một thực thể,một kiểu thực thể và một tập thực thể.
5) Sự khác nhau giữa một thực thể lien kết,một tập liên kết và một kiểu liên kết.
6) Vai trò tham gia là gì?Khi nào cần phải sử dụng các tên vai trò trong mô tả các kiểu liên kết.?
7) Khi nào các thực thể lien kết yều được dùng trong việc mô hình hóa CSDL?Định nghĩa các thuật ngữ:kiểu thực thể chủ,kiểu thực thể yếu,khóa bộ phận,kiểu liên kết xác định.
BÀI TẬP
Giả sử sau khi tập hợp các yêu cầu và phân tích,hoạt động của công ty được ghi chép lại như sau:
1. Công ty được tổ chức thành các đơn vị.Mỗi đơn vị có một mã số duy nhất.một tên duy nhất ,một nhân viên cụ thẻ quản lí đơn vị.Việc nhân viên quản lí đơn vị được ghi lại bằng ngày nhân viên đó bắt đầu quản lí.Một đơn vị có thể có nhiều địa điểm.
2. Mỗi đơn vị kiểm soát một dự án.Một dự án có một tên duy nhất,một mã số duy nhất và một địa điểm .
3. Với mỗi nhân viên lưu giữ lại Họ tên ,Mã số,Điạ chỉ,Lương,Giới tính,Ngày sinh.Một nhân viên chỉ được làm việc cho 1 đơn vị,nhưng có thể làm việc trên nhiều dự án do nhiều đơn vị kiểm soát.Cần phải lưu giữ lại số giờ làm việc của mỗi nhân viên trên một dự án.Mỗi nhân viên có thể có một người giám sát trực tiếp,người đó cũng là nhân viên.
4. Mỗi nhân viên có những người phụ thuộc.Những người này được hưởng bảo hiểm theo nhân viên.Với mỗi người phụ thuộc cần lưu giữ Họ tên,Giới tính,Ngày sinh và mối quan hệ với nhân viên (la con hoặc bố ,mẹ…).
Phân tích các kiểu thực thể và kiểu liên kết có trong CSDL.Xây dựng mô hình ER,sau đó chuyển sang mô hình quan hệ.
Chương 3: MÔ HÌNH CSDL QUAN HỆ
1) Định nghĩa các thuật ngữ sau:mienf ,thuộc tính,n-bộ,lược đồ quan hệ,trạng thái quan hệ,cấp của quan hệ,lược đồ CSDL,trạng thái CSDL.
2) Sự khác nhau của siêu khóa và khóa?
3) Liệt kê các phép toán đại ssoos quan hệ và mục đích của tứng phép toán.
Bài tập:
Cho lược đồ cơ sở dư liệu dùng để quản lý hồ sơ sinh viên bao gồm các lược đồ quan hệ:
SV(MaSV,Hoten,Gioitinh,Ngáyinh,Lop)
MON(MaMH,TenMH,Sotiet)
KQ(MaSV,MaMH,Diemthi)
1. Hãy liệt kê các phụ thuộc hàm của các lược đồ quan hệ trên.
2. Hãy thực hiện các câu hỏi sau băng ngôn ngữ đại số quan hệ:
a) Lập danh sách sinh viên nữ lớp “AT4B”gồm MaSV,Hoten.
b) Lập bảng điểm cho tất cả các sinh viên, bảng điểm gồm cột MaSV, TenMH,Diemthi.
c) Lập phiếu điểm cho sinh viên có tên là “AAA” . phiếu điểm gồm các thông tin sau: TenMH, Diemthi.
d) Lập danh sách sinh viên phải thi lai mon “ cơ sở dữ liệu”. Danh sách gồm TenLop, MaSV, Hoten và Diemthi.
e) Đưa ra danh sách các sinh viên chưa có kết quả thi của các môn học.
Chương 4. Lý thuyết thiết kế csdl
Câu hỏi
1. Hãy nêu ra những bất thường có thể sảy ra đối với các thao tác nhạp csdl quan hệ. Vì sao chúng được coi là không tốt ?, hãy minh họa bằng ví dụ.
2. trình bày các nguyên tắc đối với việc thiết kế lược đồ quan hệ. Hãy minh họa việc vi phạm các nguyên tắc đó sẽ có hại như thế nào ?.
3. Vì sao các quy tắc suy diễn Amstrong (Qt1 đến Qt3) là quan trọng ?
4. Phụ thuộc hàm là gì? Việc chỉ ra phụ thuộc hàm giữa các thuộc tính của 1 lược đồ quan hệ dựa trên cơ sở nào?
5. Bao đóng của 1 tập phụ thuộc hàm là gì? Khi nào hai tập phụ thuộc hàm là tương đương?Làm thế nào để kiểm tra tính tương đương của chúng?
6. Tập tối thiểu của các phụ thuộc hàm là gì?Có phải mỗi tập phụ thuộc hàm có một tập tối thiểu phụ thuộc hàm tương đương hay không?
7. Định nghĩa các dạng chuẩn 1NF,2NF,3NF,BCNF.
8. phụ thuộc hàm nào cần tránh khi một quan hê ở 3NF ?
9. dạng chuẩn BCNF khác gì so với 3NF? Vì sao nó dc coi là mạnh hơn 3NF?
10. tính chất bảo toàn phụ thuộc hàm đối với 1 phép tách là gì? Vì sao nó la quan trọng? Vì sao ko thể đảm bảo rằng 1 phép tách các lược đồ quan hệ ko BCNF thành BCNF là bảo toàn phụ thuộc hàm? Hãy cho 1 phản ví dụ.
11. tính chất kết nối bảo toàn thông tin của 1 phép tách là gì? Giữa các tính chất bảo đảm phụ thuộc hàm và kết nối bảo toàn thông tin của phép tách , cái nào quan trọng hơn? Vì sao?
Bài tập
1. cho lược đồ quan hệ R={A,B,C,D} và F={A->B, BC->D, C->A}.Phụ thuộc hàm nào trong các phụ thuộc hàm sau là suy diễn được từ F:
a. C->D b. AC->D c. AD->C d. BC->A e. B->CD
2. cho lược đồ quan hệ R={A,B,C,D,E,G,H} và
F={AB->C, B->D, CD->E, CE->GH, G->A}.
Sử dụng các quy tắc suy diễn ,chứng minh rằng BC->A.
3. cho lược đồ quan hệ R{S,I,D,M} và tập phụ thuộc hàm
F={SI->DM, SD->M, D->M}.
a) Tìm tất cả các khóa của R?
b) Tìm phủ tối thiểu của F?
c) Xác định dạng chuẩn cao nhất của R?
d) Nếu R chưa đạt chuẩn 3NF, hãy tách R thành các lược đồ dạng chuẩn 3NF vừa bảo toàn thông tin , vừa bảo toàn phụ thuộc hàm.
e) Nếu R chưa đạt chuẩn BCNF, hãy tách R thành các lược đồ dạng chuẩn BCNF.
f) Kiểm tra phép tách R thành các lược đồ con R1{SID} và {SIM} có bảo toàn thông tin hay ko?
g) Kiểm tra phép tách R thành các lược đồ con R1{SID} và R2 {SIM} có bảo toàn phụ thuộc hàm hay ko?
và lời giải luôn nè
Bài 1-Chương 2
*Phân tích các kiểu thực thể
-DONVI (tênDV,masoDV,nguoiquanly,ngaybatdau,,diadiem).
Thuộc tính tenDV,masoDV,diadiem là các thuộc tính mô tả đơn vị.
Thuộc tính nguoiquanly,ngaybatdau là các thuộc tính biểu thị một kiểu liên kết (với kiểu thực thể NV).
Thuộc tính khóa: tenDV, masoDV.
Thuộc tính đơn trị: nguoiquanly,ngaybatdau
Thuộc tính đa trị: điadiem.
-DUAN(tenDA,masoDA,diadiemDA,donvikiemsoat)
Thuộc tính tenDA,masoDA, diadiem là các thuộc tính mô tả DUAN.
Thuộc tính donvikiemsoat biểu thị kiểu liên kết với kiểu thực thể DONVI
Thuộc tính khóa: tenDA, masoDA
-NV(hoten,masoNV,diachi,luong,gioitinh,ngaysinh,don vi,nguoigiamsat)
Thuộc tính hoten là một thuộc tính phức hợp.
Các thuộc tính donvi,nguoikiemsat mô tả các kiểu liên kết giữa kiểu thực thể NV và các kiểu thực thể
DONVI và NV tương ứng.
Thuộc tính khóa : masoNV
-NGUOI PHU THUOC(hotenNPT,gioitinh,ngaysinh,moiquanhe)
Thuộc tính moiquanhe mô tả kiểu liên kết với kiểu thực thể NV
*Phân tích kiểu liên kết:
-Kiểu liên kết DONVI <kiểm soát> DUAN:
+là kiểu liên kết có tỷ số lực lượng 1: n.
+Sự tham gia của DUAN vào kiểu liên kết là toàn bộ (v. dự án nào cũng đc một đơn vị kiểm soát)
+Nếu đơn vị nào cũng có dự án th. việc tham gia của DƠNVI vào kiểu liên kết là t.an bộ, ngc lại sự
tham gia là bộ fận
-Kiểu liên kết NV <làm việc cho> DONVI:
+Có tỷ số lực lượng n : 1
+Sự tham gia của hai kiểu thực thể vào liên kết là toàn bộ
-Kiểu liên kết NV <quản l.> DONVI:
+Có tỷ số lực lượng 1:1
+Sự tham gia của kiểu thực thể NV vào kiểu liên kết là bộ fận (v. ko phải nhân viên nào cũng quản l.
đơn vị)
+Sự tham gia của kiểu thực thể DONVI vào kiểu liên kết là toàn bộ (v. đơn vị nào cũng phải có ng'
quản l.)
-Kiểu liên kết NV <giám sát> NV:
+Có tỷ số lực lượng 1:n
+Sự tham gia của kiểu thực thể NV (ở cả hai phía) là bộ fận (v. ko fải nhân viên nào cũng giám sát
nhân viên khác, và ko fải nhân viên nào cũng bị giám sát)
+Kiểu thực thể NV đóng hai vai tr. khác nhau: ng' giám sát và ng' bị giám sát
-Kiểu liên kết NV <làm việc trên> DUAN:
+Có tỷ số lực lượng m:n
+Sự tham gia của kiểu thực thể NV là bộ fận (v. ko fải mọi nhân viên đều làm việc trên dự án)
+Sự tham gia của kiểu thực thể DUAN là toàn bộ ( v. dự án nào cũng phải có nhân viên tham gia)
+Kiểu liên kết này có thuộc tính là sogio, ghi lại số giờ làm việc của một nhân viên trên dự án.
-Kiểu liên kết NV <có> NGUOI PHU THUOC:
+Biểu thị mối liên hệ giữa kiểu thực thể NV và kiểu thưc thể NGUOI PHU THUOC
+Có tỷ số lực lượng 1:n
+Sự tham gia của kiểu thực thể NV là bộ fận (ko phải nhân viên nào cũng có ng' fụ thuộc)
+Sự tham gia của NGUOI PHU THUOC là toàn bộ ( có ng' fụ thuộc th. phải có nhân viên). Ng.ai ra,
kiểu thực thể này là một kiểu thực thể yếu.
*Lược đồ ER:
*Mô h.nh quan hệ:
NV(hodem, ten, masoNV,ngaysinh,diachi,gioitinh,luong,masongaygiam sat,masoDV)
DONVI (tenDV,masoDV,masongouiquanly,ngaybatdau)
DONVI_DIADIEM(masoDV,diadiemDV)
DUAN(tenDA,masoDA,diadiemDA,masoDV)
NV_DUAN(masoNV,masoDA,sogio)
PHUTHUOC(masoNV,hotenNGP,gioitinh,ngaysinh)
Bài 1-Chương 4:
F={a->b, bc->d, c->a}
F+={ a->b, bc->d, c->a, c->b,bc->b,}
a, c->d:
áp dụng tc6 : x->y thuộc F+ <=> y thuoc x+, ta có
c+={ c,a,b,d} => c->d suy diễn dc từ F
b, ac->d: áp dụng tc trên, ta có:
(AC)+= {A,C,B,D} => AC->D suy dien đc từ F
c,AD->C:
(AD)+={A,D,B} => AD->C ko suy diễn đc từ F
d,BC->A:
(BC)+={ B,C,A,D}=>BC->A suy diễn đc từ F
d, B-> CD
B+= {B} => B->CD ko suy diễn đc từ F
Bài 2-chương 4
CE->GH => CE->G & CE->H
CD->E => CD->CE (tăng)
CD ->CE & CE->G => CD ->G (bắc cầu)
B->D =>BC->CD (tăng)
BC->CD & CD->G => BC->G (bắc cầu)
BC->G & G->A => BC->A (bắc cầu) (ĐPCM)
Bài 3- Chương 4
R={ S,I, D,M}
F={SI->DM, SD->M, D->M}
a, t.m tất cả các khóa của R:
TN={S,I}
TG={D}
Xi TN u Xi (TN u Xi)+ Siêu khóa khóa
Rỗng SI SIDM SI SI
D SID SIDM SID
KL: lc đồ trên có 1 khóa K=SI
b, T.m phủ tối thiểu của F
1.loại các thuộc tính dư thừa:
S+F= {S}
I+F={I}
D+F={D,M}==> S dư thừa
Thay SD->M bằng D->M
F1={SI->DM,D=>M}
Tách các vế phải trên một thuộc tính thành các vế phải một thuôc tính
F2={SI->D,SI->M, D->M}
Loại các fụ thuộc hàm dư thừa:
Xét SI->D:
G=F2- {SI->D}= {SI->M, D->M}
(SI)+G= {S,I,M} => SI->D ko thuộc G+ => SI->D ko dư thừa
Xét SI->M:
G=F2- {SI->M}= {SI->D, D->M}
(SI)+G= {S,I,D,M} => SI->D thuộc G+ => SI->M dư thừa
F3={SI->D,D->M}
Xét D->M:
G=F3- {D->M}= {SI->D}
(D)+G= {D} => D->M ko thuộc G+ => D->M ko dư thừa
Vậy F min=F3={SI->D,D->M}
c,T.m chuẩn cao nhất cuaR
Ta có K={SI}
- Xét SD->M: (SD)+= { S,D,M}# R => SD ko là siêu khóa
Vậy R ko đạt BCNF.
– Ta có SD ko là siêu khóa, M ko là thuộc tính khóa => R cũng ko đạt 3NF
– Xét fụ thuộc hàm SI->DM có SI là thuộc tính khóa, DM là thuộc tính ko khóa
=> D,M fụ thuộc đầy đủ vào khóa
=> R đạt chuẩn 2
Vậy chuẩn cao nhất của R là 2NF.
d,Nếu R chưa đạt chuẩn 3NF, h.y tách R thành các lược đồ dạng chuẩn 3NF vừa bảo toàn thông tin,
vừa bảo toàn fụ thuôc hàm
Xét fụ thuộc hàm D->M có:
D+={D,M} # R => D ko fải là siêu khóa, và M ko fải là thuộc tính khóa
Vậy R ko đạt chuẩn 3NF
+Áp dụng phương pháp chuẩn hóa: “loại bỏ các thuộc tính fụ thuộc bắc cầu ra khỏi quan hệ và tách
chúng thành một quan hệ riên có khóa chính là thuộc tính bắc cầu, các thuộc tính c.n lại lập thành một
quan hệ có khóa chính là quan hệ ban đầu”, ta có lược đồ mới bảo toàn thông tin:
D = R1{D,M} và R2{S,I,D}
+Kiểm tra sự bảo toàn fụ thuộc hàm:
-Xác định h.nh chiếu trên R1 của F ( áp dụng tc6 của FD), ta có
D+F={D,M}
M+F={M}
(DM)+F={ D,M}
π R1(F)= {D->M,D->DM,M->D,M->DM}
-Xác định h.nh chiếu của R2 trên F
S+F={S}
I+F={D}
D+F={D,M}
SI+F={S,I,D,M}
SD+F={ S,D,M}
SID+F={S,I,D,M}
π R2(F)= {S->I,S->D,S->ID,I->S,I->D,I->SD,D->S, D->I,D->SI, SI->D,
SD->I, DI->S }
-π R1(F) U π R2(F)=G
G={D->M,D->DM,M->D,M->DM, S->I,S->D,S->ID,I->S,I->D,I->SD,D->S, D->I,D-
>SI, SI->D, SD->I, DI->S }
(SI)+G={M,D,S,I} => SI->DM thuộc G+
(SD)+G ={ S,D, M,I} => SD->M thuộc G+
=> mọi fụ thuộc hàm trong F đều đc suy ra từ G
=> fép tách D bảo toàn FD
e, Nếu R chưa đạt chuẩn BCNF, h.y tách R thành các lược đồ dạng chuẩn BCNF
F={SI->DM, SD->M, D->M}
R1={S,I,M} và R2={ S,I,D}
g, Ktra fép tách R thành R1{SID} và R2{SIM} có bảo toàn thông tin ko?
R1 giao R2={S,I}
R1-R2= {D}
((R1 giao R2)-> (R1-R2))={ SI->D} thuoc F+ => bao toan thong tin
h, ktra phep tach R thanh R1{SID} va R2{SIM} co bao toan fu thuoc ham ko?
Xác định h.nh chiếu trên R1 của F ( áp dụng tc6 của FD), ta có
S+F={S}
D+F={D,M}
I+F={I}
(SI)+F={S,I,D,M}
(ID)+F={I,D,M}
(SD)+F={S,D,M}
(SID)+F={ S,I,D,M}
π R1(F)= {S->I,S->D,S->ID,D->S,D->I,D->SI,I->S,I->D,I->SD, SI->D,SD-
>I, ID->S, IS->D}
-Xác định h.nh chiếu của R2 trên F
S+F={S}
I+F={I}
M+F={M}
SI+F={S,I,D,M}
IM+F={ I,M}
SIM+F={S,I,D,M}
π R2(F)= {S->I,S->M,S->IM, I->M,I->S,I->SM,M->S,M->I,M->SI, SI->M, SM-
>I, IM->S,IS->M }
-π R1(F) U π R2(F)=G
G={ S->I,S->D,S->ID,D->S,D->I,D->SI,I->S,I->D,I->SD, SI->D,SD->I, ID->S, IS-
>D,S->M,S->IM, I->M,I->SM,M->S,M->I,M->SI, SI->M, SM->I, IM->S,IS->M }
(SI)+G={M,D,S,I} => SI->DM thuộc G+
(SD)+G ={ S,D, M,I} => SD->M thuộc G+
D+G={D,I,S,M} => D->M thuoc G+
=> mọi fụ thuộc hàm trong F đều đc suy ra từ G
=> fép tách D bảo toàn FD
Chuong 3:
2.
a. lập danh sách sinh viên nữ của lớp “AT4” gồm MaSV, Hoten
π <MaSV,Hoten>(σLop=”AT4”,Gioitinh=nữ(SV))
b. lập bảng điểm cho tất cả các sinh viên:MaSV,TenMH,Diemthi
π<MaMH,TenMH>R1à(MON)
π<MaSV,TenMH,Diemthi>(KQ*R1)
c.
π<MaSV>(σ<Ten=”AAA”>R1à(SV))
π<MaMH,Diemthi>R2à(KQ*R1)
π<TenMH,Diemthi>(Mon*R2)
d.
π<MaMH>(σ<TenMH=’’cơ sở dữ liệu’’>R1à(MON))
π<MaSV,Diemthi>R2à(KQ*R1)
π<Tenlop,MaSV,Hoten,Diemthi>(SV*R2)
e.
π<MaSV>(σ<Diemthi=NULL>R1à(KQ))
π<MaSV,Hoten,Lop>(SV*R1)Table SINHVIEN
Table KHOA
Table MONHOC
Table KETQUA
Câu hỏi:Quote:01: Tao CSDL, cac bang va cac khoa ngoai cho tren
02: Xoa cac rang buoc khoa ngoai tham chieu den bang SINHVIEN va bang MONHOC
03: Xoa bang KHOA va MONHOC
04: Tao lai cac bang va cac khoa ngoai da xoa o cau 2 va 3
05: Nhap du lieu cho tat ca cac bang
06: Sua so tiet cua mon "Tri Tue Nhan Tao" lai 30 tiet
07: Xoa ket qua cua sinh vien co ma S001
08: Chen lai cac bo cua sinh vien S001 vua xoa o cau 7
09: Sua sinh vien 'Nguyen Thi Lam' thanh 'Nguyen Thanh Son' va phai thanh 'Nam'
10: Chuyen sinh vien 'Le Thi Lan Anh' sang khoa CNTT
11: Cho biet ket qua hoc tap cua sinh vien co ma S007
12: Liet ke nhung sinh vien sinh vao ngay 03 thang 07
13: Cho biet danh sach sinh vien ma ho co chua chu Anh
14: Cho biet ket qua hoc tap gom: HOSV, TENSV, MAMH, LANTHI, DIEM cua sinhvien S007
15: Cho biet ket qua hoc tap gom: HOSV, TENSV, TENMH, LANTHI, DIEM cua sinh vien S007
16: Cho biet danh sach sinh vien Nam khoa 'Cong Nghe Thong Tin' sap tang dan theo ten
17: Cho biet danh sach cac mon hoc tren 40 tiet va co ten bat dau bang chu T
18: Liet ke nhung sinh vien tu 22 tuoi tro len khoa 'Cong Nghe Thong Tin' va khoa 'Dien Tu Vien Thong'
19: Cho biet ten khoa nao khong co Sinh Vien
20: Cho biet danh sach sinh vien sinh vien chua hoc mon nao, thong tin gom Ho, Ten, Ngay sinh, Ten khoa
21: Cho biet danh sach nhung sinh vien da hoc mon co ma AV, sap giam dan theo ngay sinh. Thong tin hien thi gom MASV,HOSV,TENSV,NGAYSINH,ten KHOA
22: Cho biet ten sinh vien duoc diem cao nhat
23: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat
24: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat ma chua thi lai lan 2
25: Dem so luong sinh vien cua khoa 'Quan Tri Kinh Doanh'
26: Dem so luong sinh vien cua tung khoa
27: Cho biet ten khoa co dong sinh vien nhat
28: Cho biet diem thap nhat cua moi mon hoc
29: Cho biet ten mon hoc nao chua co sinh vien hoc
30: Cho biet diem trung binh lan thi thu nhat cua sinh vien S004
31: Cho biet diem trung binh, diem lon nhat, diem nho nhat lan thu nhat cua tung sinh vien. Thong tin gom TenSV, TenKhoa, DiemTB use mastercreate database sinhvienuse sinhvienset DateFormat dmycreate table KHOA( MAKHOA char(5) NOT NULL, TENKHOA nvarchar(50) NOT NULL,constraint PK_KHOA_MAKHOA primary key (MAKHOA) )create table SINHVIEN( HOSV nvarchar(50) NOT NULL, TENSV nvarchar(50) NOT NULL, MASV char(5) NOT NULL, NGAYSINH DateTime, PHAI char(3), MAKHOA char(5),constraint PK_SINHVIEN_MASV primary key (MASV),constraint FK_SINHVIEN_MAKHOA foreign key (MAKHOA) references KHOA(MAKHOA) )create table MONHOC( TENMH nvarchar(50) NOT NULL, MAMH char(5) NOT NULL, SOTIET int,constraint PK_MONHOC_MAMH primary key (MAMH) )create table KETQUA( MASV char(5) NOT NULL, MAMH char(5) NOT NULL, LANTHI decimal NOT NULL, DIEM decimal NOT NULL,constraint PK_KETQUA_MASV_MAMH_LANTHI primary key (MASV,MAMH,LANTHI),constraint FK_KETQUA_MASV foreign key (MASV) references SINHVIEN(MASV),constraint FK_KETQUA_MAMH foreign key (MAMH) references MONHOC(MAMH) )-- khigiadano : 2: Xoa cac rang buoc khoa ngoai tham chieu den bang SINHVIEN va bang MONHOCalter table KETQUA drop constraint FK_KETQUA_MASValter table KETQUA drop constraint FK_KETQUA_MAMH-- khigiadano : 3: Xoa bang KHOA va MONHOCalter table SINHVIEN drop constraint FK_SINHVIEN_MAKHOAdrop table KHOAdrop table MONHOC-- khigiadano : 4: Tao lai cac bang va cac khoa ngoai da xoa o cau 2 va 3create table KHOA( MAKHOA char(5) NOT NULL, TENKHOA nvarchar(50) NOT NULL,constraint PK_KHOA_MAKHOA primary key (MAKHOA) )create table MONHOC( TENMH nvarchar(50) NOT NULL, MAMH char(5) NOT NULL, SOTIET int,constraint PK_MONHOC_MAMH primary key (MAMH) )alter table SINHVIEN add constraint FK_SINHVIEN_MAKHOA foreign key (MAKHOA) references KHOA(MAKHOA)alter table KETQUA add constraint FK_KETQUA_MASV foreign key (MASV) references SINHVIEN(MASV)alter table KETQUA add constraint FK_KETQUA_MAMH foreign key (MAMH) references MONHOC(MAMH)-- khigiadano : 5: Nhap du lieu cho tat ca cac banginsert into KHOA values('CNTT','Cong Nghe Thong tin')insert into KHOA values('QTKD','Quan Tri Kinh Doanh')insert into KHOA values('DTVT','Dien Tu Vien Thong')insert into KHOA values('AVAN','Khoa anh Van')insert into SINHVIEN values('Tran Minh','Son','S001','01/05/1985','Nam','CNTT')insert into SINHVIEN values('Nguyen Quoc','Bao','S002','15/06/1986','Nam','CNTT')insert into SINHVIEN values('Phan Anh','Tung','S003','20/12/1983','Nam','QTKD')insert into SINHVIEN values('Bui Thi anh','Thu','S004','01/02/1985','Nu','QTKD')insert into SINHVIEN values('Le Thi Lan','Anh','S005','03/07/1987','Nu','DTVT')insert into SINHVIEN values('Nguyen Thi','Lam','S006','25/11/1984','Nu','DTVT')insert into SINHVIEN values('Phan Thi','Ha','S007','03/07/1988','Nu','CNTT')insert into SINHVIEN values('Tran The','Dung','S008','21/10/1985','Nam','CNTT')insert into MONHOC values('Ke Toan Tai Chinh','KTTC',45)insert into MONHOC values('Toan Cao Cap','TCC',60)insert into MONHOC values('Co So Du Lieu','CSDL',45)insert into MONHOC values('Ky Thuat Lap Trinh','KTLT',60)insert into MONHOC values('Tin Hoc Van Phong','THVP',30)insert into MONHOC values('Anh Van','AV',45)insert into MONHOC values('Tri Tue Nhan Tao','TTNT',45)insert into KETQUA values('S001','TCC',1,5.5)insert into KETQUA values('S002','CSDL',1,3)insert into KETQUA values('S008','AV',1,7)insert into KETQUA values('S002','CSDL',2,6)insert into KETQUA values('S003','KTTC',1,4.5)insert into KETQUA values('S004','AV',1,8)insert into KETQUA values('S004','THVP',1,3.5)insert into KETQUA values('S006','TCC',1,5)insert into KETQUA values('S001','CSDL',1,4)insert into KETQUA values('S007','AV',1,2)insert into KETQUA values('S004','THVP',2,7.5)insert into KETQUA values('S007','KTLT',1,6)insert into KETQUA values('S007','AV',2,9)-- khigiadano : 6: Sua so tiet cua mon "Tri Tue Nhan Tao" lai 30 tietupdate MONHOC set SOTIET=30 where TENMH='Tri Tue Nhan Tao'-- khigiadano : 7: Xoa ket qua cua sinh vien co ma S001delete from KETQUA where MASV='S001'-- khigiadano : 8: Chen lai cac bo cua sinh vien S001 vua xoa o cau 7insert into KETQUA values('S001','TCC',1,5.5)insert into KETQUA values('S001','CSDL',1,4)-- khigiadano : 9: Sua sinh vien 'Nguyen Thi Lam' thanh 'Nguyen Thanh Son' va phai thanh 'Nam'update SINHVIEN set HOSV='Nguyen Thanh', TENSV='Son', PHAI='Nam' where HOSV='Nguyen Thi' and TENSV='Lam'-- khigiadano : 10: Chuyen sinh vien 'Le Thi Lan Anh' sang khoa CNTTupdate SINHVIEN set MAKHOA='CNTT' where HOSV+' '+TENSV='LE Thi Lan Anh'-- khigiadano : 11: Cho biet ket qua hoc tap cua sinh vien co ma S007select * from KETQUA where MASV='S007'-- khigiadano : 12: Liet ke nhung sinh vien sinh vao ngay 03 thang 07select * from SINHVIEN where day(NGAYSINH)=03 and month(NGAYSINH)=07-- khigiadano : 13: Cho biet danh sach sinh vien ma ho co chua chu Anhselect * from SINHVIEN where HOSV like'%Anh%'-- khigiadano : 14: Cho biet ket qua hoc tap gom: HOSV, TENSV, MAMH, LANTHI, DIEM cua sinhvien S007select HOSV,TENSV,MAMH,LANTHI,DIEM from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and KETQUA.MASV='S007'-- khigiadano : 15: Cho biet ket qua hoc tap gom: HOSV, TENSV, TENMH, LANTHI, DIEM cua sinh vien S007select HOSV,TENSV,TENMH,LANTHI,DIEM from SINHVIEN,MONHOC,KETQUA where SINHVIEN.MASV=KETQUA.MASV and KETQUA.MAMH=MONHOC.MAMH and KETQUA.MASV='S007'-- khigiadano : 16: Cho biet danh sach sinh vien Nam khoa 'Cong Nghe Thong Tin' sap tang dan theo tenselect HOSV,TENSV,MASV,NGAYSINH,PHAI,SINHVIEN.MAKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA='Cong Nghe Thong Tin'-- khigiadano : 17: Cho biet danh sach cac mon hoc tren 40 tiet va co ten bat dau bang chu Tselect * from MONHOC where SOTIET>40 and TENMH like('T%')-- khigiadano : 18: Liet ke nhung sinh vien tu 22 tuoi tro len khoa 'Cong Nghe Thong Tin' va khoa 'Dien Tu Vien Thong'select HOSV,TENSV,MASV,NGAYSINH,PHAI,SINHVIEN.MAKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA in('Cong Nghe Thong Tin','Dien Tu Vien Thong') and year(GetDate())-year(NGAYSINH)>=22-- khigiadano : 19: Cho biet ten khoa nao khong co Sinh Vienselect distinct * from KHOA where MAKHOA not in(select MAKHOA from SINHVIEN)-- khigiadano : 20: Cho biet danh sach sinh vien sinh vien chua hoc mon nao, thong tin gom Ho, Ten, Ngay sinh, Ten khoaselect HOSV,TENSV,NGAYSINH,TENKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and MASV not in(select MASV from KETQUA)-- khigiadano : 21: Cho biet danh sach nhung sinh vien da hoc mon co ma AV, sap giam dan theo ngay sinh.-- khigiadano : Thong tin hien thi gom MASV,HOSV,TENSV,NGAYSINH,ten KHOAselect distinct SINHVIEN.MASV,HOSV,TENSV,NGAYSINH,TENKHOA from SINHVIEN,KHOA,KETQUA where SINHVIEN.MAKHOA=KHOA.MAKHOA and SINHVIEN.MASV=KETQUA.MASV and SINHVIEN.MASV in(select MASV from KETQUA where MAMH='AV')-- khigiadano : 22: Cho biet ten sinh vien duoc diem cao nhatselect HOSV,TENSV,DIEM from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and DIEM=(select max(DIEM) from KETQUA)-- khigiadano : 23: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhatselect HOSV,TENSV from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and MAMH='CSDL' and LANTHI='1' and DIEM<5-- khigiadano : 24: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat ma chua thi lai lan 2select HOSV,TENSV from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and MAMH='CSDL' and LANTHI='1' and SINHVIEN.MASV not in (select MASV from KETQUA where MAMH='CSDL' and LANTHI='2')-- khigiadano : 25: Dem so luong sinh vien cua khoa 'Quan Tri Kinh Doanh'select count(*) as [QTKD] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA='Quan Tri Kinh Doanh'-- khigiadano : 26: Dem so luong sinh vien cua tung khoaselect KHOA.MAKHOA, count(*) as [So Luong] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA group by KHOA.MAKHOA-- khigiadano : 27: Cho biet ten khoa co dong sinh vien nhatselect TENKHOA, count(*) as[So luong] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA group by TENKHOA having count(*)>=ALL(select count(*) as [So Luong] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA group by KHOA.MAKHOA)-- khigiadano : 28: Cho biet diem thap nhat cua moi mon hocselect MAMH,min(DIEM) as [Min diem] from KETQUA group by MAMH-- khigiadano : 29: Cho biet ten mon hoc nao chua co sinh vien hocselect TENMH from MONHOC where MAMH not in(select distinct MAMH from KETQUA)-- khigiadano : 30: Cho biet diem trung binh lan thi thu nhat cua sinh vien S004select MASV,AVG(DIEM) as [Diem TB] from KETQUA where LANTHI=1 and MASV='S004' group by MASV-- khigiadano : 31: Cho biet diem trung binh, diem lon nhat, diem nho nhat lan thu nhat cua tung sinh vien.-- khigiadano : Thong tin gom TenSV, TenKhoa, DiemTBselect HOSV,TENSV,TENKHOA,AVG(DIEM) as [Diem TB],MAX(DIEM) as [Diem MAX],MIN(DIEM) as [Diem MIN] from KETQUA,SINHVIEN,KHOA where SINHVIEN.MASV=KETQUA.MASV and SINHVIEN.MAKHOA=KHOA.MAKHOA and LANTHI=1 group by HOSV,TENSV,TENKHOAMột số bài tậpôn tập thi tốt nghiệp cao đẳng K3Môn Cơ sở dữ liệu------Chú ý: các bài tập này chỉ nhằm minh hoạ phần lý thuyếtPhần I. Đại số quan hệ và ngôn ngữ SQLBài 1. Cho các quan hệ:RABCSBCDQDEFa2b2c1b2c1d1d1E1f1a1b2c1b2c1d2d2E1f2a2b3c2b1c2d3d2E2f3Hãy thực hiện các phép toán đại số quan hệ sau:a. dA=a2(R*S) e. R x Sb. PABC(R*S*Q) f. R * dB = b1(S)c. PBC(R) ÈPBC(S) g. PB(dB=b2(R*S))d. PBC(R) ÇPBC(S) h. dD=d1(PBCD(S*Q))Bài 2. Cho các quan hệ với lược đồ sau: HH(HH#, TenHH, SoLuong, NgaySX, ChungLoai, NSX#) và NSX (NSX#, TenNSX)Trong đó:HH#: Mã hàng hoá. TenHH: Tên hàng.SoLuong: Số Lượng. NgaySX: Ngày sản xuất.ChungLoai: Chủng loại hàng hoá. NSX#: Mã Nhà sản xuất.TenNSX: Tên Nhà sản xuất.Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL:a. Cho biết tên hàng, chủng loại của những mặt hàng có số lượng lớn hơn 50 và sản xuất trước ngày 1/1/2000.b. Cho biết mã hàng, tên nhà sản xuất của tất cả các mặt hàng.c. Cho biết tên hàng do nhà sản xuất LG cung cấp.Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL:d. Cho biết tổng số mặt hàng hiện có trong cơ sở dữ liệu.Cho biết mã hàng, tên hàng của các mặt hàng có số lượng ít nhất.Bài 3. Cho các quan hệ với lược đồ sau:CB(CB#, TenCB, SoNamCT, NgayVD, DiaChi, CQ#) và CQ (CQ#, DCCQ)Trong đó:CB#: Mã cán bộ. TenCB: Tên cán bộ.SoNamCT: Số năm công tác của cán bộ. NgayVD: Ngày vào Đảng.DiaChi: Địa chỉ cán bộ. CQ#: Mã cơ quan của cán bộ.DCCQ: Địa chỉ cơ quan của cán bộ.Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL:e. Cho biết tên cán bộ, số năm công tác của những cán bộ có địa chỉ là “Ha Tay” có số năm công tác ít hơn 10.f. Cho biết mã cán bộ, tên cán bộ và địa chỉ cơ quan của tất cả các cán bộ.g. Cho biết tên những cán bộ có địa chỉ cơ quan là Hà Nam.Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL:h. Cho biết tổng số cán bộ hiện có trong cơ sở dữ liệu.i. Cho biết mã cán bộ, tên cán bộ của các cán bộ có số năm công tác ít nhất nhất.Phần II: Phụ thuộc hàm Bài 1. Cho quan hệ R trên tập thuộc tính U = {A, B, C, D, E, G) và tập các phụ thuộc hàm F = {AB® C, AC®D, D®EG, G®B, A®D, CG®A}. a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB® E và AD ® BC.b. Tính bao đóng {A}+ của tập thuộc tính {A}.c. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F.Bài 2. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A®C, AB®G, B®DE, G®H, GH®A }.a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB ® H và G® C.b. Tính bao đóng {G}+ của tập thuộc tính {G}.Bài 3. Cho quan hệ R trên tập thuộc tính U = {G, H, I, K, L, M} và tập các phụ thuộc hàm F = {GH® L, I®M, L®K, HM®G, GK®I, H®L}. d. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm HI® G và GH ® KM.e. Tính bao đóng {G, H}+ của tập thuộc tính {G, H}.f. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F.Bài 4. Cho quan hệ R(U): U = {H, I, K, L, M, N} và tập phụ thuộc hàm F = {I ® LM, HI ® K, K ® N, KN®I}.c. Tìm một khoá tối thiểu của quan hệ R.d. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(HIN); R2(HIK), R3(ILM).e. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.Bài 5. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A®C, AB®G, B®DE, G®H, GH®A }.f. Tìm một khoá tối thiểu của quan hệ R.g. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(AC); R2(BDE); R3(ABGH).h. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.6. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A®C, AB®G, B®DE, G®H, GH®A }.i. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(AC); R2(BDE); R3(ABGH).j. Chuẩn hoá quan hệ R về dạng chuẩn 3NF. Cách tìm khóa, phủ tối thiểu, tìm bao đóng Tìm tất cả các khóa trong lược đồ quan hệ
Trước khi đi vào chi tiết chúng ta tìm hiểu một số khái niệm:
- Tập thuộc tính nguồn (TN): bao gồm các thuộc tính chỉ xuất hiện ở vế trái, không xuất hiện ở vế phải của pth và các thuộc tính không xuất hiện ở vế trái lẫn vế phải của pth.
- Tập thuộc tính đích (TĐ) : bao gồm các thuộc tính chỉ xuất hiện ở vế phải không xuất hiện ở vế trái của pth.
- Tập thuộc tính trung gian (TG): Chứa thuộc tính ở vế trái lẫn vế phải của pth.
Thuật toán:
Bước 1:
- Tạo tập nguồn TN và tập trung gian TG
Bước 2:
- Nếu TG=0(rỗng) thì K=TN, kết thúc. ngược lại qua bước 3.
Bước 3:
- tìm tất cả
- tập con Xi của tập trung gian.
Bước 4:
- tìm siêu khóa Si bằng cách với mọi Xi,
nếu (TN U Xi)+=Q+ thì Si = TN U Xi
Bước 5:
- tìm khóa bằng cách loại bỏ các siêu khóa không tối thiểu
- với mọi Si, Sj thuộc S
nếu Si chứa trong Sj thì loại bỏ tập Sj ra khỏi siêu khóa (VD: Si=AB, Sj=ABC thì loại bỏ Sj ra khỏi tập siêu khóa)
S còn lại chính là tập khóa cần tìm.
Ví dụ :
cho lược đồ quan hệ Q={CSZ} tập phụ thuộc hàm F={CS → Z; Z → C} tìm tất cả các khóa của lược đồ quan hệ trên.
Bước 1:
- TN={S}, TG={CZ}
Bước 2:
- TG khác rỗng nên qua bước 3
Bước 3:
- tập con Xi của tập trung gian X={0,C,Z,CZ} ghi chú 0: là rỗng
Bước 4:
- S+=S Khác Q có nghĩa không có siêu khóa.
- SC+=CZS bằng với Q nên siêu khóa SC.
- SZ+=CZ bằng với Q nên Siêu khóa là CZ
- SCZ+= bằng với Q nên Siêu khóa là CSZ
Bước 5:
- Vậy tập siêu khóa S={SC, CZ, CSZ} Vì SC chứa trong CSZ và CZ chứa trong CSZ nên loại bỏ siêu khóa CSZ khỏi tập siêu khóa.
- Kết quả khóa của lược đồ quan hệ trên là SC và CZ. K={SC, CZ}
Thuật toán tìm một khóa trên lược đồ quan hệ
Mục tiêu : cho một lược đồ U có các thuộc tính {A1,A2,...An} và tập Phụ thuộc hàm F. hãy tìm một khóa cho lược đồ đó.
Thuật toán:
Bước 1 :
+ Gán K0=U+ (U+ là tập thuộc tính của U)
Bước 2 : ta có A là thuộc tính của U.
+ Tính bao đóng của (Ki-1\A)+ nếu bằng U+ ((Ki-1\A)+ =U+) thì loại bỏ A ra khỏi K tức là Ki =(Ki-1\A). nếu (Ki-1\A)+ !=U+ thì Ki =Ki-1.
Lặp lại bước trên n lần
Bước n: kết quả K=Kn
Ví dụ : cho U={A,B,C,D,E} và F={AB->C, AC->B, BC->DE} tìm một khóa của lược đồ quan hệ r xác định trên U và F ?
Bước 1:
+ K=U tức là K=ABCDE
Bước 2:
+ Tính Bao đóng của (K\A)+ nghĩa là tính (BCDE)+ = BCDE ta thấy kết quả tính bao đóng không bằng U+ nên K=ABCDE
Bước 3:
+ Tính Bao đóng của (K\B)+ nghĩa là tính (ACDE)+ = ABCDE ta thấy kết quả tính bao đóng bằng U+ nên loại B ra tập K ban đầu K=ACDE
Bước 4:
+ Tính Bao đóng của (K\C)+ nghĩa là tính (ADE)+ = ADE ta thấy kết quả tính bao đóng Không bằng U+ nên không bỏ C ra tập K ta có K=ACDE
Bước 5:
+ Tính Bao đóng của (K\D)+ nghĩa là tính (ACE)+ = ACEBD ta thấy kết quả tính bao đóng bằng U+ nên bỏ D ra tập K ta có K=ACE
Bước 6:
+ Tính Bao đóng của (K\E)+ nghĩa là tính (AC)+ = ACBDE ta thấy kết quả tính bao đóng bằng U+ nên bỏ E ra tập K ta có K=AC
=>>Kết quả Khóa là K=AC
Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm
1. Tách các phụ thuộc hàm sao cho vế phải chỉ còn một thuộc tính. (ví dụ: A->BC thành A->B và A->C)
2. Bỏ các thuộc tính dư thừa ở vế trái. (ví dụ: cho F = {A → B, B → C, AB → D} các phụ thuộc hàm có vế trái 1 thuộc tính là đầy đủ nên ta không xét, xét AB → D có B dư thừa(bỏ B) vì bao đóng của A có chứa B. A+=ABC) (dễ hiểu là chúng ta bỏ thuộc tính bên vế trái, khi và chỉ khi bao đóng của các thuộc tính còn lại có chứa thuộc tính đó)
3. Loại khỏi F các phụ thuộc hàm dư thừa. (Các thuộc tính ở vế phải của PTH chỉ xuất hiện di nhất 1 lần thì không thể loại bỏ. Còn lại tính bao đóng của tập thuộc tính vế trái nếu có xuất hiện thuộc tính vế phải thì có thể loại bỏ thuộc tính đó và đó là PTH dư thừa.)
Ví dụ: Cho lược đồ quan hệ Q(A,B,C,D) và tập pth F={AB->CD, B->C, C->D} Tìm phủ tối thiểu?
1. Tách các phụ thuộc hàm sao cho vế phải chỉ còn một thuộc tính.
+ ta có F={AB->C, AB->D, B->C, C->D}
2. Bỏ các thuộc tính dư thừa ở vế trái.
+ B->C, C->D Không xét vì vế trái chỉ có một thuộc tính.
+ xét AB->C : Nếu Bỏ A thì B+=BCD không chứa A nên không thể Bỏ A. Nếu Bỏ B thì A+=A. không bỏ được thuộc tính nào.
+ xét AB->D : Nếu Bỏ A thì B+=BCD không chứa A nên không thể Bỏ A. Nếu Bỏ B thì A+=A. không bỏ được thuộc tính nào.
3. Loại khỏi F các phụ thuộc hàm dư thừa.
+ xét AB->C : Tính AB+=ABCD = Q nên loại bỏ AB->C
+ xét AB->D : tính AB+=ABCD = Q nên loại bỏ AB->D
+ B->C : tính B+=B không thể bỏ.
+ C->D : tính C+=C không thể bỏ.
Phủ tối thiểu là Ftt = {B->C, C->D}
Tìm bao đóng
Ví dụ: Cho lược đồ quan hệ R(U, F)
Với U = ABCDE và F = { AB -->CD, E --> C, D -->CE, A -->E}. Tìm A+
- Đầu tiên gán A+=A
- Tiếp theo xét xem có PTH nào A->X không? nếu có bỏ X vào A+, ở đây ta có A->E nên A+=AE
- Ta thấy E->C nên A+=ACE
- Cuối cùng ta có A+=ACERe: Phương pháp xác định dạng chuẩn by itlinh on 30/12/2009, 10:27mình có cách tìm dạng chuẩn phân tích từng bước theo thuật toán của thầy nè, cũng dễ hiểu:
Cho lược đồ < R, F >, với R
= ABCDE, F ={AB → CD, D → C , AC → EB, AE→ B }. Hãy
Xác định dạng chuẩn của < R, F >
. Xác định dạng chuẩn
Bước 1: Muốn xác định dạng chuẩn thì đầu tiên phải tìm khóa
-
Tìm các thuộc tính nằm hoàn toàn bên trái của fụ thuộc
hàm. Những thuộc tính này chắc chắn sẽ nằm trong khóa: A
-
Tìm các thuộc tính nằm ở bên trái và bên phải. Những
thuộc tính này có khả năng nằm trong khóa nếu thuộc tính hoàn toàn nằm bên trái
không bao đóng đc toàn bộ các thuộc tính: B,C,D,E
-
Tìm những thuộc tính nằm hoàn toàn bên phải. Ta sẽ loại
những thuộc tính này vì nó sẽ ko bao giờ tham gia vào khóa. Ở lược đồ này ko có
-
Trước tiên ta sẽ xét bao đóng của A. Nếu A có thể bao
đóng toàn bộ các thuộc tính khác thì A sẽ là khóa và ko cần xét thêm nữa
-
A+: ta thấy A ko
bao đóng đc các thuộc tính khác vì trong fụ thuộc hàm nó fải kết hợp với 1
thuộc tính khác mới suy ra thuộc tính khác đc fải kết hợp A với các
thuộc tính B,C,D,E
-
AB+ : ABCDE
AB là 1 khóa. Khi đó ta ko cần
phải xét thêm ABC hay ABD … nữa. Nếu
AB ko là khóa thì fải tiếp tục
xét ABC, ABD v..v.. Vì khóa là tập thuộc tính nhỏ nhất có thể bao đóng toàn bộ
các thuộc tính khác
-
AC+ : ACEBD
AC là 1 khóa (tương tự như trên )
-
AD+: ADCEB
AD là 1 khóa (tương tự như trên )
-
AE+: AEBCD
AE là 1 khóa (tương tự như trên)
tất cả các khóa của R là AB, AC,AD,AE
Bước 2: Xác định dạng chuẩn
AB → CD
D → C
AC → EB
AE→ B
DC BC
Ok
Ko ok
Ok
ok
DC 3
ok
DC 2
R đạt chuẩn 3
Lý giải: xét dạng chuẩn thì phải xét từ dc cao nhất xuống
nếu ko thỏa dc cao nhất thì mới xét tiếp dc thấp hơn.
Để thỏa dc bc thì vế trái phải là siêu khóa (ở đây là AB,
AC,AD,AE) như vậy có 3 fụ thuộc hàm đạt dc BC
Để thỏa dc 3 thì vế trái là siêu khóa (nghĩa là đạt dc BC
rùi) hoặc vế phải có thuộc tính nằm trong khóa. Ở đây ta thấy C là thuộc tính
nằm trong khóa
D
C thỏa chuẩn 3
Đến đây ta ko cần xét. VÀ để lấy dc của R thì nó sẽ là dc
thấp nhất trogn tất cả dc mà fụ thuộc hàm đạt đc
Giải thích thêm: để thỏa dc 2 thì vế trái là siêu khóa( như
trên) hoặc vế trái ko nằm trong khóa. Tất nhiên là nó ko thỏa dc 3 rùi mới xét
đến dc 2.
-----------------------hết-------------------------------Hướng Dẫn Thực HànhHướng dẫn:· Bài tập thực hành được chia làm nhiều Module· Mỗi Module được thiết kế cho thời lượng là 3 tiết thực hành tại lớp với sự hướng dẫn của giảng viên.· Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.· Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng. Những sinh viên chưa hoànn tất phần bài tập tại lớp có trách nhiệm tự làm tiếp tục ở nhà.
Module 1 Nội dung kiến thức thực hành: +Thực hành ngôn ngữ SQL: - ngôn ngữ định nghĩa dữ liệu: CREATE TABLE- ngôn ngữ thao tác dữ liệu: INSERT, UPDATE, DELETE...+Thông qua việc cài đặt cơ sở dữ liệu trên DBMS,SV hiểu rõ hơn về mô hình ER, mô hình quan hệBài 1. Mục đích:Xác định quan hệ giữa các thực thể, khóa chính, khóa ngoạiMô tả:Cho lược đồ CSDL sau, xác định quan hệ giữa các thực thể, khóa chính, khóa ngoại. GGGợi ý:SV xác định và gạch dưới các thuộc tính làm khóa chính.Bài 2: Mục đích:Sử dụng ngôn ngữ định nghĩa dữ liệu: CREATE TABLE để cài đặt cấu trúc bảng vào ngôn ngữ SQLMô tả: Thực hiện lệnh CREATE TABLE với các ràng buộc về khóa chính, khóa ngoại để tạo các bảng tương ứng với các thực thể đã cho ở Bài 1. Gợi ý:SV tự chọn kiểu dữ liệu phù hợp cho từng thuộc tính Ví dụ tạo bảng SINHVIENCREATE TABLE SINHVIEN( HOTEN VARCHAR(30) NOT NULL, MASV INT PRIMARY KEY, NAM INT NOT NULL, KHOA VARCHAR(10) NOT NULL)Bài 3:Mục đích:Thực hiện lệnh Alter Table... add constraint để kiểm tra các ràng buộc về khóa chính, khóa ngoại (nếu chưa cài đặt ở Bài 2) và các ràng buộc về dữ liệu được mô tả bên dưới.Mô tả: 1. Tạo ràng buộc cho thuộc tính năm(Nam) của bảng SINHVIEN: nam>=1 va nam<=62. Tạo ràng buộc về điểm(diem) cho bảng KETQUA: Diem>=0 va Diem<=10Gợi ý:Ví dụ 1: ràng buộc khóa ngoại cho bảng DIEUKIENAlter table DIEUKIENadd constraint fk_dkien foreign key(MAMH) references MONHOC(MAMH)Ví dụ 2: ràng buộc về Diem cho bảng KETQUAAlter table KETQUAadd constraint ck_kqua check(DIEM>=0 and DIEM<=10)CREATE DATABASE QLSVUSE QLSV--Table SinhVienCREATE TABLE SINHVIEN(HOTEN VARCHAR(50),MASV CHAR(7) NOT NULL,NAM INT,KHOA CHAR(10))ALTER TABLE SINHVIENADD CONSTRAINT KC_SINHVIEN PRIMARY KEY (MASV)ALTER TABLE SINHVIENADD CONSTRAINT NAM_RBCHECK (NAM >=1 AND NAM<=5)--Table MonHocCREATE TABLE MONHOC(TENMH VARCHAR(30),MAMH CHAR(8) NOT NULL,TINCHI INT,KHOA CHAR(10))ALTER TABLE MONHOCADD CONSTRAINT KC_MONHOC PRIMARY KEY(MAMH)--Table DieuKienCREATE TABLE DIEUKIEN(MAMH CHAR(8) NOT NULL,MAMH_TRUOC CHAR(8) NOT NULL)ALTER TABLE DIEUKIENADD CONSTRAINT KC_DIEUKIEN PRIMARY KEY(MAMH,MAMH_TRUOC)ALTER TABLE DIEUKIENADD CONSTRAINT KN_DIEUKIEN FOREIGN KEY(MAMH)REFERENCES MONHOC(MAMH)--Table KhoaHocCREATE TABLE KHOAHOC(MAKH INT NOT NULL,MAMH CHAR(8) NOT NULL,HOCKY INT,GIAOVIEN CHAR(10))ALTER TABLE KHOAHOCADD CONSTRAINT KC_KHOAHOC PRIMARY KEY(MAKH)ALTER TABLE KHOAHOCADD CONSTRAINT KN_KHOAHOC FOREIGN KEY(MAMH)REFERENCES MONHOC(MAMH)--Bang KetQuaCREATE TABLE KETQUA(MASV CHAR(7) NOT NULL,MAKH INT NOT NULL,DIEM INT)ALTER TABLE KETQUAADD CONSTRAINT KC_KETQUA PRIMARY KEY(MASV, MAKH)ALTER TABLE KETQUAADD CONSTRAINT KN_KETQUA FOREIGN KEY(MASV)REFERENCES SINHVIEN(MASV)ALTER TABLE KETQUAADD CONSTRAINT KN2_KETQUA FOREIGN KEY(MAKH)REFERENCES KHOAHOC(MAKH)--NhapINSERT SINHVIENVALUES ('VAN PHU TOAN','0733031',2,'CNTT')
Module 2 Nội dung kiến thức thực hành: +Ngôn ngữ thao tác dữ liệu: INSERT, UPDATE, DELETE, SELECT..Bài 1: Mục đích:Thực hiện lệnh INSERT để đưa dữ liệu vào các bảng.Mô tả: SINHVIENHOTENMASVNAMKHOALê An69100781CNTTHồ Thúy Hoa69000232CNTTMONHOCTENMHMAMHTINCHIKHOANhập môn tin họcCOSC13104CNTTToán rời rạcMATH24103TOANCấu trúc dữ liệuCOSC33204CNTTCơ sở dữ liệuCOSC33803CNTTDIEUKIENMaMHMaMH_truocCOSC3380COSC3320COSC3380MATH2410COSC3320COSC1310KHOAHOCMAKHMAMHHOCKYGIAOVIEN85MATH24101Lan92COSC13101Chi102COSC33202Hoa112MATH24101Lan119COSC13101Chi135COSC33801NhiKETQUAMASVMAKHDIEM691007811986910078112669000238510690002392969000231028690002313510Gợi ý:Ví dụ: Thêm 1 record vào table SINHVIENinsert SINHVIENvalues('Lê An',’6910078’,2,'CNTT')Bài 2: Mục đích: Thực hiện lệnh UPDATE, DELETE, SELECTMô tả: 1. Sửa bộ <690023,102,8> thành <690023,102,10>2. Sửa bộ <690023,85,10> thành <690023,85,8>3. Xóa bộ <690023,85135,10>4. Lệnh SELECT:- Thực hiện câu lệnh SELECT đơn giản để xem dữ liệu từ các bảng đã nhập liệu- Viết câu lệnh cho phép xem tên của sinh viên- In ra tên các môn học và số tín chỉ5. In ra tên sinh viênGợi ý:1. UPDATE KETQUASET DIEM=10WHERE MASV=690023 AND MAKH=102 AND DIEM=82. Xem dữ liệu của bảng SINHVIEN: SELECT * FROM SINHVIEN
Module 3Nội dung kiến thức thực hành: +Ngôn ngữ định nghĩa và thao tác dữ liệu: SELECT..Bài 1: Mục đích:Mô tả: Cơ sở dữ liệu dưới đây được sử dụng để quản lý công tác giao hàng trong một công ty kinh doanh. Các bảng trong cơ sở dữ liệu này được biểu diễn trong sơ đồ dưới đây.Trong đó: Ø Bảng NHACUNGCAP lưu trữ dữ liệu về các đối tác cung cấp hàng cho công tyØ Bảng MATHANG lưu trữ các dữ liệu về các mặt hàng hiện có trong công tyØ Bảng LOAIHANG phân loại các mặt hàng hiện cóØ Bảng NHANVIEN lưu trữ thông tin về các nhân viên làm việc trong công tyØ Bảng KHACHANG lưu trữ thông tin các khách hàng của công tyØ Khách hàng đặt hàng thông qua các đơn đặt hàng(DONDATHANG) .Mỗi đơn đặt hàng phải do một nhân viên nào đó lập và do đó phải có quan hệ với bảng NHANVIENØ Thông tin chi tiết của các đơn đặt hàng được lưu trữ trong bảng chi tiết đơn đặt hàng. Bảng này có quan hệ với hai bảng DONDATHANG và MAHANG.1. Sinh viên hãy xây dựng cơ sở dữ liệu trên bằng lệnh định nghĩa dữ liệu (CREATE TABLE) với các ràng buộc khóa chính, khóa ngoại. Lưu ý: sinh viên xem dữ liệu mẫu bên dưới để chọn kiểu dữ liệu cho phù hợp.2. Sinh viên nhập liệu cho các bảng theo dữ liệu sau.Lưu ý: những cột để trống sinh viên tự cho dữ liệu.Table KHAÙCH HAØNGMAÕ KHTEÂN KHTEÂNGIAODÒCHÑÒA CHÆEMAILÑIEÄN THOAIFAXCINOTECÑIEÄN TOAÙN SAØI GOØN43 Yeát kieâu P 6 Q3( )7931752COMECOVAÄT TÖ THIEÁT BÒ GTVT226 Thuaän Kieàu Q11( )8456781FAHASAPHAÙT HAØNH SAÙCH SAØI GOØN12 Thuaän kieàu Q5( )8452792FISCDÒCH VUÏ ÑAÀU TÖ NÖÔÙC NGOAØI31 Tröông Ñònh P6 Q1HUNSANHÖØNG SAÙNG175 Lyù Thöôøng Kieät( )5465487LIXCOBOÄT GIAËT LIX79 Baøn Côø P3 Q5( )8952187SAFICOTHUYÛ SAÛN XUAÁT KHAÅU47 Baûi saäy P1 Q11SJCVAØNG BAÏC ÑAÙ QUYÙ TPHCM350 CMT8 P12 Q3( )8543543TAFACOTHÖÔNG MAÏI TAÁN PHAÙT4 Traàn PhuõP Q5( )8754875THADACOXAÂY DÖÏNG THAØNH ÑAÏT6E An Bình Q5( )5465454TRACODIÑAÀU TÖ PHAÙT TRIEÅN GTVT343 Nhaät Taûo Q10( )5321321TRANACODÒCH VUÏ VAÄN TAÛI Q 3156 Leâ Ñaïi HaønhP7 Q10( )8654635VIETTIENCTY DEÄT MAY VIEÄT TIEÁN24 KhuA – CN Taân Taïo ( )4565670Table NHAÂNVIEÂNMAÕ NVHOÏ NVTEÂN NVNGAØY SINHNGAØYLAØM VIEÄCÑÒA CHÆÑIEÄN THOAÏILCBPHUÏCAÁP1NGUYEÃN LEÄNGA10/12/6410/12/9413Huøng Vöông P4 Q5( )54654652HAØ VÓNHPHAÙT07/12/7902/03/0289 Ñoàng Khôûi Q1( )87674613TRAÀN TUYEÁTOANH27/02/6730/10/9745Leâ Quí Ñoân Q3( )54654654NGUYEÃN KIMNGOÏC25/12/8010/12/07187 Haäu Giang P5Q6( )56546545TRÖÔNG DUYHUØNG10/10/8210/11/0777 Tröông ÑònhQ1( )58715446LÖÔNG BAÙTHAÉNG10/12/6806/03/9892 Leâ ThaùnhToânQ1( )87541657LAÂM SÔNHOAØNG02/03/7810/10/0145 Kyù Con Q1( )82312318NGUYEÃN MINHHOÀNG30/10/6830/10/9822 Laïc Long Quaân Q10( )78451389VÖÔNG NGOÏCLAN10/12/6710/12/97227 Hai Baø Tröng Q1( )778418410NGUYEÃ THÒMAI10/11/6710/11/9712Nguyõeân Chí Thanh Q3( )345136511LEÂ VAÊNHUØNG06/03/5706/03/9056Nguyeãn TraõiQ1( )574578512NGUYEÃN THÒHOA10/10/6610/10/9612Nguyeãn Traõi Q1( )6465465Table DONDATHANGMAÕ HÑMAÕ KHMAÕ NVNGAØY ÑHNGAØY GN HAØNGNGAØY CHUYEÅN HAØNGNÔI GIAO HAØNG10148FISC110/01/0420/02/0410150HUNSAN403/05/0429/06/0410156FISC412/01/0405/09/0410157SAFICO210/01/0420/05/0410158HUNSAN511/02/0405/03/0410159COMECO804/01/0406/07/0410160THADACO1113/01/0430/06/0410162TRANACO725/01/0410/07/0410163TRACODI302/05/0406/07/0410166SJC921/01/0412/09/0410172TAFACO912/08/0417/09/0410175TRANACO903/05/0407/08/0410177COMECO229/01/0405/07/0410183SAFICO201/01/0402/06/0410186TRACODI1115/04/0430/04/0410196SJC128/06/0401/07/0410202COMECO418/05/0422/08/0410207SJC212/05/0410/06/0410208TRACODI810/02/0417/05/0410210SJC125/05/0401/09/0410214HUNSAN611/07/0412/08/0410221TRACODI1102/08/0430/09/0410223SJC801/02/0430/01/0410224SAFICO702/05/0428/05/0410225COMECO210/05/0420/05/0410226FAHASA311/09/0430/09/0410227SAFICO810/01/0412/02/0410228HUNSAN205/02/0412/03/0410230HUNSAN219/08/0422/09/0410238LIXCO702/08/0430/08/0410252TRACODI315/02/0411/03/04Table LOAIHANGMAÕLOAÏI HAØNGTEÂNLOAÏI HAØNGBKBaùnh KeïoTPThöïc phaåmTCTraùi caâyAQAùo quaàn
CHƯƠNG IITÌM PHỦ TỐI THIỂU CỦA TẬP PHỤ THUỘC HÀMVới mỗi tập phụ thuộc hàm F đã cho, rất có thể có nhiều phụ thuộc hàm là dư thừa, tức là ta có thể suy dẫn ra các phụ thuộc hàm này thông qua tập phụ thuộc hàm còn lại trong F. Vấn đề đặt ra là phải làm sao thu gọn số phụ thuộc hàm F thành tối thiểu (gọi là G) để sao cho G vẫn tương đương với F.Ví dụ về phụ thuộc hàm dư thừa:F = {A à B, B à C, A à C. ở đây phụ thuộc hàm A à C là dư thừa bởi vì ta có thể dễ dàng có được phụ thuộc hàm này thông qua A à B, B à C Như vậy tập phụ thuộc hàm tương đương với F là G = { A à B, B à C }Định nghĩa phụ thuộc hàm dư thừa:Cho lược đồ R = {U, F}, một phụ thuộc hàm trong F có dạng a®b được gọi là dư thừa nếu như bao đóng của a trong tập phụ thuộc hàm F – { a®b } có chứa b. Tức là : (a)+(F – {a®b})Éb.Định nghĩa phủ tương đương:Một tập phụ thuộc hàm G được gọi là tương đương với tập phụ thuộc hàm F của lược đồ R nếu như : F+ = G+. Khi đó ta nói F phủ G hay G phủ F.Định nghĩa phủ tối thiểu:Một phủ tối thiểu của tập phụ thuộc hàm F là một tập phụ thuộc hàm G, Trong đó:+ G tương đương với F (tức là G+ = F+)+ Tất cả các phụ thuộc hàm trong G đều có dạng X à A Trong đó A là một thuộc tính.+ Không thể làm cho G nhỏ hơn được nữa. (Tức là không thể xoá thêm bất kỳ phụ thuộc hàm nào trong G hay xoá đi bất kỳ một thuộc tính nào bên phía phải, phía trái của mỗi phụ thuộc hàm mà G vẫn tương đương với F).Lưu ý : Các phụ thuộc hàm hay các thuộc tính xoá được theo cách trên mà vẫn đảm bảo G tương đương với F thì ta gọi đó là phụ thuộc hàm hay thuộc tính dư thừa.Phương pháp tìm phủ tối thiểu:Bước 1: Tách mỗi phụ thuộc hàm trong F có dạng X à A1A2A3…An thành các phụ thuộc hàm mà vế phải (RH – Right Hand) chỉ có một thuộc tính:X à A1X à A2………X à AnBước 2: Loại bỏ các thuộc tính dư thừa bên phía trái của mỗi phụ thuộc hàm.Bước 3: Duyệt từng phụ thuộc hàm và kiểm tra xem có dư thừa không, nếu dư thừa thì thì xoá đi.Lưu ý: Trình tự bước 2 và 3 là KHÔNG THỂ thay đổi !!!Ở đây ta cần giải thích rõ thế nào thuộc tính dư thừa, phụ thuộc hàm dư thừa ?Định nghĩa 1: Một phụ thuộc hàm có dạng aAàb, với A là một thuộc tính đơn lẻ. Ta nói A là thuộc tính dư thừa nếu có thể suy dẫn ra btừ a, Tức là a+Êb.Ví dụ: Cho F = {AC à B, C à B, ABDE à GH, A à E, A à D}+ Xét phụ thuộc hàm ACà B:Rõ ràng thuộc tính A trong AC à B là dư thừa vì C+ = (CB) É B.+ Xét phụ thuộc hàm ABDE à GH- Thuộc tính A : Không dư thừa vì (BDE)+ = BDE không chứa GH - Thuộc tính B : Không dư thừa vì (ADE)+ = ADE không chứa GH - Thuộc tính D: Dư thừa vì (ABE)+ = ABDE có chứa ABDE ( Loại thuộc tính D khỏi phụ thuộc hàm ABDE à GH ta được ABE à GH+ Xét phụ thuộc hàm ABE à GH- Thuộc tính E: Dư thừa vì (AB)+ = ABDE É ABE + Các thuộc tính trong các phụ thuộc hàm còn lại đều không dư thừa.Cuối cùng ta được tập phụ thuộc hàm không có thuộc tính dư thừa gồm:F = {C à B, AB à GH, A à E, A à D}Định nghĩa phụ thuộc hàm dư thừa:Một phụ thuộc hàm có dạng a®b, được gọi là dư thừa nếu như xoá bỏ nó khỏi tập F thì ta vẫn có : (a)+Êb(tức là vẫn suy dẫn ra b từ a, mặc dù đã xoá bỏ phụ thuộc hàm a®b khỏi F).Ví dụ: Cho F = {A à B, B à C, A à C, B à DE, A à E, A à D}+ Kiểm tra xem A à B có dư thừa hay không bằng cách : Thử loại phụ thuộc hàm này khỏi F sau đó tính A+, Nếu A+ Ê B thì nó là dư thừa, trái lại là không dư thừa.Sau khi loại A à B ta có F = {B à C, A à C, B à DE, A à E, A à D}Rõ ràng A+ = {AED} nên B Ï A+, chứng tỏ A à B là không dư thừa.Vậy phụ thuộc hàm này không thể loại khỏi F.F vẫn là: {A à B, B à C, A à C, B à DE, A à E, A à D}+ Kiểm tra Bà C có dư thừa ?- Loại BC khỏi F, ta có F = {AB, AC, BDE, AE, AD}- B+ = {BDE} không chứa C, chứng tỏ BC là không dư thừa.F vẫn là: {AB, BC, AC, BDE, AE, AD}+ Kiểm tra AC có dư thừa ?- Loại AC khỏi F ta được F = {AB, BC, BDE, AE, AD}- A+ = {ABCDE} có chứa C, chứng tỏ AC là dư thừaè F bây giờ là: F = {AB, BC, BDE, AE, AD}+ Kiểm tra BDE có dư thừa ?- Loại BDE khỏi F, ta được F = {AB, BC, AE, AD}- B+ = {BC} không chứa DE, chứng tỏ BDE không dư thừaè F vẫn là {AB, BC, BDE, AE, AD}+ Kiểm tra AE có dư thừa ?- Loại AE khỏi F, ta được F = {A à B, BC, BDE, AD}- A+ = {ABCDE} chứa E, chứng tỏ phụ thuộc hàm này dư thừaè F bây giờ là: {AB, BC, BDE, AD}+ Kiểm tra AD có dư thừa ?- Loại AD khỏi F, ta được F = {AB, BC, BDE}- A+ = {ABCDE} chứa D, chứng tỏ phụ thuộc hàm AD là dư thừa.è F bây giờ là {AB, BC, BDE}. Duyệt lại các phụ thuộc hàm ta thấy không có phụ thuộc hàm nào bị loại thêm nữa (Tức là F = Const). Do vậy tập phụ thuộc hàm cuối cùng sau khi loại các phụ thuộc dư thừa là:F = {Aà B, B à C, B à DE}Với phương pháp loại bỏ thuộc tính và phụ thuộc hàm dư thừa đã đề cập ở trên, sau đây ta lấy ví dụ thực hiện việc tìm phủ tối thiểu của tập phụ thuộc hàm F.Bài tập áp dụngVí dụ 2: Tìm phủ tối thiểu của tập phụ thuộc hàm T sau đây :T = {ABH à CK, A à D, C à E, BGH à F, F à AD, E à F, BH à E}• Bước 1: Chuyển vế phải của mỗi phụ thuộc hàm thành các thuộc tính đơn lẻ, ta được:– ABH à C– ABH à K– A à D– BGH à F– F à A– F à D– E à F– BH à E• Bước 2: Loại bỏ các thuộc tính dư thừa bên phía trái của mỗi phụ thuộc hàm (Sử dụng phương pháp loại giống như ví dụ 1).+ Xét phụ thuộc hàm ABHC- A dư thừa vì (BH)+ = {BHEFDAKC} có chứa C.- B Không dư thừa vì (AH)+ = {AHD} không chứa C- H không dư thừa vì (AB)+ = {ABD} không chứa Cè Kết quả sau lần thứ nhất:T = {BH à C, ABH à K, A à D, BGH à F, F à A, F à D, E à F, BH à E}+ Tương tự: A dư thừa trong ABHK vì (BH)+ = {BHCEFDAK} chứa K và G dư thừa trong BGHF vì (BH)+ = {BHEFDAKC} có chứa F.è Kết quả cuối cùng:T = {BH à C, BH à K, A à D, BH à F, F à A, F à D, E à F, BH à E}Đển đây ta không thể loại thêm được thuộc tính nào nữa.• Bước 3: Loại bỏ các phụ thuộc hàm dư thừaHiện tại T = {BHàC, BHàK, AàD, BHàF, FàA, FàD, EàF, BHàE}+ Thử loại BH à C, Ta có (BH)+ = {BHFADEK} không chứa C => không dư thừa.+ Thử loại BHàK, Ta có (BH)+ = {BHCFADE} không chứa K => không dư thừa. + Thử loại Aà D, Ta có (A)+ = {A} không chứa D => không dư thừa.+ Thử loại BHà F, Ta có (BH)+ = {BHCKEFAD} có chứa F => luật này dư thừa, loại ra khỏi T, ta được: T = {BHàC, BHàK, AàD, FàA, FàD, EàF, BHàE}+ Thử loại Fà A, Ta có F+ = {FD} không chứa A => không dư thừa+ Thử loại Fà D, ta có F+ = {FAD} có chứa D nên luật này dư thừa. Loại khỏi T ta được : T = {BHàC, BHàK, AàD, FàA, EàF, BHàE}+ Thử loại EF, ta có E+ = {E} không chứa F => Không dư thừa.+ Thử loại BHE, ta có (BH)+ = {BHCK} không chứa E nên không dư thừa.Đến đây ta đã thử xong tất cả các phụ thuộc hàm trong lược đồ. Kết quả cuối cùng ta có phủ tối thiểu T = {BHàC, BHà K, AàD, FàA, EàF, BHàE}.Ví dụ 2: Tìm phủ tối thiểu của lược đồ cho dưới đây:R = <U, F>, Với: U = {ABCDEGH}F = {Aà BC, BE à G, E à D, D à G, A à B, AG à BC}Bước 1 Tách vế phải thành 1 thuộc tính:§ AàB§ AàC§ BEG§ ED§ DG§ AB§ AGB§ AGCBước 2 Xoá thuộc tính dư thừaB dư thừa trong BEG. Vì (E)+ = {DEG} chứa GG dư thừa trong AGB. Vì (A)+ = {ABC} chứa BG dư thừa trong AGC. Vì (A)+ = {ABC} chứa CBước 3 Xoá phụ thuộc hàm dư thừa:AB dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABC} Chứa BAC dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABC} Chứa CAB dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABC} Chứa BEG dư thừa. Vì nếu xoá khỏi F, ta vẫn có (E)+ = {DEG} Chứa GPhủ tối thiểu của F là :1) AB2) AC3) DG4) EDVí dụ 3: Tìm phủ tối thiểu của lược đồ cho dưới đây:R = <U, F>U = (ABCDEGHIJ)F = {A à BDE, DE à G, H à J, J à HI, E à DG, BCà GH, HGàJ, EàG}Bước 1 Tách vế phi thành 1 thuộc tính:§ AB§ AD§ AE§ DEG§ HJ§ JH§ JI§ ED§ EG § BCG§ BCH§ HGJ§ EGBước 2 Xoá thuộc tính dư thừaD dư thừa trong DEG. Vì (E)+ = {DEG} chứa GG dư thừa trong HGJ. Vì (H)+ = {HIJ} chứa JBước 3 Xoá phụ thuộc hàm dư thừa: AD dư thừa. Vì nếu xoá khỏi F, ta vẫn có (A)+ = {ABDEG} Chứa DEG dư thừa. Vì nếu xoá khỏi F, ta vẫn có (E)+ = {DEG} Chứa GHJ dư thừa. Vì nếu xoá khỏi F, ta vẫn có (H)+ = {HIJ} Chứa JEG dư thừa. Vì nếu xoá khỏi F, ta vẫn có (E)+ = {DEG} Chứa GPhủ tối thiểu của F là :§ AB§ BCH§ AE§ BCG§ HJ§ JH§ JI§ ED§ EG
CHƯƠNG IIITÌM KHOÁ TỐI THIỂU CỦA LƯỢC ĐỒ QUAN HỆ1. Định nghĩa khoá tối thiểu:Cho lược đồ R = <U,F>, trong đó U là tập thuộc tính, F là tập phụ thuộc hàm. K được gọi là khoá tối thiểu của R nếu như số thuộc tính trong K là ít nhất nhưng vẫn thoả mãn K+ =U .2. Phát biểu bài toán tìm khoá tối thiểu:Cho lược đồ quan hệ R = <U, F>Hãy tìm một khoá (tối thiểu) của quan hệ R.3. Thuật toán tìm khoá tối thiểu (Lưu ý, từ nay nếu không có sự nhầm lẫn thì ta gọi tắt khoá tối thiểu là Khoá).*** Chi tiết cài đặt xin xem trong phần phụ lục.Bài tập áp dụngVí dụ 1:Cho lược đồ R = <U, F> :U = {ABCDE}F = {AB, BC, BDE, AE, AD}Hãy tìm một khoá tối thiểu K của lược đồ R ?Hướng dẫn:Bước 1: Đặt T = {AB} (T là tập các thuộc tính xuất hiện phía trái)P = {BCDE} (P là tập các thuộc tính xuất hiện phía phải)K = U\P = {A}Bước 2: Tính thử K+Ta có K+ = {ABCDE}Vì K+ = U, nên K = {A} là một khoá của R.Ví dụ 2: Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABCDE}F = {ABDE, EAD, DC}Hãy tìm một khoá tối thiểu K của lưược đồ RHướng dẫn : Bước 1: ĐặtT = {ABED}P = {DEAC}K = U\P = {B}Bước 2: Tính thử K+Ta có K+ = {B} ≠ U, nên tiếp tục bước 3Bước 3 : Tính K = K È (T Ç P)Ta có K = K È (T ÇP) = {ABDE}Bước 4 : Thử xoá từng thuộc tính trong T Ç P= {AED} khỏi KThử loại bỏ {A} khỏi K, Ta có:K = {BED} và K+ = {BEDAC} vẫn bằng U, nên ta loại được AThử loại bỏ {E} khỏi K, Ta có:K = {BD} và K+ = {BDC}Do K+ ≠ U nên không loại được {E}. K vẫn là {BDE}Thử loại bỏ {D} khỏi K, Ta có:K = {BE} và K+ = {BEADC} = U. Đến đây ta đã thử hết. Vậy khoá tối thiểu tìm được là : K = {BE}Ví dụ 3 Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABCDEG}F = {ABC, CA, BCD, ACDB, DEG, BEC, CGBD, CEAG}Hãy tìm một khoá tối thiểu K của lược đồ R.Hướng dẫn : Bước 1: Đặt§ T = {ABCDEG} § P = {ABCDEG} (P là tập các thuộc tính xuất hiện phía phải)§ K = U\P = {}Bước 2: Tính thử K+Ta có K+ = { } ≠ U, nên tiếp tục bước 3Bước 3 : Tính K = K È (T Ç P)Ta có K = K È (T Ç P) = {ABCDEG}Bước 4 : Thử xoá từng thuộc tính trong TÇ P = {ABCDEG} khỏi KThử loại bỏ {A} khỏi K, Ta có:K = {BCDEG} và K+ = {BCDEGA} vẫn bằng U, nên ta loại được AThử loại bỏ {B} khỏi K, Ta có:K = {CDEG} và K+ = {CDEGAB} vẫn bằng U, nên ta loại được BThử loại bỏ {C} khỏi K, Ta có:K = {DEG} và K+ = {DEG}Do K+ ≠ U nên không loại được {C}. K vẫn là {DEGC}Thử loại bỏ {D} khỏi K, Ta có:K = {EGC} và K+ = {EGCABD} vẫn bằng U, nên ta loại được DThử loại bỏ {E} khỏi K, Ta có:K = {GC} và K+ = {GCABDE} vẫn bằng U, nên ta loại được EThử loại bỏ {G} khỏi K, Ta có:K = {C} và K+ = {CA}Do K+ = ≠ U nên không loại được {G}. K vẫn là {CG} à Đã thử hết !Đến đây ta đã thử hết. Vậy khoá tối thiểu tìm được là : K = {CG}Ví dụ 4Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABCDEGH}F = {AC, ABC, CDG, CDG, ECABEG,C, HC}Hãy tìm một khoá tối thiểu K của lược đồ RHướng dẫn : Bước 1: ĐặtT = {ABCDEH}P = {ABCDEG}K = U\P = {H}Bước 2: Tính thử K+Ta có K+ = {HCDG} ≠ U, nên tiếp tục bước 3Bước 3 : Tính K = KÈ (T Ç P)Ta có K = KÈ (T Ç P) = {HABCDE}Bước 4 : Thử xoá từng thuộc tính trong TÇ P= {ABCDE} khỏi KThử loại bỏ {A} khỏi K, Ta có:K = {HBCDE} và K+ = {HBCDEGA}Do K+ ¹ U nên không loại được {A}. K vẫn là {HBCDEA}Thử loại bỏ {B} khỏi K, Ta có:K = {HCDEA} và K+ = {HCDEAGB}Do K+ ¹ U nên không loại được {B}. K vẫn là {HCDEAB}Thử loại bỏ {C} khỏi K, Ta có:K = {HDEAB} và K+ = {HDEABCG}Do K+ ¹ U nên không loại được {C}. K vẫn là {HDEABC}Thử loại bỏ {D} khỏi K, Ta có:K = {HEABC} và K+ = {HEABCDG}Do K+ ¹ U nên không loại được {D}. K vẫn là {HEABCD}Thử loại bỏ {E} khỏi K, Ta có:K = {HABCD} và K+ = {HABCDG}Do K+ ¹ U nên không loại được {E}. K vẫn là {HABCDE}.Đến đây ta đã thử hết. Vậy khoá tối thiểu tìm được là : K = {HABCDE}Ví dụ 5:Cho lược đồ quan hệ R = <U, F>, Trong đó :U = {ABC}F = {AB, BA, CB}Hãy tìm một khoá tối thiểu K của lược đồ RHướng dẫn : Bước 1: ĐặtT = {ABC}P = {AB}K = U\P = {C}Bước 2: Tính thử K+Ta có K+ = {CBA} = UVì K+ = U, nên K = {C} là một khoá của R.Đề thi và bài giải của các khóa trước, bà con tham khảo nha.
mediafire.com ddqzc4y2lmj
Nghe nói bài giải là chính xác. Các bác check có gì tham khảo nha.
đưa ra 3 đề của k11 bà con tham khảo thử nha!
Đề 1 :
1. Cho quan hệ Q (ABCDEGH) và tập phụ thuộc hàm F thỏa Q. (1.5 điểm)
F = { A -> BG ,D -> EG ,GB -> HA , D -> BA , B -> HG }
- Tìm phủ tối thiểu của F.
- Xác định xem các phụ thuộc hàm sau, phụ thuộc hàm nào được suy ra từ F.
o EG -> BD
o AB -> CDEGH
o D -> GH
Đáp án
- Phủ tối thiểu
A -> B Không bỏ
A -> G bỏ vì A -> B -> HG
F = { A -> B ,D -> EG ,GB -> HA , D -> BA , B -> HG }
D -> G bỏ vì D -> B -> HG
F = { A -> B ,D -> E ,GB -> HA , D -> BA , B -> HG }
GB -> H bỏ vì B -> H
F = { A -> B ,D -> E ,GB -> A , D -> BA , B -> HG }
D -> B không bỏ
D -> A bỏ vì D -> B -> GB -> A
F = { A -> B ,D -> E ,GB -> A , D -> B , B -> HG }
B -> H không bỏ
B -> G không bỏ
Bỏ thuộc tính G trong GB -> A vì B -> G
Phủ tối thiểu : {A -> B ,D -> E , B -> A , D -> B , B -> HG}
- EG -> BD không thuộc vì EG+ = EG
- AB -> CDEGH không thuộc vì AB+ = ABHG
- D -> GH thuộc vì D+ = DEBHGA
2. Cho cơ sở dữ liệu
Quản lý rau quả
Loai (ma_loai char(2), ghi_chu char(20), han_luu_giu int)
Sanpham (ma_san_pham char(5), ten_san_pham char(20), ma_loai char(2))
Phieunhapxuat (so_phieu int, ngay_nhap datetime, loai char(1))
Chitietphieu (so_phieu int, ma_san_pham char(5), so_luong int)
Ghi chú :
- <<Han_luu_giu>> : thời gian tính bằng đơn vị là ngày để cho sản phẩm thuộc loại đó có thể trử trong kho mà không bị hư.
- <<Loai>> trong bảng Phieunhapxuat chỉ ra đây là nhập hay xuất :
o Loai = 1 : nhập loai = 0 : xuất
Phát biểu :
- Mỗi một sản phẩm thuộc một loại.
- Mỗi lần nhập một sản phẩm về kho hay xuất sản phẩm ra kho đều được ghi nhận trong bảng “phieuxuatnhap” với thuộc tính loại để phân biệt.
- Cụ thể mỗi lần nhập vào hay xuất kho những mặt hàng nào thì đều được ghi nhận trong bảng chitietphieu.
Câu hỏi :
a. Liệt kê danh sách gồm mã sản phẩm và tên sản phẩm mà có khả năng lưu giử trong kho hơn 3 tuần. (0.5 điểm)
b. Liệt kê danh sách gồm năm, tháng, tổng số lượng nhập vào của hàng hóa có mã là “A”. (Hàm lấy tháng và năm là hàm month(ngày) và year(ngày)). (1 điểm)
c. Liệt kê danh sách gồm mã sản phẩm, tên sản phẩm mà không được nhập vào trong ngày 24/12/2006. (1 điểm)
d. Liệt kê danh sách gồm số phiếu, ngày nhập phiếu mà phiếu này nhập vào nhiều hơn 2 loại hàng hóa. (1 điểm)
e. Liệt kê danh sách cho biết ngày nào mà công ty nhập nhiều mã sản phẩm nhất. (1 điểm)
Đáp án
- Select sp.ma_san_pham,sp.ten_san_pham
From sanpham sp inner join loai l on l.ma_loai = sp.ma_loai
Where l.han_luu_giu > 21
- Select year(p.ngay_nhap), month(p.ngay_nhap), sum(ct.so_luong)
From phieunhapxuat p inner join chitietphieu ct on ct.so_phieu = p.so_phieu
Where ct.ma_san_pham = ‘A’ and p.loai = 1
Group by year(p.ngay_nhap), month(p.ngay_nhap)
- Select ma_san_pham,ten_san_pham
From sanpham
Where ma_san_pham not in (
Select ct.ma_san_pham
From chitietphieu ct inner join phieunhapxuat p on p.so_phieu = ct.so_phieu
Where p.ngay_nhap = ‘12/24/2006’ and p.loai = 1
)
- Select p.so_phieu,p.ngay_nhap
From (phieunhapxuat p inner join chitietphieu ct on ct.so_phieu=p.so_phieu)
Inner join sanpham sp on sp.ma_san_pham = ct.ma_san_pham
Where p.loai = 1
Group by p.so_phieu,p.ngay_nhap
having count(distinct sp.ma_loai) > 2
- Select p.ngay, count(distinct ct.ma_san_pham) as tssp
From phieunhapxuat p inner join chitietphieu ct on ct.ma_phieu = p.ma_phieu
ð Q1
Select ngay
From Q1
Where tssp = (select max(tssp) from Q1)
Đề 2 :
1. Cho quan hệ Q (ABCDEGH) và tập phụ thuộc hàm F thỏa Q. (1.5 điểm)
F = { A -> BG ,D -> EG ,GB -> HA , D -> BA , B -> HG }
- Tìm phủ tối thiểu của F.
- Chứng minh A tương đương B (A <-> B)
Đáp án :
- Phủ tối thiểu
A -> B Không bỏ
A -> G bỏ vì A -> B -> HG
F = { A -> B ,D -> EG ,GB -> HA , D -> BA , B -> HG }
D -> G bỏ vì D -> B -> HG
F = { A -> B ,D -> E ,GB -> HA , D -> BA , B -> HG }
GB -> H bỏ vì B -> H
F = { A -> B ,D -> E ,GB -> A , D -> BA , B -> HG }
D -> B không bỏ
D -> A bỏ vì D -> B -> GB -> A
F = { A -> B ,D -> E ,GB -> A , D -> B , B -> HG }
B -> H không bỏ
B -> G không bỏ
Bỏ thuộc tính G trong GB -> A vì B -> G
Phủ tối thiểu : {A -> B ,D -> E , B -> A , D -> B , B -> HG}
- Chứng minh
A+ = BHG B+ = HGA
2. Cho cơ sở dữ liệu
Quản lý đề tài
Loai (ma_loai char(5), ten loai char(20))
Giaovien (ma_gv char(5), ten_gv char(20))
Sinhvien (ma_sv char(5), ten_sv char(20), nien_khoa int)
Detai (ma_de_tai char(5), ten_de_tai char(50), ma_gv char(5), ma_loai char(5))
Sinhvien_detai (ma_de_tai char(5), ma_sv char(5))
Ghi chú :
- Loai : ghi thông tin về loại đề tài, VD : đề tài thuộc loại “Thống kê”, hay “Tính toán thông minh”,…
- <<nien_khoa>> ghi nhận là một số năm vào học. VD : niên khóa 2006, ghi là 2006
Phát biểu :
- Mỗi một đề tài đăng ký là thuộc duy nhất một loại nào đó, và có một giáo viên hướng dẫn.
- Một đề tài có thể có một hoặc nhiều sinh viên cùng tham gia làm.
- Một sinh viên có thể tham gia làm 1 hay nhiều đề tài (số lượng tùy theo ràng buộc đưa sau)
Câu hỏi
a. Liệt kê danh sách gồm mã sinh viên, tên sinh viên mà là học viên năm thứ 3 (năm học được tính bằng cách lấy năm hiện tại trừ đi niên khóa). (0.5 điểm)
b. Liệt kê danh sách gồm mã sinh viên, tên sinh viên mà làm hơn 2 loại đề tài khác nhau. (1 điểm)
c. Liệt kê danh sách gồm mã giáo viên, tên giáo viên mà không hề tham gia hướng dẫn bất cứ đề tài nào. (1 điểm)
d. Liệt kê danh sách gồm mã đề tài, tên đề tài, tên giáo viên hướng dẫn mà chỉ có duy nhất 1 sinh viên tham gia làm(1 điểm)
e. Liệt kê danh sách gồm mã giáo viên, tên giáo viên mà hướng dẫn ít đề tài nhất.(1 điểm)
Đáp án :
- Select ma_sv, ten_sv
From sinhvien
Where year(date()) – nien_khoa = 3
- Select sv.ma_sv,sv.ten_sv
From (sinhvien as sv inner join sinhvien_detai svdt on sv.ma_sv = svdt.ma_sv)
Inner join detai dt on dt.ma_de_tai = svdt.ma_de_tai
Group by sv.ma_sv,sv.ten_sv
Having count(distinct dt.ma_loai) > 2
- Select ma_gv,ten_gv
From giaovien
Where ma_gv not in (
Select ma_gv from detai
)
- Select dt.ma_de_tai, dt.ten_de_tai, gv.ten_gv
From ( detai dt inner join giaovien gv on gv.ma_gv = dt.ma_gv )
Inner join sinhvien_detai svdt on svdt.ma_de_tai = dt.ma_de_tai
Group by dt.ma_de_tai, dt.ten_de_tai, gv.ten_gv
Having count(svdt.masv) = 1
- Select ma_gv, count(distinct ma_de_tai) as tsdt
From detai
Group by ma_gv
ð Q
Select gv.ma_gv,gv.ten_gv
From Q inner join giaovien gv on gv.ma_gv = Q.ma_gv
Where Q.tsdt = (Select min(Q.tsdt) from Q)
Đề 3 :
1. Cho quan hệ Q (ABCDEGH) và tập phụ thuộc hàm F thỏa Q. (1 điểm)
F = { A -> BG ,D -> EG ,GB -> HA , D -> BA , B -> HG }
- Tìm tất cả các khóa chính.
- Hỏi tập phụ thuộc hàm K { A -> B ,D -> EBHG, B ->H , BG -> HA } có tương đương tập F hay không ? Giải thích tại sao ?
- Tìm bao đóng của các thuộc tính sau
o ABC
o DBG
Đáp án :
A -> B , B -> A , D -> EB , B -> HG
- Tìm tất cả các khóa
DC
- Không tương đương vì B -> G không được suy từ K
- ABC + = ABCHG
- DBG+ = DBGHAE
2. Cho cơ sở dữ liệu
Quản lý nguồn nhân lực
Chucvu (ma_chuc_vu char(5), ten_chuc_vu char(5))
Nhanvien (ma_nhan_vien char(5), ten_nhan_vien char(20), dia_chi char(50))
Congviec (so_cong_van char(5),ma_nhan_vien char(5), ma_chuc_vu char(5),
nam_bat_dau int, thang_bat_dau int, nam_ket_thuc int, thang_ket_thuc int)
Hesoluong (ma_chuc_vu char(5), so_nam_lam_viec int, he_so float)
Phát biểu :
- Mỗi một nhân viên chỉ có thể đảm nhiệm duy nhất một công việc trong 1 thời điểm.
- Mỗi nhân viên vẫn được lưu lại tất cả các chức vụ mà mình đã từng trải qua trong quá trình làm việc.
- Các chức vụ mà nhân viên đó đã làm trong quá khứ và sau đó đổi chức vụ và cũng có thể đổi lại chức vụ đó.
- Một công việc của một nhân viên được ghi nhận bằng năm bắt đầu và tháng bắt đầu và khi đã chuyển sang công việc mới thì năm kết thúc và tháng kết thúc mới được ghi nhận. (Bắt đầu là tính đầu tháng, kết thúc là tính cuối tháng)
- Tiền lương hằng tháng được tính theo hệ số lương theo chức vụ * mức lương căn bản.
- Hệ số lương được tính theo chức vụ và số năm làm việc với chức vụ đó (số năm này làm tròn xuống – tức làm 3 năm 6 tháng là 3 năm)
Câu hỏi :
a. Liệt kê danh sách gồm mã nhân viên và tên nhân viên mà đã làm hơn 2 chức vụ cho công ty. (1 điểm)
b. Liệt kê danh sách gồm mã nhân viên và tên nhân viên mà có làm chức vụ có tên là “giam doc” hay “truong phong” trong thời gian hơn 2 năm. (1 điểm)
c. Liệt kê danh sách gồm tên nhân viên, tên chức vụ hiện tại mà nhân viên này đang làm, và hệ số lương cho chức vụ đó. (1 điểm)
d. Liệt kê danh sách gồm mã nhân viên, tên nhân viên mà đã làm hết mọi chức vụ. (1 điểm)
e. Liệt kê danh sách gồm mã nhân viên, tên nhân viên mà đã làm chức vụ có tên là “truong phong” vào tháng 2 năm 2005 và cho đến bây giờ vẫn còn làm chức vụ đó mà không hề có sự thay đổi. (1 điểm)
Đáp án :
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien
Group by nv.ma_nhan_vien, nv.ten_nhan_vien
Having count(distinct cv.ma_chuc_vu) > 2
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From (nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien)
Inner join chucvu ch on ch.ma_chuc_vu = cv.ma_chuc_vu
Where
ch.ten_chuc_vu in (“giam doc”,”truong phong”)
and
(
([(cv.nam_ket_thuc – cv.nam_bat_dau)*12 + (cv.thang_ket_thuc – cv.thang_bat_dau) >= 24 ] and [cv.nam_ket_thuc is not null] )
Or
( [(year(date()) – cv.nam_bat_dau)*12 + (month(date()) – cv.thang_bat_dau) >= 24 ] and [cv.nam_ket_thuc is null] )
)
- Select nv.ma_nhan_vien, nv.ten_nhan_vien, hs.he_so
From ((nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien)
Inner join chucvu ch on ch.ma_chuc_vu = cv.ma_chuc_vu)
Inner join hesoluong hs on
INT(((cv.nam_ket_thuc – cv.nam_bat_dau)*12 + (cv.thang_ket_thuc – cv.thang_bat_dau))/12) = hs.so_nam_lam_viec
Where cv.nam_ket_thuc is null and cv.thang_ket_thuc is null
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien
Group by nv.ma_nhan_vien, nv.ten_nhan_vien
Having count(distinct cv.ma_chuc_vu) =
(select count(ma_chuc_vu) from chucvu)
- Select nv.ma_nhan_vien, nv.ten_nhan_vien
From (nhanvien nv inner join congviec cv on cv.ma_nhan_vien = nv.ma_nhan_vien) inner join chucvu ch on ch.ma_chuc_vu = cv.ma_chuc_vu
Where ch.ten_chuc_vu = ‘Truong phong’ and
cv.nam_ket_thuc is null and
[
( cv.nam_bat_dau = 2005 and cv.thang_bat_dau <= 2)
Or
( cv.nam_bat_dau < 2005)
]ĐỀ CƯƠNG ÔN TẬP CƠ SỞ DỮ LIỆU
Chương 1: ĐẠI CƯƠNG VỀ CÁC HỆ CƠ SỞ DŨ LIỆU
1) Sự cần thiết của việc tổ chức lưu trữ dữ liệu theo lý thuyếtCSDL.
2) Định nghĩa các thuật ngữ:CSDL,hệ quản trị CSDL,hệ CSDL.
3) Chứ năng và vai trò của hệ quản trị CSDL.
4) Hiểu như thế nào về tính độc lập của dữ liệu?
5) Liệt kê những “vị trí ”của con người có liên quan đến hệ CSDL.
6) Sự phân loại các hệ CSDL.
Chương 2: CÁC MÔ HÌNH DỮ LIỆU
1) Phân loại các mô hình dữ liệu dựa trên các khái niệm được sử dụng để mô tả cấu trúc CSDL.
2) Vai trò của mô hình dữ liệu bậc cao trong quá trình thiết kế CSDL
3) Định nghĩa các thuật ngữ sau trong mô hình thực thể liên kết:Thực thể,thuộc tính,giá trị thuộc tính,thể hiện liên kết,thuộc tính phức hợp,thuộc tính đa trị,thuộc tính suy diễn được,thuộc tính khóa,miền giá trị.
4) Sự khác nhau giữa một thực thể,một kiểu thực thể và một tập thực thể.
5) Sự khác nhau giữa một thực thể lien kết,một tập liên kết và một kiểu liên kết.
6) Vai trò tham gia là gì?Khi nào cần phải sử dụng các tên vai trò trong mô tả các kiểu liên kết.?
7) Khi nào các thực thể lien kết yều được dùng trong việc mô hình hóa CSDL?Định nghĩa các thuật ngữ:kiểu thực thể chủ,kiểu thực thể yếu,khóa bộ phận,kiểu liên kết xác định.
BÀI TẬP
Giả sử sau khi tập hợp các yêu cầu và phân tích,hoạt động của công ty được ghi chép lại như sau:
1. Công ty được tổ chức thành các đơn vị.Mỗi đơn vị có một mã số duy nhất.một tên duy nhất ,một nhân viên cụ thẻ quản lí đơn vị.Việc nhân viên quản lí đơn vị được ghi lại bằng ngày nhân viên đó bắt đầu quản lí.Một đơn vị có thể có nhiều địa điểm.
2. Mỗi đơn vị kiểm soát một dự án.Một dự án có một tên duy nhất,một mã số duy nhất và một địa điểm .
3. Với mỗi nhân viên lưu giữ lại Họ tên ,Mã số,Điạ chỉ,Lương,Giới tính,Ngày sinh.Một nhân viên chỉ được làm việc cho 1 đơn vị,nhưng có thể làm việc trên nhiều dự án do nhiều đơn vị kiểm soát.Cần phải lưu giữ lại số giờ làm việc của mỗi nhân viên trên một dự án.Mỗi nhân viên có thể có một người giám sát trực tiếp,người đó cũng là nhân viên.
4. Mỗi nhân viên có những người phụ thuộc.Những người này được hưởng bảo hiểm theo nhân viên.Với mỗi người phụ thuộc cần lưu giữ Họ tên,Giới tính,Ngày sinh và mối quan hệ với nhân viên (la con hoặc bố ,mẹ…).
Phân tích các kiểu thực thể và kiểu liên kết có trong CSDL.Xây dựng mô hình ER,sau đó chuyển sang mô hình quan hệ.
Chương 3: MÔ HÌNH CSDL QUAN HỆ
1) Định nghĩa các thuật ngữ sau:mienf ,thuộc tính,n-bộ,lược đồ quan hệ,trạng thái quan hệ,cấp của quan hệ,lược đồ CSDL,trạng thái CSDL.
2) Sự khác nhau của siêu khóa và khóa?
3) Liệt kê các phép toán đại ssoos quan hệ và mục đích của tứng phép toán.
Bài tập:
Cho lược đồ cơ sở dư liệu dùng để quản lý hồ sơ sinh viên bao gồm các lược đồ quan hệ:
SV(MaSV,Hoten,Gioitinh,Ngáyinh,Lop)
MON(MaMH,TenMH,Sotiet)
KQ(MaSV,MaMH,Diemthi)
1. Hãy liệt kê các phụ thuộc hàm của các lược đồ quan hệ trên.
2. Hãy thực hiện các câu hỏi sau băng ngôn ngữ đại số quan hệ:
a) Lập danh sách sinh viên nữ lớp “AT4B”gồm MaSV,Hoten.
b) Lập bảng điểm cho tất cả các sinh viên, bảng điểm gồm cột MaSV, TenMH,Diemthi.
c) Lập phiếu điểm cho sinh viên có tên là “AAA” . phiếu điểm gồm các thông tin sau: TenMH, Diemthi.
d) Lập danh sách sinh viên phải thi lai mon “ cơ sở dữ liệu”. Danh sách gồm TenLop, MaSV, Hoten và Diemthi.
e) Đưa ra danh sách các sinh viên chưa có kết quả thi của các môn học.
Chương 4. Lý thuyết thiết kế csdl
Câu hỏi
1. Hãy nêu ra những bất thường có thể sảy ra đối với các thao tác nhạp csdl quan hệ. Vì sao chúng được coi là không tốt ?, hãy minh họa bằng ví dụ.
2. trình bày các nguyên tắc đối với việc thiết kế lược đồ quan hệ. Hãy minh họa việc vi phạm các nguyên tắc đó sẽ có hại như thế nào ?.
3. Vì sao các quy tắc suy diễn Amstrong (Qt1 đến Qt3) là quan trọng ?
4. Phụ thuộc hàm là gì? Việc chỉ ra phụ thuộc hàm giữa các thuộc tính của 1 lược đồ quan hệ dựa trên cơ sở nào?
5. Bao đóng của 1 tập phụ thuộc hàm là gì? Khi nào hai tập phụ thuộc hàm là tương đương?Làm thế nào để kiểm tra tính tương đương của chúng?
6. Tập tối thiểu của các phụ thuộc hàm là gì?Có phải mỗi tập phụ thuộc hàm có một tập tối thiểu phụ thuộc hàm tương đương hay không?
7. Định nghĩa các dạng chuẩn 1NF,2NF,3NF,BCNF.
8. phụ thuộc hàm nào cần tránh khi một quan hê ở 3NF ?
9. dạng chuẩn BCNF khác gì so với 3NF? Vì sao nó dc coi là mạnh hơn 3NF?
10. tính chất bảo toàn phụ thuộc hàm đối với 1 phép tách là gì? Vì sao nó la quan trọng? Vì sao ko thể đảm bảo rằng 1 phép tách các lược đồ quan hệ ko BCNF thành BCNF là bảo toàn phụ thuộc hàm? Hãy cho 1 phản ví dụ.
11. tính chất kết nối bảo toàn thông tin của 1 phép tách là gì? Giữa các tính chất bảo đảm phụ thuộc hàm và kết nối bảo toàn thông tin của phép tách , cái nào quan trọng hơn? Vì sao?
Bài tập
1. cho lược đồ quan hệ R={A,B,C,D} và F={A->B, BC->D, C->A}.Phụ thuộc hàm nào trong các phụ thuộc hàm sau là suy diễn được từ F:
a. C->D b. AC->D c. AD->C d. BC->A e. B->CD
2. cho lược đồ quan hệ R={A,B,C,D,E,G,H} và
F={AB->C, B->D, CD->E, CE->GH, G->A}.
Sử dụng các quy tắc suy diễn ,chứng minh rằng BC->A.
3. cho lược đồ quan hệ R{S,I,D,M} và tập phụ thuộc hàm
F={SI->DM, SD->M, D->M}.
a) Tìm tất cả các khóa của R?
b) Tìm phủ tối thiểu của F?
c) Xác định dạng chuẩn cao nhất của R?
d) Nếu R chưa đạt chuẩn 3NF, hãy tách R thành các lược đồ dạng chuẩn 3NF vừa bảo toàn thông tin , vừa bảo toàn phụ thuộc hàm.
e) Nếu R chưa đạt chuẩn BCNF, hãy tách R thành các lược đồ dạng chuẩn BCNF.
f) Kiểm tra phép tách R thành các lược đồ con R1{SID} và {SIM} có bảo toàn thông tin hay ko?
g) Kiểm tra phép tách R thành các lược đồ con R1{SID} và R2 {SIM} có bảo toàn phụ thuộc hàm hay ko?
và lời giải luôn nè
Bài 1-Chương 2
*Phân tích các kiểu thực thể
-DONVI (tênDV,masoDV,nguoiquanly,ngaybatdau,,diadiem).
Thuộc tính tenDV,masoDV,diadiem là các thuộc tính mô tả đơn vị.
Thuộc tính nguoiquanly,ngaybatdau là các thuộc tính biểu thị một kiểu liên kết (với kiểu thực thể NV).
Thuộc tính khóa: tenDV, masoDV.
Thuộc tính đơn trị: nguoiquanly,ngaybatdau
Thuộc tính đa trị: điadiem.
-DUAN(tenDA,masoDA,diadiemDA,donvikiemsoat)
Thuộc tính tenDA,masoDA, diadiem là các thuộc tính mô tả DUAN.
Thuộc tính donvikiemsoat biểu thị kiểu liên kết với kiểu thực thể DONVI
Thuộc tính khóa: tenDA, masoDA
-NV(hoten,masoNV,diachi,luong,gioitinh,ngaysinh,don vi,nguoigiamsat)
Thuộc tính hoten là một thuộc tính phức hợp.
Các thuộc tính donvi,nguoikiemsat mô tả các kiểu liên kết giữa kiểu thực thể NV và các kiểu thực thể
DONVI và NV tương ứng.
Thuộc tính khóa : masoNV
-NGUOI PHU THUOC(hotenNPT,gioitinh,ngaysinh,moiquanhe)
Thuộc tính moiquanhe mô tả kiểu liên kết với kiểu thực thể NV
*Phân tích kiểu liên kết:
-Kiểu liên kết DONVI <kiểm soát> DUAN:
+là kiểu liên kết có tỷ số lực lượng 1: n.
+Sự tham gia của DUAN vào kiểu liên kết là toàn bộ (v. dự án nào cũng đc một đơn vị kiểm soát)
+Nếu đơn vị nào cũng có dự án th. việc tham gia của DƠNVI vào kiểu liên kết là t.an bộ, ngc lại sự
tham gia là bộ fận
-Kiểu liên kết NV <làm việc cho> DONVI:
+Có tỷ số lực lượng n : 1
+Sự tham gia của hai kiểu thực thể vào liên kết là toàn bộ
-Kiểu liên kết NV <quản l.> DONVI:
+Có tỷ số lực lượng 1:1
+Sự tham gia của kiểu thực thể NV vào kiểu liên kết là bộ fận (v. ko phải nhân viên nào cũng quản l.
đơn vị)
+Sự tham gia của kiểu thực thể DONVI vào kiểu liên kết là toàn bộ (v. đơn vị nào cũng phải có ng'
quản l.)
-Kiểu liên kết NV <giám sát> NV:
+Có tỷ số lực lượng 1:n
+Sự tham gia của kiểu thực thể NV (ở cả hai phía) là bộ fận (v. ko fải nhân viên nào cũng giám sát
nhân viên khác, và ko fải nhân viên nào cũng bị giám sát)
+Kiểu thực thể NV đóng hai vai tr. khác nhau: ng' giám sát và ng' bị giám sát
-Kiểu liên kết NV <làm việc trên> DUAN:
+Có tỷ số lực lượng m:n
+Sự tham gia của kiểu thực thể NV là bộ fận (v. ko fải mọi nhân viên đều làm việc trên dự án)
+Sự tham gia của kiểu thực thể DUAN là toàn bộ ( v. dự án nào cũng phải có nhân viên tham gia)
+Kiểu liên kết này có thuộc tính là sogio, ghi lại số giờ làm việc của một nhân viên trên dự án.
-Kiểu liên kết NV <có> NGUOI PHU THUOC:
+Biểu thị mối liên hệ giữa kiểu thực thể NV và kiểu thưc thể NGUOI PHU THUOC
+Có tỷ số lực lượng 1:n
+Sự tham gia của kiểu thực thể NV là bộ fận (ko phải nhân viên nào cũng có ng' fụ thuộc)
+Sự tham gia của NGUOI PHU THUOC là toàn bộ ( có ng' fụ thuộc th. phải có nhân viên). Ng.ai ra,
kiểu thực thể này là một kiểu thực thể yếu.
*Lược đồ ER:
*Mô h.nh quan hệ:
NV(hodem, ten, masoNV,ngaysinh,diachi,gioitinh,luong,masongaygiam sat,masoDV)
DONVI (tenDV,masoDV,masongouiquanly,ngaybatdau)
DONVI_DIADIEM(masoDV,diadiemDV)
DUAN(tenDA,masoDA,diadiemDA,masoDV)
NV_DUAN(masoNV,masoDA,sogio)
PHUTHUOC(masoNV,hotenNGP,gioitinh,ngaysinh)
Bài 1-Chương 4:
F={a->b, bc->d, c->a}
F+={ a->b, bc->d, c->a, c->b,bc->b,}
a, c->d:
áp dụng tc6 : x->y thuộc F+ <=> y thuoc x+, ta có
c+={ c,a,b,d} => c->d suy diễn dc từ F
b, ac->d: áp dụng tc trên, ta có:
(AC)+= {A,C,B,D} => AC->D suy dien đc từ F
c,AD->C:
(AD)+={A,D,B} => AD->C ko suy diễn đc từ F
d,BC->A:
(BC)+={ B,C,A,D}=>BC->A suy diễn đc từ F
d, B-> CD
B+= {B} => B->CD ko suy diễn đc từ F
Bài 2-chương 4
CE->GH => CE->G & CE->H
CD->E => CD->CE (tăng)
CD ->CE & CE->G => CD ->G (bắc cầu)
B->D =>BC->CD (tăng)
BC->CD & CD->G => BC->G (bắc cầu)
BC->G & G->A => BC->A (bắc cầu) (ĐPCM)
Bài 3- Chương 4
R={ S,I, D,M}
F={SI->DM, SD->M, D->M}
a, t.m tất cả các khóa của R:
TN={S,I}
TG={D}
Xi TN u Xi (TN u Xi)+ Siêu khóa khóa
Rỗng SI SIDM SI SI
D SID SIDM SID
KL: lc đồ trên có 1 khóa K=SI
b, T.m phủ tối thiểu của F
1.loại các thuộc tính dư thừa:
S+F= {S}
I+F={I}
D+F={D,M}==> S dư thừa
Thay SD->M bằng D->M
F1={SI->DM,D=>M}
Tách các vế phải trên một thuộc tính thành các vế phải một thuôc tính
F2={SI->D,SI->M, D->M}
Loại các fụ thuộc hàm dư thừa:
Xét SI->D:
G=F2- {SI->D}= {SI->M, D->M}
(SI)+G= {S,I,M} => SI->D ko thuộc G+ => SI->D ko dư thừa
Xét SI->M:
G=F2- {SI->M}= {SI->D, D->M}
(SI)+G= {S,I,D,M} => SI->D thuộc G+ => SI->M dư thừa
F3={SI->D,D->M}
Xét D->M:
G=F3- {D->M}= {SI->D}
(D)+G= {D} => D->M ko thuộc G+ => D->M ko dư thừa
Vậy F min=F3={SI->D,D->M}
c,T.m chuẩn cao nhất cuaR
Ta có K={SI}
- Xét SD->M: (SD)+= { S,D,M}# R => SD ko là siêu khóa
Vậy R ko đạt BCNF.
– Ta có SD ko là siêu khóa, M ko là thuộc tính khóa => R cũng ko đạt 3NF
– Xét fụ thuộc hàm SI->DM có SI là thuộc tính khóa, DM là thuộc tính ko khóa
=> D,M fụ thuộc đầy đủ vào khóa
=> R đạt chuẩn 2
Vậy chuẩn cao nhất của R là 2NF.
d,Nếu R chưa đạt chuẩn 3NF, h.y tách R thành các lược đồ dạng chuẩn 3NF vừa bảo toàn thông tin,
vừa bảo toàn fụ thuôc hàm
Xét fụ thuộc hàm D->M có:
D+={D,M} # R => D ko fải là siêu khóa, và M ko fải là thuộc tính khóa
Vậy R ko đạt chuẩn 3NF
+Áp dụng phương pháp chuẩn hóa: “loại bỏ các thuộc tính fụ thuộc bắc cầu ra khỏi quan hệ và tách
chúng thành một quan hệ riên có khóa chính là thuộc tính bắc cầu, các thuộc tính c.n lại lập thành một
quan hệ có khóa chính là quan hệ ban đầu”, ta có lược đồ mới bảo toàn thông tin:
D = R1{D,M} và R2{S,I,D}
+Kiểm tra sự bảo toàn fụ thuộc hàm:
-Xác định h.nh chiếu trên R1 của F ( áp dụng tc6 của FD), ta có
D+F={D,M}
M+F={M}
(DM)+F={ D,M}
π R1(F)= {D->M,D->DM,M->D,M->DM}
-Xác định h.nh chiếu của R2 trên F
S+F={S}
I+F={D}
D+F={D,M}
SI+F={S,I,D,M}
SD+F={ S,D,M}
SID+F={S,I,D,M}
π R2(F)= {S->I,S->D,S->ID,I->S,I->D,I->SD,D->S, D->I,D->SI, SI->D,
SD->I, DI->S }
-π R1(F) U π R2(F)=G
G={D->M,D->DM,M->D,M->DM, S->I,S->D,S->ID,I->S,I->D,I->SD,D->S, D->I,D-
>SI, SI->D, SD->I, DI->S }
(SI)+G={M,D,S,I} => SI->DM thuộc G+
(SD)+G ={ S,D, M,I} => SD->M thuộc G+
=> mọi fụ thuộc hàm trong F đều đc suy ra từ G
=> fép tách D bảo toàn FD
e, Nếu R chưa đạt chuẩn BCNF, h.y tách R thành các lược đồ dạng chuẩn BCNF
F={SI->DM, SD->M, D->M}
R1={S,I,M} và R2={ S,I,D}
g, Ktra fép tách R thành R1{SID} và R2{SIM} có bảo toàn thông tin ko?
R1 giao R2={S,I}
R1-R2= {D}
((R1 giao R2)-> (R1-R2))={ SI->D} thuoc F+ => bao toan thong tin
h, ktra phep tach R thanh R1{SID} va R2{SIM} co bao toan fu thuoc ham ko?
Xác định h.nh chiếu trên R1 của F ( áp dụng tc6 của FD), ta có
S+F={S}
D+F={D,M}
I+F={I}
(SI)+F={S,I,D,M}
(ID)+F={I,D,M}
(SD)+F={S,D,M}
(SID)+F={ S,I,D,M}
π R1(F)= {S->I,S->D,S->ID,D->S,D->I,D->SI,I->S,I->D,I->SD, SI->D,SD-
>I, ID->S, IS->D}
-Xác định h.nh chiếu của R2 trên F
S+F={S}
I+F={I}
M+F={M}
SI+F={S,I,D,M}
IM+F={ I,M}
SIM+F={S,I,D,M}
π R2(F)= {S->I,S->M,S->IM, I->M,I->S,I->SM,M->S,M->I,M->SI, SI->M, SM-
>I, IM->S,IS->M }
-π R1(F) U π R2(F)=G
G={ S->I,S->D,S->ID,D->S,D->I,D->SI,I->S,I->D,I->SD, SI->D,SD->I, ID->S, IS-
>D,S->M,S->IM, I->M,I->SM,M->S,M->I,M->SI, SI->M, SM->I, IM->S,IS->M }
(SI)+G={M,D,S,I} => SI->DM thuộc G+
(SD)+G ={ S,D, M,I} => SD->M thuộc G+
D+G={D,I,S,M} => D->M thuoc G+
=> mọi fụ thuộc hàm trong F đều đc suy ra từ G
=> fép tách D bảo toàn FD
Chuong 3:
2.
a. lập danh sách sinh viên nữ của lớp “AT4” gồm MaSV, Hoten
π <MaSV,Hoten>(σLop=”AT4”,Gioitinh=nữ(SV))
b. lập bảng điểm cho tất cả các sinh viên:MaSV,TenMH,Diemthi
π<MaMH,TenMH>R1à(MON)
π<MaSV,TenMH,Diemthi>(KQ*R1)
c.
π<MaSV>(σ<Ten=”AAA”>R1à(SV))
π<MaMH,Diemthi>R2à(KQ*R1)
π<TenMH,Diemthi>(Mon*R2)
d.
π<MaMH>(σ<TenMH=’’cơ sở dữ liệu’’>R1à(MON))
π<MaSV,Diemthi>R2à(KQ*R1)
π<Tenlop,MaSV,Hoten,Diemthi>(SV*R2)
e.
π<MaSV>(σ<Diemthi=NULL>R1à(KQ))
π<MaSV,Hoten,Lop>(SV*R1)Table SINHVIEN
Table KHOA
Table MONHOC
Table KETQUA
Câu hỏi:Quote:01: Tao CSDL, cac bang va cac khoa ngoai cho tren
02: Xoa cac rang buoc khoa ngoai tham chieu den bang SINHVIEN va bang MONHOC
03: Xoa bang KHOA va MONHOC
04: Tao lai cac bang va cac khoa ngoai da xoa o cau 2 va 3
05: Nhap du lieu cho tat ca cac bang
06: Sua so tiet cua mon "Tri Tue Nhan Tao" lai 30 tiet
07: Xoa ket qua cua sinh vien co ma S001
08: Chen lai cac bo cua sinh vien S001 vua xoa o cau 7
09: Sua sinh vien 'Nguyen Thi Lam' thanh 'Nguyen Thanh Son' va phai thanh 'Nam'
10: Chuyen sinh vien 'Le Thi Lan Anh' sang khoa CNTT
11: Cho biet ket qua hoc tap cua sinh vien co ma S007
12: Liet ke nhung sinh vien sinh vao ngay 03 thang 07
13: Cho biet danh sach sinh vien ma ho co chua chu Anh
14: Cho biet ket qua hoc tap gom: HOSV, TENSV, MAMH, LANTHI, DIEM cua sinhvien S007
15: Cho biet ket qua hoc tap gom: HOSV, TENSV, TENMH, LANTHI, DIEM cua sinh vien S007
16: Cho biet danh sach sinh vien Nam khoa 'Cong Nghe Thong Tin' sap tang dan theo ten
17: Cho biet danh sach cac mon hoc tren 40 tiet va co ten bat dau bang chu T
18: Liet ke nhung sinh vien tu 22 tuoi tro len khoa 'Cong Nghe Thong Tin' va khoa 'Dien Tu Vien Thong'
19: Cho biet ten khoa nao khong co Sinh Vien
20: Cho biet danh sach sinh vien sinh vien chua hoc mon nao, thong tin gom Ho, Ten, Ngay sinh, Ten khoa
21: Cho biet danh sach nhung sinh vien da hoc mon co ma AV, sap giam dan theo ngay sinh. Thong tin hien thi gom MASV,HOSV,TENSV,NGAYSINH,ten KHOA
22: Cho biet ten sinh vien duoc diem cao nhat
23: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat
24: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat ma chua thi lai lan 2
25: Dem so luong sinh vien cua khoa 'Quan Tri Kinh Doanh'
26: Dem so luong sinh vien cua tung khoa
27: Cho biet ten khoa co dong sinh vien nhat
28: Cho biet diem thap nhat cua moi mon hoc
29: Cho biet ten mon hoc nao chua co sinh vien hoc
30: Cho biet diem trung binh lan thi thu nhat cua sinh vien S004
31: Cho biet diem trung binh, diem lon nhat, diem nho nhat lan thu nhat cua tung sinh vien. Thong tin gom TenSV, TenKhoa, DiemTB use mastercreate database sinhvienuse sinhvienset DateFormat dmycreate table KHOA( MAKHOA char(5) NOT NULL, TENKHOA nvarchar(50) NOT NULL,constraint PK_KHOA_MAKHOA primary key (MAKHOA) )create table SINHVIEN( HOSV nvarchar(50) NOT NULL, TENSV nvarchar(50) NOT NULL, MASV char(5) NOT NULL, NGAYSINH DateTime, PHAI char(3), MAKHOA char(5),constraint PK_SINHVIEN_MASV primary key (MASV),constraint FK_SINHVIEN_MAKHOA foreign key (MAKHOA) references KHOA(MAKHOA) )create table MONHOC( TENMH nvarchar(50) NOT NULL, MAMH char(5) NOT NULL, SOTIET int,constraint PK_MONHOC_MAMH primary key (MAMH) )create table KETQUA( MASV char(5) NOT NULL, MAMH char(5) NOT NULL, LANTHI decimal NOT NULL, DIEM decimal NOT NULL,constraint PK_KETQUA_MASV_MAMH_LANTHI primary key (MASV,MAMH,LANTHI),constraint FK_KETQUA_MASV foreign key (MASV) references SINHVIEN(MASV),constraint FK_KETQUA_MAMH foreign key (MAMH) references MONHOC(MAMH) )-- khigiadano : 2: Xoa cac rang buoc khoa ngoai tham chieu den bang SINHVIEN va bang MONHOCalter table KETQUA drop constraint FK_KETQUA_MASValter table KETQUA drop constraint FK_KETQUA_MAMH-- khigiadano : 3: Xoa bang KHOA va MONHOCalter table SINHVIEN drop constraint FK_SINHVIEN_MAKHOAdrop table KHOAdrop table MONHOC-- khigiadano : 4: Tao lai cac bang va cac khoa ngoai da xoa o cau 2 va 3create table KHOA( MAKHOA char(5) NOT NULL, TENKHOA nvarchar(50) NOT NULL,constraint PK_KHOA_MAKHOA primary key (MAKHOA) )create table MONHOC( TENMH nvarchar(50) NOT NULL, MAMH char(5) NOT NULL, SOTIET int,constraint PK_MONHOC_MAMH primary key (MAMH) )alter table SINHVIEN add constraint FK_SINHVIEN_MAKHOA foreign key (MAKHOA) references KHOA(MAKHOA)alter table KETQUA add constraint FK_KETQUA_MASV foreign key (MASV) references SINHVIEN(MASV)alter table KETQUA add constraint FK_KETQUA_MAMH foreign key (MAMH) references MONHOC(MAMH)-- khigiadano : 5: Nhap du lieu cho tat ca cac banginsert into KHOA values('CNTT','Cong Nghe Thong tin')insert into KHOA values('QTKD','Quan Tri Kinh Doanh')insert into KHOA values('DTVT','Dien Tu Vien Thong')insert into KHOA values('AVAN','Khoa anh Van')insert into SINHVIEN values('Tran Minh','Son','S001','01/05/1985','Nam','CNTT')insert into SINHVIEN values('Nguyen Quoc','Bao','S002','15/06/1986','Nam','CNTT')insert into SINHVIEN values('Phan Anh','Tung','S003','20/12/1983','Nam','QTKD')insert into SINHVIEN values('Bui Thi anh','Thu','S004','01/02/1985','Nu','QTKD')insert into SINHVIEN values('Le Thi Lan','Anh','S005','03/07/1987','Nu','DTVT')insert into SINHVIEN values('Nguyen Thi','Lam','S006','25/11/1984','Nu','DTVT')insert into SINHVIEN values('Phan Thi','Ha','S007','03/07/1988','Nu','CNTT')insert into SINHVIEN values('Tran The','Dung','S008','21/10/1985','Nam','CNTT')insert into MONHOC values('Ke Toan Tai Chinh','KTTC',45)insert into MONHOC values('Toan Cao Cap','TCC',60)insert into MONHOC values('Co So Du Lieu','CSDL',45)insert into MONHOC values('Ky Thuat Lap Trinh','KTLT',60)insert into MONHOC values('Tin Hoc Van Phong','THVP',30)insert into MONHOC values('Anh Van','AV',45)insert into MONHOC values('Tri Tue Nhan Tao','TTNT',45)insert into KETQUA values('S001','TCC',1,5.5)insert into KETQUA values('S002','CSDL',1,3)insert into KETQUA values('S008','AV',1,7)insert into KETQUA values('S002','CSDL',2,6)insert into KETQUA values('S003','KTTC',1,4.5)insert into KETQUA values('S004','AV',1,8)insert into KETQUA values('S004','THVP',1,3.5)insert into KETQUA values('S006','TCC',1,5)insert into KETQUA values('S001','CSDL',1,4)insert into KETQUA values('S007','AV',1,2)insert into KETQUA values('S004','THVP',2,7.5)insert into KETQUA values('S007','KTLT',1,6)insert into KETQUA values('S007','AV',2,9)-- khigiadano : 6: Sua so tiet cua mon "Tri Tue Nhan Tao" lai 30 tietupdate MONHOC set SOTIET=30 where TENMH='Tri Tue Nhan Tao'-- khigiadano : 7: Xoa ket qua cua sinh vien co ma S001delete from KETQUA where MASV='S001'-- khigiadano : 8: Chen lai cac bo cua sinh vien S001 vua xoa o cau 7insert into KETQUA values('S001','TCC',1,5.5)insert into KETQUA values('S001','CSDL',1,4)-- khigiadano : 9: Sua sinh vien 'Nguyen Thi Lam' thanh 'Nguyen Thanh Son' va phai thanh 'Nam'update SINHVIEN set HOSV='Nguyen Thanh', TENSV='Son', PHAI='Nam' where HOSV='Nguyen Thi' and TENSV='Lam'-- khigiadano : 10: Chuyen sinh vien 'Le Thi Lan Anh' sang khoa CNTTupdate SINHVIEN set MAKHOA='CNTT' where HOSV+' '+TENSV='LE Thi Lan Anh'-- khigiadano : 11: Cho biet ket qua hoc tap cua sinh vien co ma S007select * from KETQUA where MASV='S007'-- khigiadano : 12: Liet ke nhung sinh vien sinh vao ngay 03 thang 07select * from SINHVIEN where day(NGAYSINH)=03 and month(NGAYSINH)=07-- khigiadano : 13: Cho biet danh sach sinh vien ma ho co chua chu Anhselect * from SINHVIEN where HOSV like'%Anh%'-- khigiadano : 14: Cho biet ket qua hoc tap gom: HOSV, TENSV, MAMH, LANTHI, DIEM cua sinhvien S007select HOSV,TENSV,MAMH,LANTHI,DIEM from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and KETQUA.MASV='S007'-- khigiadano : 15: Cho biet ket qua hoc tap gom: HOSV, TENSV, TENMH, LANTHI, DIEM cua sinh vien S007select HOSV,TENSV,TENMH,LANTHI,DIEM from SINHVIEN,MONHOC,KETQUA where SINHVIEN.MASV=KETQUA.MASV and KETQUA.MAMH=MONHOC.MAMH and KETQUA.MASV='S007'-- khigiadano : 16: Cho biet danh sach sinh vien Nam khoa 'Cong Nghe Thong Tin' sap tang dan theo tenselect HOSV,TENSV,MASV,NGAYSINH,PHAI,SINHVIEN.MAKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA='Cong Nghe Thong Tin'-- khigiadano : 17: Cho biet danh sach cac mon hoc tren 40 tiet va co ten bat dau bang chu Tselect * from MONHOC where SOTIET>40 and TENMH like('T%')-- khigiadano : 18: Liet ke nhung sinh vien tu 22 tuoi tro len khoa 'Cong Nghe Thong Tin' va khoa 'Dien Tu Vien Thong'select HOSV,TENSV,MASV,NGAYSINH,PHAI,SINHVIEN.MAKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA in('Cong Nghe Thong Tin','Dien Tu Vien Thong') and year(GetDate())-year(NGAYSINH)>=22-- khigiadano : 19: Cho biet ten khoa nao khong co Sinh Vienselect distinct * from KHOA where MAKHOA not in(select MAKHOA from SINHVIEN)-- khigiadano : 20: Cho biet danh sach sinh vien sinh vien chua hoc mon nao, thong tin gom Ho, Ten, Ngay sinh, Ten khoaselect HOSV,TENSV,NGAYSINH,TENKHOA from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and MASV not in(select MASV from KETQUA)-- khigiadano : 21: Cho biet danh sach nhung sinh vien da hoc mon co ma AV, sap giam dan theo ngay sinh.-- khigiadano : Thong tin hien thi gom MASV,HOSV,TENSV,NGAYSINH,ten KHOAselect distinct SINHVIEN.MASV,HOSV,TENSV,NGAYSINH,TENKHOA from SINHVIEN,KHOA,KETQUA where SINHVIEN.MAKHOA=KHOA.MAKHOA and SINHVIEN.MASV=KETQUA.MASV and SINHVIEN.MASV in(select MASV from KETQUA where MAMH='AV')-- khigiadano : 22: Cho biet ten sinh vien duoc diem cao nhatselect HOSV,TENSV,DIEM from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and DIEM=(select max(DIEM) from KETQUA)-- khigiadano : 23: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhatselect HOSV,TENSV from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and MAMH='CSDL' and LANTHI='1' and DIEM<5-- khigiadano : 24: Cho biet sinh vien nao rot mon CSDL o lan thi thu nhat ma chua thi lai lan 2select HOSV,TENSV from SINHVIEN,KETQUA where SINHVIEN.MASV=KETQUA.MASV and MAMH='CSDL' and LANTHI='1' and SINHVIEN.MASV not in (select MASV from KETQUA where MAMH='CSDL' and LANTHI='2')-- khigiadano : 25: Dem so luong sinh vien cua khoa 'Quan Tri Kinh Doanh'select count(*) as [QTKD] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA and TENKHOA='Quan Tri Kinh Doanh'-- khigiadano : 26: Dem so luong sinh vien cua tung khoaselect KHOA.MAKHOA, count(*) as [So Luong] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA group by KHOA.MAKHOA-- khigiadano : 27: Cho biet ten khoa co dong sinh vien nhatselect TENKHOA, count(*) as[So luong] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA group by TENKHOA having count(*)>=ALL(select count(*) as [So Luong] from SINHVIEN,KHOA where SINHVIEN.MAKHOA=KHOA.MAKHOA group by KHOA.MAKHOA)-- khigiadano : 28: Cho biet diem thap nhat cua moi mon hocselect MAMH,min(DIEM) as [Min diem] from KETQUA group by MAMH-- khigiadano : 29: Cho biet ten mon hoc nao chua co sinh vien hocselect TENMH from MONHOC where MAMH not in(select distinct MAMH from KETQUA)-- khigiadano : 30: Cho biet diem trung binh lan thi thu nhat cua sinh vien S004select MASV,AVG(DIEM) as [Diem TB] from KETQUA where LANTHI=1 and MASV='S004' group by MASV-- khigiadano : 31: Cho biet diem trung binh, diem lon nhat, diem nho nhat lan thu nhat cua tung sinh vien.-- khigiadano : Thong tin gom TenSV, TenKhoa, DiemTBselect HOSV,TENSV,TENKHOA,AVG(DIEM) as [Diem TB],MAX(DIEM) as [Diem MAX],MIN(DIEM) as [Diem MIN] from KETQUA,SINHVIEN,KHOA where SINHVIEN.MASV=KETQUA.MASV and SINHVIEN.MAKHOA=KHOA.MAKHOA and LANTHI=1 group by HOSV,TENSV,TENKHOAMột số bài tậpôn tập thi tốt nghiệp cao đẳng K3Môn Cơ sở dữ liệu------Chú ý: các bài tập này chỉ nhằm minh hoạ phần lý thuyếtPhần I. Đại số quan hệ và ngôn ngữ SQLBài 1. Cho các quan hệ:RABCSBCDQDEFa2b2c1b2c1d1d1E1f1a1b2c1b2c1d2d2E1f2a2b3c2b1c2d3d2E2f3Hãy thực hiện các phép toán đại số quan hệ sau:a. dA=a2(R*S) e. R x Sb. PABC(R*S*Q) f. R * dB = b1(S)c. PBC(R) ÈPBC(S) g. PB(dB=b2(R*S))d. PBC(R) ÇPBC(S) h. dD=d1(PBCD(S*Q))Bài 2. Cho các quan hệ với lược đồ sau: HH(HH#, TenHH, SoLuong, NgaySX, ChungLoai, NSX#) và NSX (NSX#, TenNSX)Trong đó:HH#: Mã hàng hoá. TenHH: Tên hàng.SoLuong: Số Lượng. NgaySX: Ngày sản xuất.ChungLoai: Chủng loại hàng hoá. NSX#: Mã Nhà sản xuất.TenNSX: Tên Nhà sản xuất.Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL:a. Cho biết tên hàng, chủng loại của những mặt hàng có số lượng lớn hơn 50 và sản xuất trước ngày 1/1/2000.b. Cho biết mã hàng, tên nhà sản xuất của tất cả các mặt hàng.c. Cho biết tên hàng do nhà sản xuất LG cung cấp.Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL:d. Cho biết tổng số mặt hàng hiện có trong cơ sở dữ liệu.Cho biết mã hàng, tên hàng của các mặt hàng có số lượng ít nhất.Bài 3. Cho các quan hệ với lược đồ sau:CB(CB#, TenCB, SoNamCT, NgayVD, DiaChi, CQ#) và CQ (CQ#, DCCQ)Trong đó:CB#: Mã cán bộ. TenCB: Tên cán bộ.SoNamCT: Số năm công tác của cán bộ. NgayVD: Ngày vào Đảng.DiaChi: Địa chỉ cán bộ. CQ#: Mã cơ quan của cán bộ.DCCQ: Địa chỉ cơ quan của cán bộ.Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL:e. Cho biết tên cán bộ, số năm công tác của những cán bộ có địa chỉ là “Ha Tay” có số năm công tác ít hơn 10.f. Cho biết mã cán bộ, tên cán bộ và địa chỉ cơ quan của tất cả các cán bộ.g. Cho biết tên những cán bộ có địa chỉ cơ quan là Hà Nam.Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL:h. Cho biết tổng số cán bộ hiện có trong cơ sở dữ liệu.i. Cho biết mã cán bộ, tên cán bộ của các cán bộ có số năm công tác ít nhất nhất.Phần II: Phụ thuộc hàm Bài 1. Cho quan hệ R trên tập thuộc tính U = {A, B, C, D, E, G) và tập các phụ thuộc hàm F = {AB® C, AC®D, D®EG, G®B, A®D, CG®A}. a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB® E và AD ® BC.b. Tính bao đóng {A}+ của tập thuộc tính {A}.c. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F.Bài 2. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A®C, AB®G, B®DE, G®H, GH®A }.a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB ® H và G® C.b. Tính bao đóng {G}+ của tập thuộc tính {G}.Bài 3. Cho quan hệ R trên tập thuộc tính U = {G, H, I, K, L, M} và tập các phụ thuộc hàm F = {GH® L, I®M, L®K, HM®G, GK®I, H®L}. d. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm HI® G và GH ® KM.e. Tính bao đóng {G, H}+ của tập thuộc tính {G, H}.f. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F.Bài 4. Cho quan hệ R(U): U = {H, I, K, L, M, N} và tập phụ thuộc hàm F = {I ® LM, HI ® K, K ® N, KN®I}.c. Tìm một khoá tối thiểu của quan hệ R.d. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(HIN); R2(HIK), R3(ILM).e. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.Bài 5. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A®C, AB®G, B®DE, G®H, GH®A }.f. Tìm một khoá tối thiểu của quan hệ R.g. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(AC); R2(BDE); R3(ABGH).h. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.6. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F = {A®C, AB®G, B®DE, G®H, GH®A }.i. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(AC); R2(BDE); R3(ABGH).j. Chuẩn hoá quan hệ R về dạng chuẩn 3NF. Cách tìm khóa, phủ tối thiểu, tìm bao đóng Tìm tất cả các khóa trong lược đồ quan hệ
Trước khi đi vào chi tiết chúng ta tìm hiểu một số khái niệm:
- Tập thuộc tính nguồn (TN): bao gồm các thuộc tính chỉ xuất hiện ở vế trái, không xuất hiện ở vế phải của pth và các thuộc tính không xuất hiện ở vế trái lẫn vế phải của pth.
- Tập thuộc tính đích (TĐ) : bao gồm các thuộc tính chỉ xuất hiện ở vế phải không xuất hiện ở vế trái của pth.
- Tập thuộc tính trung gian (TG): Chứa thuộc tính ở vế trái lẫn vế phải của pth.
Thuật toán:
Bước 1:
- Tạo tập nguồn TN và tập trung gian TG
Bước 2:
- Nếu TG=0(rỗng) thì K=TN, kết thúc. ngược lại qua bước 3.
Bước 3:
- tìm tất cả
- tập con Xi của tập trung gian.
Bước 4:
- tìm siêu khóa Si bằng cách với mọi Xi,
nếu (TN U Xi)+=Q+ thì Si = TN U Xi
Bước 5:
- tìm khóa bằng cách loại bỏ các siêu khóa không tối thiểu
- với mọi Si, Sj thuộc S
nếu Si chứa trong Sj thì loại bỏ tập Sj ra khỏi siêu khóa (VD: Si=AB, Sj=ABC thì loại bỏ Sj ra khỏi tập siêu khóa)
S còn lại chính là tập khóa cần tìm.
Ví dụ :
cho lược đồ quan hệ Q={CSZ} tập phụ thuộc hàm F={CS → Z; Z → C} tìm tất cả các khóa của lược đồ quan hệ trên.
Bước 1:
- TN={S}, TG={CZ}
Bước 2:
- TG khác rỗng nên qua bước 3
Bước 3:
- tập con Xi của tập trung gian X={0,C,Z,CZ} ghi chú 0: là rỗng
Bước 4:
- S+=S Khác Q có nghĩa không có siêu khóa.
- SC+=CZS bằng với Q nên siêu khóa SC.
- SZ+=CZ bằng với Q nên Siêu khóa là CZ
- SCZ+= bằng với Q nên Siêu khóa là CSZ
Bước 5:
- Vậy tập siêu khóa S={SC, CZ, CSZ} Vì SC chứa trong CSZ và CZ chứa trong CSZ nên loại bỏ siêu khóa CSZ khỏi tập siêu khóa.
- Kết quả khóa của lược đồ quan hệ trên là SC và CZ. K={SC, CZ}
Thuật toán tìm một khóa trên lược đồ quan hệ
Mục tiêu : cho một lược đồ U có các thuộc tính {A1,A2,...An} và tập Phụ thuộc hàm F. hãy tìm một khóa cho lược đồ đó.
Thuật toán:
Bước 1 :
+ Gán K0=U+ (U+ là tập thuộc tính của U)
Bước 2 : ta có A là thuộc tính của U.
+ Tính bao đóng của (Ki-1\A)+ nếu bằng U+ ((Ki-1\A)+ =U+) thì loại bỏ A ra khỏi K tức là Ki =(Ki-1\A). nếu (Ki-1\A)+ !=U+ thì Ki =Ki-1.
Lặp lại bước trên n lần
Bước n: kết quả K=Kn
Ví dụ : cho U={A,B,C,D,E} và F={AB->C, AC->B, BC->DE} tìm một khóa của lược đồ quan hệ r xác định trên U và F ?
Bước 1:
+ K=U tức là K=ABCDE
Bước 2:
+ Tính Bao đóng của (K\A)+ nghĩa là tính (BCDE)+ = BCDE ta thấy kết quả tính bao đóng không bằng U+ nên K=ABCDE
Bước 3:
+ Tính Bao đóng của (K\B)+ nghĩa là tính (ACDE)+ = ABCDE ta thấy kết quả tính bao đóng bằng U+ nên loại B ra tập K ban đầu K=ACDE
Bước 4:
+ Tính Bao đóng của (K\C)+ nghĩa là tính (ADE)+ = ADE ta thấy kết quả tính bao đóng Không bằng U+ nên không bỏ C ra tập K ta có K=ACDE
Bước 5:
+ Tính Bao đóng của (K\D)+ nghĩa là tính (ACE)+ = ACEBD ta thấy kết quả tính bao đóng bằng U+ nên bỏ D ra tập K ta có K=ACE
Bước 6:
+ Tính Bao đóng của (K\E)+ nghĩa là tính (AC)+ = ACBDE ta thấy kết quả tính bao đóng bằng U+ nên bỏ E ra tập K ta có K=AC
=>>Kết quả Khóa là K=AC
Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm
1. Tách các phụ thuộc hàm sao cho vế phải chỉ còn một thuộc tính. (ví dụ: A->BC thành A->B và A->C)
2. Bỏ các thuộc tính dư thừa ở vế trái. (ví dụ: cho F = {A → B, B → C, AB → D} các phụ thuộc hàm có vế trái 1 thuộc tính là đầy đủ nên ta không xét, xét AB → D có B dư thừa(bỏ B) vì bao đóng của A có chứa B. A+=ABC) (dễ hiểu là chúng ta bỏ thuộc tính bên vế trái, khi và chỉ khi bao đóng của các thuộc tính còn lại có chứa thuộc tính đó)
3. Loại khỏi F các phụ thuộc hàm dư thừa. (Các thuộc tính ở vế phải của PTH chỉ xuất hiện di nhất 1 lần thì không thể loại bỏ. Còn lại tính bao đóng của tập thuộc tính vế trái nếu có xuất hiện thuộc tính vế phải thì có thể loại bỏ thuộc tính đó và đó là PTH dư thừa.)
Ví dụ: Cho lược đồ quan hệ Q(A,B,C,D) và tập pth F={AB->CD, B->C, C->D} Tìm phủ tối thiểu?
1. Tách các phụ thuộc hàm sao cho vế phải chỉ còn một thuộc tính.
+ ta có F={AB->C, AB->D, B->C, C->D}
2. Bỏ các thuộc tính dư thừa ở vế trái.
+ B->C, C->D Không xét vì vế trái chỉ có một thuộc tính.
+ xét AB->C : Nếu Bỏ A thì B+=BCD không chứa A nên không thể Bỏ A. Nếu Bỏ B thì A+=A. không bỏ được thuộc tính nào.
+ xét AB->D : Nếu Bỏ A thì B+=BCD không chứa A nên không thể Bỏ A. Nếu Bỏ B thì A+=A. không bỏ được thuộc tính nào.
3. Loại khỏi F các phụ thuộc hàm dư thừa.
+ xét AB->C : Tính AB+=ABCD = Q nên loại bỏ AB->C
+ xét AB->D : tính AB+=ABCD = Q nên loại bỏ AB->D
+ B->C : tính B+=B không thể bỏ.
+ C->D : tính C+=C không thể bỏ.
Phủ tối thiểu là Ftt = {B->C, C->D}
Tìm bao đóng
Ví dụ: Cho lược đồ quan hệ R(U, F)
Với U = ABCDE và F = { AB -->CD, E --> C, D -->CE, A -->E}. Tìm A+
- Đầu tiên gán A+=A
- Tiếp theo xét xem có PTH nào A->X không? nếu có bỏ X vào A+, ở đây ta có A->E nên A+=AE
- Ta thấy E->C nên A+=ACE
- Cuối cùng ta có A+=ACERe: Phương pháp xác định dạng chuẩn by itlinh on 30/12/2009, 10:27mình có cách tìm dạng chuẩn phân tích từng bước theo thuật toán của thầy nè, cũng dễ hiểu:
Cho lược đồ < R, F >, với R
= ABCDE, F ={AB → CD, D → C , AC → EB, AE→ B }. Hãy
Xác định dạng chuẩn của < R, F >
. Xác định dạng chuẩn
Bước 1: Muốn xác định dạng chuẩn thì đầu tiên phải tìm khóa
-
Tìm các thuộc tính nằm hoàn toàn bên trái của fụ thuộc
hàm. Những thuộc tính này chắc chắn sẽ nằm trong khóa: A
-
Tìm các thuộc tính nằm ở bên trái và bên phải. Những
thuộc tính này có khả năng nằm trong khóa nếu thuộc tính hoàn toàn nằm bên trái
không bao đóng đc toàn bộ các thuộc tính: B,C,D,E
-
Tìm những thuộc tính nằm hoàn toàn bên phải. Ta sẽ loại
những thuộc tính này vì nó sẽ ko bao giờ tham gia vào khóa. Ở lược đồ này ko có
-
Trước tiên ta sẽ xét bao đóng của A. Nếu A có thể bao
đóng toàn bộ các thuộc tính khác thì A sẽ là khóa và ko cần xét thêm nữa
-
A+: ta thấy A ko
bao đóng đc các thuộc tính khác vì trong fụ thuộc hàm nó fải kết hợp với 1
thuộc tính khác mới suy ra thuộc tính khác đc fải kết hợp A với các
thuộc tính B,C,D,E
-
AB+ : ABCDE
AB là 1 khóa. Khi đó ta ko cần
phải xét thêm ABC hay ABD … nữa. Nếu
AB ko là khóa thì fải tiếp tục
xét ABC, ABD v..v.. Vì khóa là tập thuộc tính nhỏ nhất có thể bao đóng toàn bộ
các thuộc tính khác
-
AC+ : ACEBD
AC là 1 khóa (tương tự như trên )
-
AD+: ADCEB
AD là 1 khóa (tương tự như trên )
-
AE+: AEBCD
AE là 1 khóa (tương tự như trên)
tất cả các khóa của R là AB, AC,AD,AE
Bước 2: Xác định dạng chuẩn
AB → CD
D → C
AC → EB
AE→ B
DC BC
Ok
Ko ok
Ok
ok
DC 3
ok
DC 2
R đạt chuẩn 3
Lý giải: xét dạng chuẩn thì phải xét từ dc cao nhất xuống
nếu ko thỏa dc cao nhất thì mới xét tiếp dc thấp hơn.
Để thỏa dc bc thì vế trái phải là siêu khóa (ở đây là AB,
AC,AD,AE) như vậy có 3 fụ thuộc hàm đạt dc BC
Để thỏa dc 3 thì vế trái là siêu khóa (nghĩa là đạt dc BC
rùi) hoặc vế phải có thuộc tính nằm trong khóa. Ở đây ta thấy C là thuộc tính
nằm trong khóa
D
C thỏa chuẩn 3
Đến đây ta ko cần xét. VÀ để lấy dc của R thì nó sẽ là dc
thấp nhất trogn tất cả dc mà fụ thuộc hàm đạt đc
Giải thích thêm: để thỏa dc 2 thì vế trái là siêu khóa( như
trên) hoặc vế trái ko nằm trong khóa. Tất nhiên là nó ko thỏa dc 3 rùi mới xét
đến dc 2.
-----------------------hết-------------------------------Hướng Dẫn Thực HànhHướng dẫn:· Bài tập thực hành được chia làm nhiều Module· Mỗi Module được thiết kế cho thời lượng là 3 tiết thực hành tại lớp với sự hướng dẫn của giảng viên.· Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.· Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng. Những sinh viên chưa hoànn tất phần bài tập tại lớp có trách nhiệm tự làm tiếp tục ở nhà.
Module 1 Nội dung kiến thức thực hành: +Thực hành ngôn ngữ SQL: - ngôn ngữ định nghĩa dữ liệu: CREATE TABLE- ngôn ngữ thao tác dữ liệu: INSERT, UPDATE, DELETE...+Thông qua việc cài đặt cơ sở dữ liệu trên DBMS,SV hiểu rõ hơn về mô hình ER, mô hình quan hệBài 1. Mục đích:Xác định quan hệ giữa các thực thể, khóa chính, khóa ngoạiMô tả:Cho lược đồ CSDL sau, xác định quan hệ giữa các thực thể, khóa chính, khóa ngoại. GGGợi ý:SV xác định và gạch dưới các thuộc tính làm khóa chính.Bài 2: Mục đích:Sử dụng ngôn ngữ định nghĩa dữ liệu: CREATE TABLE để cài đặt cấu trúc bảng vào ngôn ngữ SQLMô tả: Thực hiện lệnh CREATE TABLE với các ràng buộc về khóa chính, khóa ngoại để tạo các bảng tương ứng với các thực thể đã cho ở Bài 1. Gợi ý:SV tự chọn kiểu dữ liệu phù hợp cho từng thuộc tính Ví dụ tạo bảng SINHVIENCREATE TABLE SINHVIEN( HOTEN VARCHAR(30) NOT NULL, MASV INT PRIMARY KEY, NAM INT NOT NULL, KHOA VARCHAR(10) NOT NULL)Bài 3:Mục đích:Thực hiện lệnh Alter Table... add constraint để kiểm tra các ràng buộc về khóa chính, khóa ngoại (nếu chưa cài đặt ở Bài 2) và các ràng buộc về dữ liệu được mô tả bên dưới.Mô tả: 1. Tạo ràng buộc cho thuộc tính năm(Nam) của bảng SINHVIEN: nam>=1 va nam<=62. Tạo ràng buộc về điểm(diem) cho bảng KETQUA: Diem>=0 va Diem<=10Gợi ý:Ví dụ 1: ràng buộc khóa ngoại cho bảng DIEUKIENAlter table DIEUKIENadd constraint fk_dkien foreign key(MAMH) references MONHOC(MAMH)Ví dụ 2: ràng buộc về Diem cho bảng KETQUAAlter table KETQUAadd constraint ck_kqua check(DIEM>=0 and DIEM<=10)CREATE DATABASE QLSVUSE QLSV--Table SinhVienCREATE TABLE SINHVIEN(HOTEN VARCHAR(50),MASV CHAR(7) NOT NULL,NAM INT,KHOA CHAR(10))ALTER TABLE SINHVIENADD CONSTRAINT KC_SINHVIEN PRIMARY KEY (MASV)ALTER TABLE SINHVIENADD CONSTRAINT NAM_RBCHECK (NAM >=1 AND NAM<=5)--Table MonHocCREATE TABLE MONHOC(TENMH VARCHAR(30),MAMH CHAR(8) NOT NULL,TINCHI INT,KHOA CHAR(10))ALTER TABLE MONHOCADD CONSTRAINT KC_MONHOC PRIMARY KEY(MAMH)--Table DieuKienCREATE TABLE DIEUKIEN(MAMH CHAR(8) NOT NULL,MAMH_TRUOC CHAR(8) NOT NULL)ALTER TABLE DIEUKIENADD CONSTRAINT KC_DIEUKIEN PRIMARY KEY(MAMH,MAMH_TRUOC)ALTER TABLE DIEUKIENADD CONSTRAINT KN_DIEUKIEN FOREIGN KEY(MAMH)REFERENCES MONHOC(MAMH)--Table KhoaHocCREATE TABLE KHOAHOC(MAKH INT NOT NULL,MAMH CHAR(8) NOT NULL,HOCKY INT,GIAOVIEN CHAR(10))ALTER TABLE KHOAHOCADD CONSTRAINT KC_KHOAHOC PRIMARY KEY(MAKH)ALTER TABLE KHOAHOCADD CONSTRAINT KN_KHOAHOC FOREIGN KEY(MAMH)REFERENCES MONHOC(MAMH)--Bang KetQuaCREATE TABLE KETQUA(MASV CHAR(7) NOT NULL,MAKH INT NOT NULL,DIEM INT)ALTER TABLE KETQUAADD CONSTRAINT KC_KETQUA PRIMARY KEY(MASV, MAKH)ALTER TABLE KETQUAADD CONSTRAINT KN_KETQUA FOREIGN KEY(MASV)REFERENCES SINHVIEN(MASV)ALTER TABLE KETQUAADD CONSTRAINT KN2_KETQUA FOREIGN KEY(MAKH)REFERENCES KHOAHOC(MAKH)--NhapINSERT SINHVIENVALUES ('VAN PHU TOAN','0733031',2,'CNTT')
Module 2 Nội dung kiến thức thực hành: +Ngôn ngữ thao tác dữ liệu: INSERT, UPDATE, DELETE, SELECT..Bài 1: Mục đích:Thực hiện lệnh INSERT để đưa dữ liệu vào các bảng.Mô tả: SINHVIENHOTENMASVNAMKHOALê An69100781CNTTHồ Thúy Hoa69000232CNTTMONHOCTENMHMAMHTINCHIKHOANhập môn tin họcCOSC13104CNTTToán rời rạcMATH24103TOANCấu trúc dữ liệuCOSC33204CNTTCơ sở dữ liệuCOSC33803CNTTDIEUKIENMaMHMaMH_truocCOSC3380COSC3320COSC3380MATH2410COSC3320COSC1310KHOAHOCMAKHMAMHHOCKYGIAOVIEN85MATH24101Lan92COSC13101Chi102COSC33202Hoa112MATH24101Lan119COSC13101Chi135COSC33801NhiKETQUAMASVMAKHDIEM691007811986910078112669000238510690002392969000231028690002313510Gợi ý:Ví dụ: Thêm 1 record vào table SINHVIENinsert SINHVIENvalues('Lê An',’6910078’,2,'CNTT')Bài 2: Mục đích: Thực hiện lệnh UPDATE, DELETE, SELECTMô tả: 1. Sửa bộ <690023,102,8> thành <690023,102,10>2. Sửa bộ <690023,85,10> thành <690023,85,8>3. Xóa bộ <690023,85135,10>4. Lệnh SELECT:- Thực hiện câu lệnh SELECT đơn giản để xem dữ liệu từ các bảng đã nhập liệu- Viết câu lệnh cho phép xem tên của sinh viên- In ra tên các môn học và số tín chỉ5. In ra tên sinh viênGợi ý:1. UPDATE KETQUASET DIEM=10WHERE MASV=690023 AND MAKH=102 AND DIEM=82. Xem dữ liệu của bảng SINHVIEN: SELECT * FROM SINHVIEN
Module 3Nội dung kiến thức thực hành: +Ngôn ngữ định nghĩa và thao tác dữ liệu: SELECT..Bài 1: Mục đích:Mô tả: Cơ sở dữ liệu dưới đây được sử dụng để quản lý công tác giao hàng trong một công ty kinh doanh. Các bảng trong cơ sở dữ liệu này được biểu diễn trong sơ đồ dưới đây.Trong đó: Ø Bảng NHACUNGCAP lưu trữ dữ liệu về các đối tác cung cấp hàng cho công tyØ Bảng MATHANG lưu trữ các dữ liệu về các mặt hàng hiện có trong công tyØ Bảng LOAIHANG phân loại các mặt hàng hiện cóØ Bảng NHANVIEN lưu trữ thông tin về các nhân viên làm việc trong công tyØ Bảng KHACHANG lưu trữ thông tin các khách hàng của công tyØ Khách hàng đặt hàng thông qua các đơn đặt hàng(DONDATHANG) .Mỗi đơn đặt hàng phải do một nhân viên nào đó lập và do đó phải có quan hệ với bảng NHANVIENØ Thông tin chi tiết của các đơn đặt hàng được lưu trữ trong bảng chi tiết đơn đặt hàng. Bảng này có quan hệ với hai bảng DONDATHANG và MAHANG.1. Sinh viên hãy xây dựng cơ sở dữ liệu trên bằng lệnh định nghĩa dữ liệu (CREATE TABLE) với các ràng buộc khóa chính, khóa ngoại. Lưu ý: sinh viên xem dữ liệu mẫu bên dưới để chọn kiểu dữ liệu cho phù hợp.2. Sinh viên nhập liệu cho các bảng theo dữ liệu sau.Lưu ý: những cột để trống sinh viên tự cho dữ liệu.Table KHAÙCH HAØNGMAÕ KHTEÂN KHTEÂNGIAODÒCHÑÒA CHÆEMAILÑIEÄN THOAIFAXCINOTECÑIEÄN TOAÙN SAØI GOØN43 Yeát kieâu P 6 Q3( )7931752COMECOVAÄT TÖ THIEÁT BÒ GTVT226 Thuaän Kieàu Q11( )8456781FAHASAPHAÙT HAØNH SAÙCH SAØI GOØN12 Thuaän kieàu Q5( )8452792FISCDÒCH VUÏ ÑAÀU TÖ NÖÔÙC NGOAØI31 Tröông Ñònh P6 Q1HUNSANHÖØNG SAÙNG175 Lyù Thöôøng Kieät( )5465487LIXCOBOÄT GIAËT LIX79 Baøn Côø P3 Q5( )8952187SAFICOTHUYÛ SAÛN XUAÁT KHAÅU47 Baûi saäy P1 Q11SJCVAØNG BAÏC ÑAÙ QUYÙ TPHCM350 CMT8 P12 Q3( )8543543TAFACOTHÖÔNG MAÏI TAÁN PHAÙT4 Traàn PhuõP Q5( )8754875THADACOXAÂY DÖÏNG THAØNH ÑAÏT6E An Bình Q5( )5465454TRACODIÑAÀU TÖ PHAÙT TRIEÅN GTVT343 Nhaät Taûo Q10( )5321321TRANACODÒCH VUÏ VAÄN TAÛI Q 3156 Leâ Ñaïi HaønhP7 Q10( )8654635VIETTIENCTY DEÄT MAY VIEÄT TIEÁN24 KhuA – CN Taân Taïo ( )4565670Table NHAÂNVIEÂNMAÕ NVHOÏ NVTEÂN NVNGAØY SINHNGAØYLAØM VIEÄCÑÒA CHÆÑIEÄN THOAÏILCBPHUÏCAÁP1NGUYEÃN LEÄNGA10/12/6410/12/9413Huøng Vöông P4 Q5( )54654652HAØ VÓNHPHAÙT07/12/7902/03/0289 Ñoàng Khôûi Q1( )87674613TRAÀN TUYEÁTOANH27/02/6730/10/9745Leâ Quí Ñoân Q3( )54654654NGUYEÃN KIMNGOÏC25/12/8010/12/07187 Haäu Giang P5Q6( )56546545TRÖÔNG DUYHUØNG10/10/8210/11/0777 Tröông ÑònhQ1( )58715446LÖÔNG BAÙTHAÉNG10/12/6806/03/9892 Leâ ThaùnhToânQ1( )87541657LAÂM SÔNHOAØNG02/03/7810/10/0145 Kyù Con Q1( )82312318NGUYEÃN MINHHOÀNG30/10/6830/10/9822 Laïc Long Quaân Q10( )78451389VÖÔNG NGOÏCLAN10/12/6710/12/97227 Hai Baø Tröng Q1( )778418410NGUYEÃ THÒMAI10/11/6710/11/9712Nguyõeân Chí Thanh Q3( )345136511LEÂ VAÊNHUØNG06/03/5706/03/9056Nguyeãn TraõiQ1( )574578512NGUYEÃN THÒHOA10/10/6610/10/9612Nguyeãn Traõi Q1( )6465465Table DONDATHANGMAÕ HÑMAÕ KHMAÕ NVNGAØY ÑHNGAØY GN HAØNGNGAØY CHUYEÅN HAØNGNÔI GIAO HAØNG10148FISC110/01/0420/02/0410150HUNSAN403/05/0429/06/0410156FISC412/01/0405/09/0410157SAFICO210/01/0420/05/0410158HUNSAN511/02/0405/03/0410159COMECO804/01/0406/07/0410160THADACO1113/01/0430/06/0410162TRANACO725/01/0410/07/0410163TRACODI302/05/0406/07/0410166SJC921/01/0412/09/0410172TAFACO912/08/0417/09/0410175TRANACO903/05/0407/08/0410177COMECO229/01/0405/07/0410183SAFICO201/01/0402/06/0410186TRACODI1115/04/0430/04/0410196SJC128/06/0401/07/0410202COMECO418/05/0422/08/0410207SJC212/05/0410/06/0410208TRACODI810/02/0417/05/0410210SJC125/05/0401/09/0410214HUNSAN611/07/0412/08/0410221TRACODI1102/08/0430/09/0410223SJC801/02/0430/01/0410224SAFICO702/05/0428/05/0410225COMECO210/05/0420/05/0410226FAHASA311/09/0430/09/0410227SAFICO810/01/0412/02/0410228HUNSAN205/02/0412/03/0410230HUNSAN219/08/0422/09/0410238LIXCO702/08/0430/08/0410252TRACODI315/02/0411/03/04Table LOAIHANGMAÕLOAÏI HAØNGTEÂNLOAÏI HAØNGBKBaùnh KeïoTPThöïc phaåmTCTraùi caâyAQAùo quaàn
Bạn đang đọc truyện trên: LoveTruyen.Me