4. Chuẩn hoá lược đồ quan hệ
4.3. Phép tách bảo toàn phụ thuộc hàm thành 3NF
Thuật toán 1 không đảm bảo sinh ra một phép tách bảo toàn phụ thuộc. Không phải bất kỳ lược đồ quan hệ nào cũng có thể được tách theo thuật toán này thành các lược đồ BCNF mà vẫn bảo toàn các phụ thuộc hàm của nó. Để đảm bảo đầu ra của phép tách là bảo toàn phụ thuộc đối với mọi lược đồ đầu vào, cần yêu cầu các lược đồ thành phần đầu ra chỉ là 3NF Thuật toán 2: Tách bảo toàn phụ thuộc đưa lược đồ về dạng chuẩn 3NF Input: Lược đồ quan hệ R(U) với tập phụ thuộc hàm F trên R. Không mất tính tổng quát giả sử F tối thiểu
Output: Phép tách bảo toàn phụ thuộc cho R sao cho mỗi lược đồ thành phần là 3NF cùng với tập phụ thuộc chiếu của F lên những lược đồ thành phần này. Method:
- Nếu có những thuộc tính không xuất hiện trong bất cứ một phụ thuộc hàm nào của F (cả vế trái và vế phải) thì ta phải xác định một lược đồ quan hệ gồm những thuộc tính này rồi loại chúng ra khỏi U
- Nếu một trong các phụ thuộc hàm của F chứa tất cả các thuộc tính của U thì phép tách cần phải tìm chỉ gồm R.
- Trong trường hợp còn lại, kết quả gồm các lược đồ ứng với tập các thuộc tính có dạng XA, với mỗi phụ thuộc hàm X→A thuộc F, nếu trong F có các phụ thuộc hàm có vế trái X→A1, X→A2,…,X→Ak thì chúng ta có thể sử dụng lược đồ ứng với tập thuộc tính XA1A2,..Ak thay cho các lược đồ dạng XAi
Ví dụ: Xét lại ví dụ 1 trong phần b
Vì F ={C→T, HR→C, HT→R, CS→G, HS→R} là tối thiểu nên phép tách thu được theo thuật toán 2 là ℘=(R1,R2,R3,R4,R5) trong đó
R1=(CT,{C→T}) R2=(HRC,{HR→C}) R3=(HTR,{HT→R}) R4=(CSG,{CS→G}) R5=(HSR,{HS→R})
Chú ý: Để tìm một phép tách vừa LJ vừa bảo toàn phụ thuộc Bước 1: Tìm phủ tối thiểu
Bước 2: Tìm tách bảo toàn phụ thuộc (Đưa về 3NF)
Bước 3: Tìm trong các lược đồ con, nếu không có một lược đồ con nào chứa khoá thì thêm vào 1 quan hệ chứa khoá.
Kết chương
Qua nội dung chương III, chúng ta đã biết được các khái niệm khóa, phụ thuộc hàm, được giới thiệu về hệ tiên đề Armstrong và các luật suy ra từ hệ tiên đề. Chương này cũng đã giới thiệu về các phép tách, các dạng chuẩn và phương pháp đưa lược đồ về dạng chuẩn nhất định.
Câu hỏi và bài tập
Câu hỏi:
Câu 1.Nêu các khái niệm quan hệ, các phép toán của đại số quan hệ, cho ví dụ. Câu 2. Khái niệm phụ thuộc hàm, các tính chất của phụ thuộc hàm, cho ví dụ Câu 3. Khái niệm bao đóng của tập phụ thuộc hàm, bao đóng của tập thuộc
tính, giải thuật tìm bao đóng của tập thuộc tính
Câu 4. Khái niệm phủ tối thiểu, giải thuật tìm phủ tối thiểu
Câu 5. Nêu khái niệm khoá theo ngôn ngữ phụ thuộc hàm, các giải thuật tìm
khoá
Câu 6. Khái niệm phép tách lược đồ quan hệ, cho ví dụ
Câu 7. Nêu phép tách kết nối không tổn thất và giải thuật kiểm tra phép tách
kết nối không tổn thất, cho ví dụ
Câu 8. Nêu phép tách bảo toàn phụ thuộc và giải thuật kiểm tra phép tách bảo
toàn phụ thuộc, cho ví dụ
Câu 9. Định nghĩa các dạng chuẩn, cho ví dụ
Câu 10. Định nghĩa dạng chuẩn 3 và phép tách bảo toàn phụ thuộc hàm về các
lược đồ ở dạng chuẩn 3.
Câu 11. Định nghĩa dạng chuẩn BCNF và phép tách kết nối không tổn thất về
các lược đồ ở dạng chuẩn BCNF.
Bài tập:
Bài 1: Cho lược đồ quan hệ R(U,F) với U=ABCDE, F={A→C, BC→D, D→E, E→A} Tính: a. (AB)+ F; b. (BD)+ F-D+ F
Bài 2: Cho lược đồ quan hệ R(U,F) với U=ABCDEG, F={B→C, AC→D, D→G, AG→E} cho biết các phụ thuộc hàm sau đây có thuộc F+ không?
a. AB→G b. BD→AD
Bài 3:Tìm các phủ tối thiểu của lược đồ quan hệ R(U,F) với
a. U=ABCDE, F={AB→C, C→D, D→E}
b. U=ABCD, F={AB→C, D→B, A→B, C→ABD}
c. U=ABEIGH, F={AB→E, AG→I, BE→I, E→G, GI→H} d. U=ABCDEGH, F={AB→C, B→D, CD→E, CE→GH, G→A}
e. U=ABCDEG và F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG}
f. U=ABCDEG và F={A→C, AB→C, C→DG, CD→G, EC→AB, EG→C}
Bài 4: Kiểm tra tính kết nối không tổn thất.
a. Cho U=ABCDE, F={C→A, C→D, ACD→BE} ℘=(ABC, CDE)
b. Cho R(U,F) với U=ABCDE và F={A→C, B→C, C→D, DE→C, CE→A}, Phép tách ℘=(AC, CD, BE, BC, AE)
c. Cho lược đồ quan hệ R(U,F) với U=ABCDE và F={A→CD, B→C, DE→C, CE→A} phép tách ℘=(AD, AB, BE, CDE, AE)
d. Cho R(U,F) với U=ABCDEHIKL và F={AB→D, DE→H, IK→L, LB→C}, Phép tách ℘=(ABC, CDEH, EHIKL)
e. Cho R(U,F) với U=ABCDEF, F={AB→C, C→D, D→E, DE→F} Phép tách ℘=(ABC, CD, DE, DEF)
Bài 5: Hãy tìm mọi khoá của mỗi lược đồ quan hệ sau:
a. R(U, F) U=ABCD, F={AB→C, D→B, A→B, C→ABD} b. R(U, F) U=ABCDEG, F={AB→C, C→D, D→E, DE→G}
c. R(U, F) U=ABCDEG, F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, E→G}
Bài 6: Kiểm tra các phép tách sau có mất thông tin không, có bảo toàn phụ thuộc không?
a. Cho R(U, F) Trong đó U=ABCD, F={AB→C, D→B, C→ABD} và phép tách ℘=(ABC, BCD)
b. Cho R(U, F) U=ABCDEG, F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, E→G} và phép tách ℘=(ABC, BCD, DEG)
Bài 7: Cho lược đồ quan hệ R(U,F) với U=ABCDE, F={AB→DE, E→AD, D→C}
a. Tìm tất cả các khoá của lược đồ quan hệ R b. Xác định R ở dạng chuẩn nào
c. Kiểm tra xem phép tách ℘=(AB, CDE, AD) có phải là tách kết nối không tổn thất hay không?
d. Tìm phép tách R thành các lược đồ ở dạng chuẩn 3 với điều kiện phép tách vừa là tách kết nối không tổn thất vừa là tách bảo toàn phụ thuộc
Bài 8: Cho lược đồ quan hệ R(U, F) với U=ABCDEG, F={AB→C, G→A, C→B, ABD→E} tìm phép tách kết nối không tổn thất của R thành những lược đồ BCNF
Bài 9: Cho lược đồ R(U, F) với U=BCDEGIKLM và F={C→BDEIK, D→B, K→E} Tìm phép tách vừa là kết nối không tổn thất vừa là bảo toàn phụ thuộc hàm F của R thành các lược đồ 3NF.
Bài 10: Cho lược đồ quan hệ R(U,F) với U=ABCDE, F={AB→C, C→B, C→D, D→E}
a. Tìm tất cả các khoá của lược đồ quan hệ R b. Xác định R ở dạng chuẩn nào
c. Tách sơ đồ quan hệ trên về BCNF kết nối không tổn thất
d. Tìm phép tách R thành các lược đồ ở dạng chuẩn 3 với điều kiện phép tách vừa là tách kết nối không tổn thất vừa là tách bảo toàn phụ thuộc
Bài 11: Cho lược đồ quan hệ R(U,F) với U=ABCDEFGH, F={AB→C, AB→D, C→B, EF→G, E→H}
a. Tìm tất cả các khoá của lược đồ quan hệ R b. Xác định R ở dạng chuẩn nào
c. Tách sơ đồ quan hệ trên về BCNF kết nối không tổn thất
d. Tìm phép tách R thành các lược đồ ở dạng chuẩn 3 với điều kiện phép tách vừa là tách kết nối không tổn thất vừa là tách bảo toàn phụ thuộc
Bài 12: Thực hiện phép tách lược đồ quan hệ R(U, F) thành các lược đồ 3NF
bảo toàn phụ thuộc hàm và kết nối không mất thông tin và phép tách R thành các lược đồ ở BCNF kết nối không mất thông tin.
a. U=ABCDEGH, F={AB→C, C→D, D→E} b. U=ABCD, F={AB→C, D→B, A→B, C→ABD} c. U=ABCDEG, F={AB→C, AC→D}
d. U= ABCDE, F={AB→C, C→D, D→E} e. U=ABCDEGHI, F={AB→C, B→D, C→E} f. U=ABCDE, F={AB→C, B→D, C→E}
Bài 13: Cho lược đồ quan hệ R(U, F) U=(MaKh, TenKh, DiaChi, GioiTinh,
DienThoai, MaMH, TenMH, TenMH, Mau, DonGia, DvTinh, SoLuong, MuaBan, NgayMB)
F={MaKh→TenKh, DiaChi, GioiTinh, DienThoai; MaMH→TenMH, TenMH, Mau, DonGia, DvTinh; MaKh,MaMH→SoLuong, MuaBan, NgayMB}
a. Tìm mọi khoá của lược đồ quan hệ b. R ở dạng chuẩn nào?
c. Tách R thành các lược đồ ở BCNF kết nối không tổn thất và tách R thành các lược đồ ở 3NF bảo toàn phụ thuộc và kết nối không tổn thất
Bài 14: Cho lược đồ quan hệ R(U, F) U=MaSV, TenSV, DiaChi, GioiTinh, Lop,
MaMon, TenMon, SoDVHT, DTLan1, DTLan2, DTLan3)
F={MaSV→TenSV, DiaChi, GioiTinh, Lop; MaMon→TenMon, SoDVHT; MaSV, MaMon→DTLan1, DTLan2, DTLan3}
a. Tìm mọi khoá của lược đồ quan hệ b. R ở dạng chuẩn nào?
c. Tách R thành các lược đồ ở BCNF kết nối không tổn thất và tách R thành các lược đồ ở 3NF bảo toàn phụ thuộc và kết nối không tổn thất
CHƯƠNG IV: MÔ HÌNH THỰC THỂ LIÊN KẾT (Entity Relationship Model)
Mô hình thực thể liên kết hay gọi tắt là mô hình E – R. Đây là mô hình dữ liệu khái niệm bậc cao hỗ trợ cho việc thiết kế cơ sở dữ liệu, nhiều công cụ thiết kế cơ sở dữ liệu đã sử dụng các khái niệm của mô hình này.