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
320 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 363 | Lượt tải: 0
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
CB ta có R2(ABC).
- Ứng với các phụ thuộc hàm CD; CE 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 = {ABC; CA; ADE; EB; EF}
2) R = (ABCDEFG)
F = {ABC; DB; AB; CABD}
Giải:
1) R = (ABCDEFG)
F = {ABC; CA; ADE; EB; EF}.
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 = {ABC; CA; ADE; EB; EF}
- 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
+ CA; EB; EF 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 ABC và ADE.
+ Xét ABC
Với AVT = AB:
(VT - A)+ = B+ = B
C(VT - A)+ nên A không thừa.
Với BVT = AB:
(VT - B)+ = A+ = A
C(VT - B)+ nên B không thừa.
+ Xét ADE
Với AVT = AD:
(VT - A)+ = D+ = D
E(VT - A)+ nên A không thừa.
Với DVT = 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 = {ABC; CA; ADE; EB; EF}
- Loại các phụ thuộc hàm thừa trong F.
+ Với ABCF ta có:
G = {CA; ADE; EB; EF}
GAB)( = AB
CAB nên ABCF không thừa.
Với CAF ta có:
G = {ABC; ADE; EB; EF}
GC = C
AC nên CAF không thừa.
Với ADEF ta có:
G = {ABC; CA; EB; EF}
GAD)( = AD
Bài tập cơ sở dữ liệu
224 Phạm Hùng Phú
EAD nên ADEF không thừa.
+ Tƣơng tự EB; EF không thừa
Vậy F = {ABC; CA; ADE; EB; EF} – 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 AG, ta có (K - A)
+
= (BCDEG)
+
= ABCDEFG = U nên
K = BCDEG
Với BG, ta có (K - B)
+
= (CDEG)
+
= ABCDEFG = U nên
K = CDEG
Với CG, ta có (K - C)
+
= (DEG)
+
= BDEFG U nên K = CDEG
Với EG, 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 ABC; CA 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 = {ABC; DB; AB; CABD}
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 = {AC; DB; CA; CD} – 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 AG, ta có (K - A)+ = (CDEFG)+ = ABCDEFG = U nên K =
CDEFG
Với CG, ta có (K - C)+ = (DEFG)+ = BDEFG U nên K = CDEFG
Với DG, 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 CA; CD 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 = {ABC; ACD; CA; DC; DE; DF; FH}
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 = {ABC; ACD; CA; DC; DE; DF; FH}
- Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ CA; DC; DE; DF; FH 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
ABC và ACD.
+ Xét ABC
Với AVT = AB:
(VT - A)+ = B+ = B
C(VT - A)+ nên A không thừa.
Với BVT = AB:
(VT - B)+ = A+ = A
C(VT - B)+ nên B không thừa.
+ Xét ACD
Với AVT = AC:
(VT - A)+ = C+ = ACDEFH
D (VT - A)+ nên A thừa VT = C
F = {ABC; CD; CA; DC; DE; DF; FH}
- Loại các phụ thuộc hàm thừa trong F.
+ Với ABCF ta có:
G = {CD; CA; DC; DE; DF; FH}
GAB)( = AB
CAB nên ABCF không thừa.
+ Với CDF ta có:
G = {ABC; CA; DC; DE; DF; FH}
GC = AC
DAC nên CDF không thừa.
+ Với CAF ta có:
G = {ABC; CD; DC; DE; DF; FH}
Bài tập cơ sở dữ liệu
Phạm Hùng Phú 227
GC = CDEFH
ACDEFH nên CAF không thừa.
+ Với DCF ta có:
G = {ABC; CD; CA; DE; DF; FH}
GD = DEFH
CDEFH nên DCF không thừa.
+ Với DEF ta có:
G = {ABC; CD; CA; DC; DF; FH}
GD = ACDFH
EACDFH nên DEF không thừa.
+ Tƣơng tự ta có DF; FH không thừa
Vậy F = {ABC; CD; CA; DC; DE; DF; FH} 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 AG, ta có (K - A)+ = (BCDFG)+ = ABCDEFHG = U nên K =
BCDFG
Với CG, ta có (K - C)+ = (BDFG)+ = ABCDEFHG = U nên K = BDFG
Với DG, ta có (K - D)+ = (BFG)+ = BFHG U nên K = BDFG
Với FG, 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 ABC; CA ta có R2(ABC).
- Ứng với các phụ thuộc hàm DC; DE; DF 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 = {ABC; CD; DE}.
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 = {ABC; BD; CB; DEFG}.
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 = {ABC; BD; CB; DEF; DEG}
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.
+ BD; CB 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 ABC và DEF; DEG.
+ Xét ABC
Với AVT = AB:
(VT - A)+ = B+ = BD
C(VT - A)+ nên A không thừa.
Với BVT = AB:
(VT - B)+ = A+ = A
C(VT - B)+ nên B không thừa.
+ Xét DEF
Với DVT = DE:
(VT - D)+ = E+ = E
F(VT - D)+ nên D không thừa.
Với EVT = DE:
(VT - E)+ = D+ = D
F(VT - E)+ nên E không thừa.
+ Xét DEG
Bài tập cơ sở dữ liệu
230 Phạm Hùng Phú
Với DVT = DE:
(VT - D)+ = E+ = E
G(VT - D)+ nên D không thừa.
Với EVT = DE:
(VT - E)+ = D+ = D
G(VT - E)+ nên G không thừa.
F = {ABC; BD; CB; DEF; DEG}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F
+ Với ABCF ta có:
G = {BD; CB; DEF; DEG}
GAB)( = ABD
CABD nên ABCF không thừa.
+ Tƣơng tự ta có BD; CB; DEF; DEG không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {ABC; BD; CB; DEF; DEG}
- 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 ABC; CB ta có R2(ABC)
+ Ứng với các phụ thuộc hàm DEF; DEG 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 BG 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 CG ta có (K - C)+ = (ADEH)+ = ADEFGH U nên C không
thừa, K = ACDEH.
Với DG 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}
= {MakhTenkh; MakhDiachi; MakhGioitinh; MakhDienthoai;
MamhTenmh; Mamhmau; MamhDvtinh }
- 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 ={MakhDiachi; MakhGioitinh; MakhDienthoai; MamhTenmh;
Mamhmau; MamhDvtinh }
- 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 ={MakhGioitinh; MakhDienthoai; MamhTenmh; Mamhmau;
MamhDvtinh }
- 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 = { MakhDienthoai; MamhTenmh; Mamhmau; MamhDvtinh }
- 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 = { MamhTenmh; Mamhmau; MamhDvtinh }
- Trong F2222 có MamhTenmh vi phạm BCNF nên tách R2222 thành
R22221(Mamh, Tenmh) với F2221 = { MamhTenmh} (Đã ở dạng chuẩn BCNF) và
R22222(Makh, Mamh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với
F22222 = { Mamhmau; MamhDvtinh }
- 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 = { MamhDvtinh }
- 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 = {MakhTenkh; MakhDiachi; MakhGioitinh; MakhDienthoai}
- 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, MamhDvtinh} 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; MakhDienthoai 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,
MamhDvtinh 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; MaSVDiachi; MaSVGioitinh; MaSVLop;
MaMon TenMon; MaMonSoHT; 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 = {MaSVDiachi; MaSVGioitinh; MaSVLop; MaMon
TenMon; MaMonSoHT; 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 = {MaSVGioitinh, MaSVLop; MaMon TenMon,
MaMonSoHT; 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 = {MaSVLop; MaMon TenMon; MaMonSoHT; 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 {MaSVLop} (ở 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, MaSVDiachi, MaSVGioitinh, MaSVLop;
MaMon TenMon, MaMonSoHT; 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; MaSVDiachi; MaSVGioitinh; MaSVLop}
+ MonHoc(MaMon, TenMon, Soht) ứng với tập phụ thuộc hàm
F2 = { MaMon TenMon; MaMonSoHT }
+ 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 = {ABC , BD; DE} – 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 đó DE 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 = {ABC, BD; DE} – 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 ABC;
R3(BD) ứng với BD;
R4(DE) ứng với BD.
+ 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ó
+ ABCF và C{AB}
+ (AB)
+
= ABCDE U nên ABC 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 = {BD; BE}.
- Phép tách cuối cùng đƣợc = {R1, R20, R222}
Cách khác:
- Trong F có phụ thuộc hàm DE vi phạm BCNF (E {D}; D+= DE U) nên tách
R thành R1(DE) ứng với F1 = {DE} (đã ở dạng BCNF) và
R2(ABCDF) ứng với F2 = {ABC, BD}.
- Trong F2 có phụ thuộc hàm BD vi phạm BCNF (D {B}; B
+
= BD U
(=ABCDF)) nên tách R2 thành R21(BD) ứng với F21 = {BD} (đã ở dạng BCNF)
và R22(ABCF) ứng với F22 = {ABC}.
- Trong F22 có phụ thuộc hàm ABC vi phạm BCNF (C {AB}; (AB)
+
= ABC U
(=ABCF)) nên tách R22 thành R221(ABC) ứng với F221={ABC} (đã ở 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 = {ABC, BD; DE}
R1(ABC)
F1 = {ABC}
R2(ABDEF)
F2 = { BD; DE }
R21(BD)
F21 = {BD}
R22(ABEF)
F22 = {BE}
R221(BE)
F221 = {BE}
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 = {ABC; CA; DE} – 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:
- bai_tap_co_so_du_lieu_pham_hung_phu.pdf