Bài tập Cơ sở dữ liệu - Phạm Hùng Phú

Chương 1

MÔ HÌNH THỰC THỂ - LIÊN HỆ

A. TÓM TẮT LÝ THUYẾT

1.1. Các khái niệm và kiến thức cơ bản

1.1.1. Khái niệm cơ sở dữ liệu

Cơ sở dữ liệu là tập hợp các thông tin có quan hệ với nhau được lưu trữ trong

máy tính theo một quy định nhất định nhằm phục vụ cho một mục đích nào đó.

1.1.2. Hệ cơ sở dữ liệu

Hệ cơ sở dữ liệu là một hệ thống gồm bốn thành phần:

- Cơ sở dữ liệu hợp nhất;

- Những người sử dụng;

- Hệ quản trị cơ sở dữ liệu;

- Các thiết bị nhớ ngoài được sử dụng để lưu trữ cơ sở dữ liệu.

1.1.3. Các mức trừu tượng trong cơ sở dữ liệu

1) Mức cơ sở dữ liệu vật lý

Là tập hợp các tệp dữ liệu, các chỉ mục hoặc những cấu trúc lưu trữ khác như

heap, bảng băm (hash table), dùng để truy xuất dữ liệu; nó mô tả dữ liệu được

lưu trữ một cách thực sự như thế nào trên các thiết bị nhớ ngoài.

2) Mức cơ sở dữ liệu khái niệm

Là các mô tả những dữ liệu nào được lưu trữ trong cơ sở dữ liệu và các mối

quan hệ nào tồn tại giữa các dữ liệu này.

3) Mức cơ sở dữ liệu khung nhìn

Là cách nhìn của người sử dụng đối với cơ sở dữ liệu, là một đối tượng

tưởng tượng được xây dựng từ cơ sở dữ liệu khái niệm nhưng thực sự không tồn tại

trong cơ sở dữ liệu đó.

1.1.4. Lược đồ (Scheme) và Thể hiện (Instance)

1) Lược đồ (Schem ) là bộ khung hay cấu trúc của cơ sở dữ liệu

2) Thể hiện (Instance) là dữ liệu hiện có trong cơ sở dữ liệu

1.2. Mô hình thực thể liên hệ (Entity- Relationship model)

Là mô hình cho phép sử dụng các tên để mô tả dữ liệu - các tập thực thể thông

qua các thuộc tính và mối liên hệ giữa các tập thực thể. Nó được dùng làm công cụ

thiết kế lược đồ cơ sở dữ liệu khái niệm.

1.2.1 Thực thể

Thực thể là một sự vật tồn tại và phân biệt được, nghĩa là có thể phân biệt

được thực thể này với thực thể khác.

1.2.2. Tập thực thể

Một nhóm bao gồm các thực thể “tương tự” tạo ra một tập thực thể. Mỗi tập

thực thể được đặt bởi một tên

pdf320 trang | Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 363 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài tập Cơ sở dữ liệu - Phạm Hùng Phú, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CB ta có R2(ABC). - Ứng với các phụ thuộc hàm CD; CE ta có R3(CDE) - Ứng với các phụ thuộc hàm còn lại ta có R4(ABF). - Kết quả ta đƣợc phép tách  = {R1(G), R2(ABC), R3(CDE), R4(ABF)} Bƣớc 4: Lấy  = {K} = {R1(G), R2(ABC), R3(CDE), R4(ABF)}{K(CG)} Ta có R1(G)K(CG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = {K(CG), R2(ABC), R3(CDE), R4(ABF)}. 4.4.6. Hãy tách SĐQH W = thành các SĐQH dạng chuẩn 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm. Trong đó: 1) R = (ABCDEFG) F = {ABC; CA; ADE; EB; EF} 2) R = (ABCDEFG) F = {ABC; DB; AB; CABD} Giải: 1) R = (ABCDEFG) F = {ABC; CA; ADE; EB; EF}. Bƣớc 1: Tìm phủ tối thiểu của F. - Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có 1 thuộc tính. F = {ABC; CA; ADE; EB; EF} - Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F Bài tập cơ sở dữ liệu Phạm Hùng Phú 223 + CA; EB; EF có vế trái chỉ chứa 1 thuộc tính nên các vế trái của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét ABC và ADE. + Xét ABC  Với AVT = AB:  (VT - A)+ = B+ = B  C(VT - A)+ nên A không thừa.  Với BVT = AB:  (VT - B)+ = A+ = A  C(VT - B)+ nên B không thừa. + Xét ADE  Với AVT = AD:  (VT - A)+ = D+ = D  E(VT - A)+ nên A không thừa.  Với DVT = AD:  (VT - D)+ = A+ = A  E(VT - D)+ nên D không thừa. + Sau khi loại bỏ các thuộc tính thừa ta có: + F = {ABC; CA; ADE; EB; EF} - Loại các phụ thuộc hàm thừa trong F. + Với ABCF ta có:  G = {CA; ADE; EB; EF}   GAB)( = AB  CAB nên ABCF không thừa.  Với CAF ta có:  G = {ABC; ADE; EB; EF}   GC = C  AC nên CAF không thừa.  Với ADEF ta có:  G = {ABC; CA; EB; EF}   GAD)( = AD Bài tập cơ sở dữ liệu 224 Phạm Hùng Phú  EAD nên ADEF không thừa. + Tƣơng tự EB; EF không thừa Vậy F = {ABC; CA; ADE; EB; EF} – tối thiểu Bƣớc 2: Tìm khóa K của R. - K = DG (D chỉ có ở vế trái; G không có trong bất cứ phụ thuộc hàm nào của F) - Tính K+: K + = (DG) + = DG U nên R có thể có nhiều khóa  G = ABCE  K = ABCDEG  Loại bỏ các thuộc tính thừa trong G  Với AG, ta có (K - A) + = (BCDEG) + = ABCDEFG = U nên K = BCDEG  Với BG, ta có (K - B) + = (CDEG) + = ABCDEFG = U nên K = CDEG  Với CG, ta có (K - C) + = (DEG) + = BDEFG  U nên K = CDEG  Với EG, ta có (K - C) + = (CDG) + = ABCDEFG = U nên K = CDG - K = CDG là một khóa của R Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm. - Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G). - Ứng với các phụ thuộc hàm ABC; CA ta có R2(ABC). - Ứng với các phụ thuộc hàm còn lại ta có R3(ADE), R4(BE), R5(EF) - Kết quả ta đƣợc phép tách  = {R1(G), R2(ABC), R3(ADE), R4(BE), R5(EF)} Bƣớc 4: Lấy  =  {K} = {R1(G), R2(ABC), R3(ADE), R4(BE), R5(EF)}{K(CDG)} Ta có R1(G)K(CDG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = {K(CDG), R2(ABC), R3(ADE), R4(BE), R5(EF)} 2) R = (ABCDEFG) F = {ABC; DB; AB; CABD} Bƣớc 1: Tìm phủ tối thiểu của F (xem phần 2 bài 4.37) ta có Bài tập cơ sở dữ liệu Phạm Hùng Phú 225 F = {AC; DB; CA; CD} – phủ tối thiểu Bƣớc 2: Tìm khóa K của R. - K = EFG (E, F, G không nằm trong bất cứ phụ thuộc hàm nào của F) - Tính K+ = (EFG)+ = EFG U nên R có thể có nhiều khóa + G = ACD + K = ACDEFG + Loại bỏ các thuộc tính thừa trong G  Với AG, ta có (K - A)+ = (CDEFG)+ = ABCDEFG = U nên K = CDEFG  Với CG, ta có (K - C)+ = (DEFG)+ = BDEFG  U nên K = CDEFG  Với DG, ta có (K - D)+ = (CEFG)+ = ABCDEFG = U nên K = CEFG - K = CEFG là một khóa của R Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm. - Vì E, F, G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(EFG). - Ứng với các phụ thuộc hàm CA; CD ta có R2(ACD). - Ứng với các phụ thuộc hàm còn lại ta có R3(AC), R4(BD). - Kết quả ta đƣợc phép tách  = {R1(EFG), R2(ACD), R3(AC), R4(BD)} Bƣớc 4: Lấy  =   {K} = {R1(EFG), R2(ACD), R3(AC), R4(BD)} {K(CEFG)} Ta có R1(EFG)K(CEFG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = {R1(CEFG), R2(ACD), R3(AC), R4(BD)} 4.4.7. Hãy tách SĐQH W = trong đó: R = (ABCDEFGH); F = {ABC; ACD; CA; DC; DE; DF; FH} thành các SĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin. Giải: Bƣớc 1: Tìm phủ tối thiểu của F. Bài tập cơ sở dữ liệu 226 Phạm Hùng Phú - Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có 1 thuộc tính. F = {ABC; ACD; CA; DC; DE; DF; FH} - Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F. + CA; DC; DE; DF; FH có vế trái chỉ chứa 1 thuộc tính nên các vế trái của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét ABC và ACD. + Xét ABC  Với AVT = AB:  (VT - A)+ = B+ = B  C(VT - A)+ nên A không thừa.  Với BVT = AB:  (VT - B)+ = A+ = A  C(VT - B)+ nên B không thừa. + Xét ACD  Với AVT = AC:  (VT - A)+ = C+ = ACDEFH  D (VT - A)+ nên A thừa VT = C  F = {ABC; CD; CA; DC; DE; DF; FH} - Loại các phụ thuộc hàm thừa trong F. + Với ABCF ta có:  G = {CD; CA; DC; DE; DF; FH}   GAB)( = AB  CAB nên ABCF không thừa. + Với CDF ta có:  G = {ABC; CA; DC; DE; DF; FH}   GC = AC  DAC nên CDF không thừa. + Với CAF ta có:  G = {ABC; CD; DC; DE; DF; FH} Bài tập cơ sở dữ liệu Phạm Hùng Phú 227   GC = CDEFH  ACDEFH nên CAF không thừa. + Với DCF ta có:  G = {ABC; CD; CA; DE; DF; FH}   GD = DEFH  CDEFH nên DCF không thừa. + Với DEF ta có:  G = {ABC; CD; CA; DC; DF; FH}   GD = ACDFH  EACDFH nên DEF không thừa. + Tƣơng tự ta có DF; FH không thừa Vậy F = {ABC; CD; CA; DC; DE; DF; FH} là phủ tối thiểu Bƣớc 2: Tìm khóa K của R. - K = BG (B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào của F) - Tính K+ = (BG)+ = BG U nên R có thể có nhiều khóa + G = ACDF + K = ABCDFG + Loại bỏ các thuộc tính thừa trong G  Với AG, ta có (K - A)+ = (BCDFG)+ = ABCDEFHG = U nên K = BCDFG  Với CG, ta có (K - C)+ = (BDFG)+ = ABCDEFHG = U nên K = BDFG  Với DG, ta có (K - D)+ = (BFG)+ = BFHG  U nên K = BDFG  Với FG, ta có (K - F)+ = (BDG)+ = ABCDEFHG = U nên K = BDG - K = BDG là một khóa của R Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm. - Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G). - Ứng với các phụ thuộc hàm ABC; CA ta có R2(ABC). - Ứng với các phụ thuộc hàm DC; DE; DF ta có R3(CDEF). - Ứng với các phụ thuộc hàm còn lại ta có R4(CD), R5(FH). Bài tập cơ sở dữ liệu 228 Phạm Hùng Phú - Kết quả ta đƣợc phép tách  = {R1(G), R2(ABC), R3(CDEF), R4(CD), R5(FH)} Bƣớc 4: Lấy  = {K} = {R1(G), R2(ABC), R3(CDEF), R4(CD), R5(FH)} {K(BDG)} Ta có R1(G)K(BDG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = {K(BDG), R2(ABC), R3(CDEF), R4(CD), R5(FH)} 4.4.8. Cho SĐQH W = trong đó: R = (ABCDE); F = {ABC; CD; DE}. Hãy tách R thành các SĐQH dạng chuẩn 3NF: - Bảo toàn phụ thuộc hàm. - Bảo toàn phụ thuộc hàm và có kết nối không mất thông tin. Giải: - Tách R về dạng 3NF bảo toàn phụ thuộc hàm. + Dễ dàng kiểm tra đƣợc F - tối thiểu + Áp dụng giải thuật tách R về 3NF bảo toàn phụ thuộc hàm ta có: Với mỗi phụ thuộc hàm ta tách thành một lƣợc đồ tƣơng ứng R1(ABC); R2(CD); R3(DE) Kết quả thu đƣợc phép tách về 3NF, bảo toàn phụ thuộc hàm :  = { R1(ABC); R2(CD); R3(DE)} - Tách R về dạng 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin. + Tìm khóa K của R. K = AB (A, B chỉ có ở vế trái) Tính K + = (AB) + = ABCDE = U Vậy K = AB là khóa duy nhất của R. +  = {K} = {R1(ABC); R2(CD); R3(DE)} {K(AB)} Ta có K(AB)R1(ABC) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = {R1(ABC); R2(CD); R3(DE)} Bài tập cơ sở dữ liệu Phạm Hùng Phú 229 4.4.9. Cho SĐQH W = . Trong đó: R = (ABCDEFGH); F = {ABC; BD; CB; DEFG}. Hãy tách R thành các SĐQH dạng chuẩn 3NF: 1) Bảo toàn phụ thuộc hàm; 2) Bảo toàn phụ thuộc hàm và có kết nối không mất thông tin. Giải: 1) Tách R thành các SĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm - Tìm phủ tối thiểu của F: Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính. F = {ABC; BD; CB; DEF; DEG} Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F. + BD; CB có vế trái chỉ chứa 1 thuộc tính nên các vế trái của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét ABC và DEF; DEG. + Xét ABC  Với AVT = AB:  (VT - A)+ = B+ = BD  C(VT - A)+ nên A không thừa.  Với BVT = AB:  (VT - B)+ = A+ = A  C(VT - B)+ nên B không thừa. + Xét DEF  Với DVT = DE:  (VT - D)+ = E+ = E  F(VT - D)+ nên D không thừa.  Với EVT = DE:  (VT - E)+ = D+ = D  F(VT - E)+ nên E không thừa. + Xét DEG Bài tập cơ sở dữ liệu 230 Phạm Hùng Phú  Với DVT = DE:  (VT - D)+ = E+ = E  G(VT - D)+ nên D không thừa.  Với EVT = DE:  (VT - E)+ = D+ = D  G(VT - E)+ nên G không thừa.  F = {ABC; BD; CB; DEF; DEG} Bƣớc 3: Loại các phụ thuộc hàm thừa trong F + Với ABCF ta có:  G = {BD; CB; DEF; DEG}   GAB)( = ABD  CABD nên ABCF không thừa. + Tƣơng tự ta có BD; CB; DEF; DEG không thừa. Bƣớc 4: Vậy phủ tối thiểu F = {ABC; BD; CB; DEF; DEG} - Tách R thành 3NF bảo toàn phụ thuộc hàm + Vì H không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(H) + Ứng với các phụ thuộc hàm ABC; CB ta có R2(ABC) + Ứng với các phụ thuộc hàm DEF; DEG ta có R3(DEFG) + Ứng với phụ thuộc hàm còn lại ta có R4(BD) + Kết quả thu đƣợc phép tách R thành 3NF bảo toàn phụ thuộc hàm là:  = {R1(H); R2(ABC); R3(DEFG); R4(BD)} 2) Tách R thành 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin - Tìm khóa K của R + K = AEH (A, E chỉ có ở vế trái; H không nằm trong bất cứ thuộc tính nào của F) + Tính K + = (AEH) + = AEH  U nên R có thể có nhiều khóa  G = BCD  K = ABCDEH  Loại bỏ các thuộc tính thừa trong G.  Với BG ta có (K - B)+ = (ACDEH)+ = ABCDEFGH = U nên B thừa, K = ACDEH. Bài tập cơ sở dữ liệu Phạm Hùng Phú 231  Với CG ta có (K - C)+ = (ADEH)+ = ADEFGH U nên C không thừa, K = ACDEH.  Với DG ta có (K - D)+ = (ACEH)+ = ABCDEFGH = U nên D thừa, K = ACEH.  Vậy K = ACEH là một khóa của R. -  = {K} = {R1(H); R2(ABC); R3(DEFG); R4(BD)} {K(ACEH)} Ta có R1(H) K(ACEH) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = { K(ACEH); R2(ABC); R3(DEFG); R4(BD)} 4.4.10. Cho LĐQH: QLCH = (Makh, Tenkh, Diachi, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) Quy ƣớc: mỗi khách hàng chỉ dùng một số điện thoại để liên lạc với cửa hàng 1) Tìm tập phụ thuộc hàm của LĐQH. 2) Tìm khóa của LĐQH 3) LĐQH QLCH có ở dạng chuẩn 3NF, BCNF không? Tại sao? 4) Tách QLCH thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông tin. 5) Tách QLCH thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm 6) Tách QLCH thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm. Giải: 1) Tìm tập phụ thuộc hàm của LĐQH. F = {Makh Tenkh, Diachi, Gioitinh, Dienthoai; Mamh Tenmh, mau, Dvtinh} (chú ý: Ta bỏ qua các phụ thuộc hàm tầm thƣờng) 2) Tìm khóa của LĐQH K = {Makh, Mamh, muaBan, NgayMB, Soluong, Dongia} (Makh, Mamh chỉ có ở vế trái và Soluong, Dongia, MuaBan, NgayMB không liên quan đến bất cứ phụ thuộc hàm nào trong F) Bài tập cơ sở dữ liệu 232 Phạm Hùng Phú K + = (Makh, Tenkh, Diachi, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) = U nên K = {Makh, Mamh, muaBan, NgayMB, Soluong, Dongia} là khóa duy nhất của quan hệ QLCH. 3) LĐQH QLCH có ở dạng chuẩn 3NF, BCNF không? Tại sao? F = {Makh Tenkh, Diachi, Gioitinh, Dienthoai; Mamh Tenmh, mau, Dvtinh} = {MakhTenkh; MakhDiachi; MakhGioitinh; MakhDienthoai; MamhTenmh; Mamhmau; MamhDvtinh } - LĐQH QLCH không ở dạng chuẩn 3NF vì có phụ thuộc hàm Mamh Tenmh, 3NF vi phạm 3NF do Tenmh chỉ nằm ở vế phải nên nó là thuộc tính không khóa; Tenmh {Makh} và {Makh}+ ={Makh, Tenkh, Diachi, Gioitinh, Dienthoai}  U. - LĐQH QLCH không ở dạng chuẩn BCNF vì có phụ thuộc hàm Mamh Tenmh vi phạm BCNF do Tenmh {Makh} và {Makh}+ ={Makh, Tenkh, Diachi, Gioitinh, Dienthoai}  U. 4) Tách QLCH thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông tin. - Trong F có Makh Tenkh vi phạm BCNF nên tách QLCH thành R1(Makh,Tenkh) với F1 = { Makh Tenkh} (Đã ở dạng chuẩn BCNF) và R2(Makh, Diachi, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với F2 ={MakhDiachi; MakhGioitinh; MakhDienthoai; MamhTenmh; Mamhmau; MamhDvtinh } - Trong F2 có Makh  Diachi vi phạm BCNF nên tách R2 thành R21(Makh, Diachi) với F1 = { Makh  Diachi} (Đã ở dạng chuẩn BCNF) và R22(Makh, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với F22 ={MakhGioitinh; MakhDienthoai; MamhTenmh; Mamhmau; MamhDvtinh } - Trong F22 có Makh  Gioitinh vi phạm BCNF nên tách R22 thành R221(Makh, Gioitinh) với F221 = { Makh  Gioitinh } (Đã ở dạng chuẩn BCNF) và Bài tập cơ sở dữ liệu Phạm Hùng Phú 233 R222(Makh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với F222 = { MakhDienthoai; MamhTenmh; Mamhmau; MamhDvtinh } - Trong F222 có Makh  Dienthoai vi phạm BCNF nên tách R222 thành R2221(Makh, Dienthoai) với F2221 = { Makh  Dienthoai } (Đã ở dạng chuẩn BCNF) và R2222(Makh, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với F2222 = { MamhTenmh; Mamhmau; MamhDvtinh } - Trong F2222 có MamhTenmh vi phạm BCNF nên tách R2222 thành R22221(Mamh, Tenmh) với F2221 = { MamhTenmh} (Đã ở dạng chuẩn BCNF) và R22222(Makh, Mamh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với F22222 = { Mamhmau; MamhDvtinh } - Trong F22222 có Mamh mau vi phạm BCNF nên tách R22222 thành R22221(Mamh, mau) với F22221 = { Mamh mau } (Đã ở dạng chuẩn BCNF) và R222222(Makh, Mamh, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với F222222 = { MamhDvtinh } - Trong F222222 có Mamh Dvtinh vi phạm BCNF nên tách R222222 thành R2222221(Mamh, Dvtinh) với F222221 = {Mamh Dvtinh} (Đã ở dạng chuẩn BCNF) và R2222222(Makh, Mamh, Soluong, Dongia, MuaBan, NgayMB) với F22222 =  (Đã ở dạng chuẩn BCNF) - Các lƣợc đồ quan hệ R1(Makh,Tenkh), R21(Makh, Diachi), R221(Makh, Gioitinh), R2221(Makh, Dienthoai) có chung khóa Makh nên gộp lại thành Khhang(Makh,Tenkh, Diachi, Gioitinh, Dienthoai) ứng với tập phụ thuộc hàm F1 = {MakhTenkh; MakhDiachi; MakhGioitinh; MakhDienthoai} - Các lƣợc đồ quan hệ R22221(Mamh, Tenmh), R22221(Mamh, mau), R2222221(Mamh, Dvtinh) có chung khóa Mamh nên gộp lại thành Mathang(Mamh, Tenmh, mau, Dvtinh) ứng với tập phụ thuộc hàm F2 = {Mamh Tenmh, mau, Dvtinh} - Đặt lại tên cho R2222222(Makh, Mamh, Soluong, Dongia, MuaBan, NgayMB) là MuaBan(Makh, Mamh, Soluong, Dongia, MuaBan, NgayMB) - Phép tách cuối cùng đƣợc: Bài tập cơ sở dữ liệu 234 Phạm Hùng Phú  = {Khhang, Mathang, MuaBan} 5) Tách QLCH thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm - Tìm phủ tối thiểu của F. Áp dụng giải thuật tìm phủ tối thiểu ta có: F = {Makh Tenkh, Makh Diachi, Makh Gioitinh, Makh Dienthoai; Mamh Tenmh, Mamh mau, MamhDvtinh} là phủ tối thiểu - Tách QLCH thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm + Ứng với các thuộc tính không liên quan đến bất cứ phụ thuộc hàm nào trong F ta tách ra thành một lƣợc đồ MuaBan(MuaBan, NgayMB, Soluong, Dongia) + Ứng với các phụ thuộc hàm Makh Tenkh; Makh Diachi; Makh Gioitinh; MakhDienthoai ta tách thành KHhang(Makh, Tenkh, Diachi, Gioitinh, Dienthoai) và với các phụ thuộc hàm Mamh Tenmh, Mamh mau, MamhDvtinh ta tách thành Mathang(Makh, Tenmh, mau, Dvtinh). Kết quả thu đƣợc  = {KHhang, Mathang, MuaBan} 6) Tách QLCH thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.  = {K} và chú ý rằng MuaBan  K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = {K, R2, R3} Đặt lại tên cho K là MuaBan, ta có Kết quả thu đƣợc  = {KHhang, Mathang, MuaBan} 4.4.11. Cho LĐQH: QLDiem = (MaSV, TenSV, Diachi, Gioitinh, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2, Diemthi). 1) Tìm tập phụ thuộc hàm của LĐQH 2) Tìm khóa của LĐQH 3) LĐQH QLĐiem có ở dạng chuẩn 3NF, BCNF không? Tại sao? 4) Tách QLĐiem thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông tin. 5) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm. Bài tập cơ sở dữ liệu Phạm Hùng Phú 235 6) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm. Giải: 1) Tìm tập phụ thuộc hàm của LĐQH F = {MaSV TenSV, Diachi, Gioitinh, Lop; MaMon TenMon, SoHT; MaSV, MaMon DiemKT1, DiemKT2, Diemthi } 2) Tìm khóa của LĐQH - Áp dụng giải thuật tìm khoá cải tiến ta tìm đƣợc khoá K = {MaSV, MaMon}. 3) LĐQH QLĐiem Chƣa ở dạng chuẩn 3NF, BCNF - F = { MaSV TenSV, Diachi, Gioitinh, Lop; MaMon TenMon, SoHT; MaSV, MaMon DiemKT1, DiemKT2, Diemthi} = {MaSV TenSV; MaSVDiachi; MaSVGioitinh; MaSVLop; MaMon TenMon; MaMonSoHT; MaSV, MaMon DiemKT1; MaSV, MaMon DiemKT2; MaSV, MaMon Diemthi } - MaSV TenSV vi phạm 3NF vì TenSV là thuộc tính không khóa (TenSV chỉ nằm ở vế phải); TenSV {MaSV} và {MaSV}+= {MaSV, TenSV, Diachi, Gioitinh, Lop}  U. - MaSV TenSV vi phạm BCNF vì TenSV {MaSV} và {MaSV}+= {MaSV, TenSV, Diachi, Gioitinh, Lop}  U. 4) Tách QLĐiem thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông tin. - Trong F có MaSV TenSV vi phạm BCNF nên tách R thành R1(MaSV, TenSV) với F1 = {MaSV TenSV} (đã ở dạng chuẩn BCNF) và R2(MaSV, Diachi, Gioitinh, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2, Diemthi) với F2 = {MaSVDiachi; MaSVGioitinh; MaSVLop; MaMon TenMon; MaMonSoHT; MaSV, MaMon DiemKT1; MaSV, MaMon DiemKT2; MaSV, MaMon Diemthi } - Trong F2 có MaSV Diachi vi phạm BCNF nên tách R2 thành R21(MaSV, Diachi) với F21 = {MaSV Diachi } (đã ở dạng chuẩn BCNF) và Bài tập cơ sở dữ liệu 236 Phạm Hùng Phú R22(MaSV, Gioitinh, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2, Diemthi) với F22 = {MaSVGioitinh, MaSVLop; MaMon TenMon, MaMonSoHT; MaSV, MaMon DiemKT1, MaSV, MaMon DiemKT2, MaSV, MaMon Diemthi } - Trong F22 có MaSV Gioitinh vi phạm BCNF nên tách R22 thành R221(MaSV, Gioitinh) với F221 = {MaSV Gioitinh } (đã ở dạng chuẩn BCNF) và R222(MaSV, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2, Diemthi) với F222 = {MaSVLop; MaMon TenMon; MaMonSoHT; MaSV, MaMon DiemKT1; MaSV, MaMon DiemKT2; MaSV, MaMon Diemthi} Cứ tiếp tục nhƣ thế ta đƣợc các lƣợc đồ quan hệ: - R2221(MaSV, Lop) ứng với {MaSVLop} (ở dạng BCNF) - R22221(MaMon, TenMon) ứng với { MaMon TenMon} (ở dạng BCNF) - R222221(MaMon, Soht) ứng với { MaMon Soht} (ở dạng BCNF) - R2222221(MaSV, MaMon, DiemKT1) ứng với { MaSV, MaMon  DiemKT1} (ở dạng BCNF) - R22222221(MaSV, MaMon, DiemKT2) ứng với { MaSV, MaMon  DiemKT2} (ở dạng BCNF) - R22222222(MaSV, MaMon, DiemThi) ứng với { MaSV, MaMon  DiemThi} (ở dạng BCNF) - Các lƣợc đồ R1(MaSV, TenSV), R21(MaSV, Diachi), R221(MaSV, Gioitinh), R2221(MaSV, Lop) có chung khóa MaSV nên gộp lại thành SV(MaSV, TenSV, Diachi, Gioitinh, Lop) - Các lƣợc đồ R22221(MaMon, TenMon), R222221(MaMon, Soht) có chung khóa MaMon nên gộp lại thành MonHoc(MaMon, TenMon, Soht) - Các lƣợc đồ R2222221(MaSV, MaMon, DiemKT1), R22222221(MaSV, MaMon, DiemKT2), R22222222(MaSV, MaMon, DiemThi) có chung khóa MaSV, MaMon nên gộp lại thành Diem(MaMon, TenMon, DiemKT1, DiemKT2, DiemThi) Cuối cùng ta thu đƣợc phép tách  = {SV, Monhoc, Diem} 5) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm. - Áp dụng giải thuật tìm phủ tối thiểu, ta có Bài tập cơ sở dữ liệu Phạm Hùng Phú 237 F = {MaSV TenSV, MaSVDiachi, MaSVGioitinh, MaSVLop; MaMon TenMon, MaMonSoHT; MaSV, MaMon DiemKT1, MaSV, MaMon DiemKT2, MaSV, MaMon Diemthi} – tối thiểu. - Áp dụng giải thuật tách lƣợc đồ quan hệ về 3NF bảo toàn phụ thuộc hàm ta đƣợc tập các lƣợc đồ quan hệ: + SV(MaSV, TenSV, Diachi, Gioitinh, Lop) ứng với tập phụ thuộc hàm F1= {MaSV TenSV; MaSVDiachi; MaSVGioitinh; MaSVLop} + MonHoc(MaMon, TenMon, Soht) ứng với tập phụ thuộc hàm F2 = { MaMon TenMon; MaMonSoHT } + Diem(MaMon, TenMon, DiemKT1, DiemKT2, DiemThi) ứng với tập phụ thuộc hàm F3 = { MaSV, MaMon DiemKT1; MaSV, MaMon DiemKT2; MaSV, MaMon Diemthi}. 6) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.  = {K} và chú ý là K  Diem nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là  = {SV, Monhoc, Diem} trong đó: SV(MaSV, TenSV, Diachi, Gioitinh, Lop), Monhoc(MaMon, TenMon, SoHT) và Diem(MaSV, MaMon, DiemKT1, DiemKT2, Diemthi) có MaSV, Mamon là khóa 4.4.12. Cho SĐQH W = với: R = (A B C D E F); F = {ABC , BD; DE} – tối thiểu. 1) Tìm khóa của R. 2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm. 3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng BCNF có kết nối không mất thông tin. Giải: Bài tập cơ sở dữ liệu 238 Phạm Hùng Phú 1) Tìm khóa của R. - K = ABF (A, B chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào của F) - Tính K+ = (ABF)+ = ABCDEF = U - Vậy K = ABF là khóa duy nhất của R 2) - Kiểm tra xem R đã ở 3NF chƣa? + E - thuộc tính không khóa vì E chỉ nằm ở vế phải của các phụ thuộc hàm trong F + E  {D} + D + = DE  U Do đó DE vi phạm 3NF nên R chƣa ở dạng chuẩn 3NF - Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm. Bƣớc 1: Ta có F = {ABC, BD; DE} – tối thiểu Bƣớc 2: Ta có khoá của R là K= {ABF} (Theo phần 1 ta có K = ABF là khoá duy nhất của R) Bƣớc 3: Tách R về dạng 3NF bảo toàn phụ thuộc hàm Áp dụng giải thuật tách LĐQH về dạng 3NF bảo toàn phụ thuộc hàm, ta có + Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F) + Ứng với các phụ thuộc hàm còn lại ta tách thành:  R2(ABC) ứng với ABC;  R3(BD) ứng với BD;  R4(DE) ứng với BD. + Kết quả thu đƣợc  = { R1(F), R2(ABC); R3(BD); R4(DE)} Bƣớc 4: Lấy  = {K} = { R1(F), R2(ABC); R3(BD); R4(DE)} {K(ABF)} Ta có R1(F) K(ABF) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin là:  = { K(ABF), R2(ABC); R3(BD); R4(DE)} 3) - Kiểm tra xem R đã ở dạng chuẩn BCNF chƣa? Ta có + ABCF và C{AB} + (AB) + = ABCDE  U nên ABC vi phạm BCNF Bài tập cơ sở dữ liệu Phạm Hùng Phú 239 Vì thế R không ở dạng chuẩn BCNF. - Tách R về dạng BCNF có kết nối không mất thông tin: - Kết quả thu đƣợc  = {R1, R21, R221, R222}. Vì R21, R221 có chung khóa là B nên có thể gộp thành R20(BDE) với F20 = {BD; BE}. - Phép tách cuối cùng đƣợc  = {R1, R20, R222} Cách khác: - Trong F có phụ thuộc hàm DE vi phạm BCNF (E {D}; D+= DE U) nên tách R thành R1(DE) ứng với F1 = {DE} (đã ở dạng BCNF) và R2(ABCDF) ứng với F2 = {ABC, BD}. - Trong F2 có phụ thuộc hàm BD vi phạm BCNF (D {B}; B + = BD U (=ABCDF)) nên tách R2 thành R21(BD) ứng với F21 = {BD} (đã ở dạng BCNF) và R22(ABCF) ứng với F22 = {ABC}. - Trong F22 có phụ thuộc hàm ABC vi phạm BCNF (C {AB}; (AB) + = ABC U (=ABCF)) nên tách R22 thành R221(ABC) ứng với F221={ABC} (đã ở dạng BCNF) và R222(ABF) ứng với F22 =  (đã ở dạng BCNF) Ta có kết quả  = { R1(DE), R21(BD), R221(ABC) , R222(ABF)} R(ABCDEF) F = {ABC, BD; DE} R1(ABC) F1 = {ABC} R2(ABDEF) F2 = { BD; DE } R21(BD) F21 = {BD} R22(ABEF) F22 = {BE} R221(BE) F221 = {BE} R222(ABF) F221 = Ø Bài tập cơ sở dữ liệu 240 Phạm Hùng Phú 4.4.13. Cho SĐQH W= với: R = (ABCDEF); F = {ABC; CA; DE} – tối thiểu. 1) Tìm khóa của R. 2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm. 3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng BCNF có kết nối không mất thông tin. Giải: 1) Tìm khóa của R - K = BDF (B, D chỉ có

Các file đính kèm theo tài liệu này:

  • pdfbai_tap_co_so_du_lieu_pham_hung_phu.pdf