CHƢƠN V THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ Ở MỨC KHÁI NIỆM TS Nguyễn Thị Kim Ngân Nội dung Dư thừa và dị thường dữ liệu Phụ thuộc hàm Hệ tiên đề Armstrong Bao đóng của tập thuộc tính Phủ của một[.]
Trang 1CHƯƠN V THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
Ở MỨC KHÁI NIỆM
TS Nguyễn Thị Kim Ngân
Trang 2Nội dung
Dư thừa và dị thường dữ liệu
Phụ thuộc hàm
Hệ tiên đề Armstrong
Bao đóng của tập thuộc tính
Phủ của một tập PTH
Xác định khóa của lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
Các phép tách lược đồ quan hệ
Chuyển đổi mô hình thực thể liên kết sang mô hình quan hệ
Trang 3Các phép tách lược đồ quan hệ
Định nghĩa phép tách lược đồ quan hệ
Phép tách kết nối không tổn thất về BCNF
Phép tách bảo toàn phụ thuộc về 3NF
Trang 4Các phép tách lược đồ quan hệ
Định nghĩa phép tách lược đồ quan hệ
Phép tách kết nối không tổn thất về chuẩn BCNF
Phép tách bảo toàn phụ thuộc về chuẩn 3NF
Trang 5Định nghĩa phép tách lược đồ quan hệ
Cho lược đồ quan hệ R=<U, F>
U1, U2, …, Uk là các tập con của U sao cho U1 U2 … Uk=U
Fi= Ui(F)={{XY| XY F+, XYUi}, i=1, ,k
Phép tách lược đồ R là việc thay thế R=<U, F> bằng các lược đồ con R1 =<U1 , F1>, R2 =<U2 , F2>, …, Rk=<Uk, Fk>
Kí hiệu phép tách: =(R1, R2, …, Rk) hoặc =(U1, U2, …, Uk)
Trang 6Phép tách kết nối không tổn thất
Cho lược đồ quan hệ R=<U, F>
r là một quan hệ bất kỳ trên R thỏa mãn F
U1, U2, …, Uk là các tập con của U sao cho U=U1 U2 … Uk
Fi= Ui(F)={XY| XY F+, XYUi}, i=1, ,k
Ri=<Ui,Fi>, i=1, ,k
ri=Ui(r), i=1, ,k
Phép tách R thành {R1, R2, …, Rk} được gọi là tách kết nối không
tổn thất (Lossless Join Decomposition) đối với tập phụ thuộc hàm
F nếu r=r1 * r2 *…* rk
Trang 7Phép tách kết nối không tổn thất
Bổ đề
Cho, R=<U,F> là một lược đồ quan hệ,
r là một quan hệ trên R thỏa F
U1, U2, …, Uk là các tập con của U sao cho U=U1 U2 … Uk
Fi= Ui(F)={X Y| X Y F + , X Y Ui}, i=1, ,k
Ri=<Ui,Fi>, i=1, ,k
=(R1, R2, …, Rk) là một phép tách của R
ri= Ui(r), i=1, ,k
m(r)=r1 * r2 *…* rk
Khi đó i) r m(r)
ii) Nếu s=m(r) thì Ui(s)=ri, i=1, ,k
iii) m(m(r))=m(r)
Trang 8Kiểm tra tính kết nối không tổn thất của một phép tách
Bài toán
Cho lược đồ R <U, F>, trong đó, U={A1, A2, …, An} là tập các thuộc
tính, F là tập các phụ thuộc hàm,
U1, U2, …, Uk là các tập con của U sao cho U1 U2 … Uk=U Kiểm tra phép tách =(U1, U2, …, Uk) có phải là phép tách kết nối
không tổn thất hay không?
Trang 9Kiểm tra tính kết nối không tổn thất của một phép tách
Thuật toán
Vào: U={A1, A2, …, An}, F, =(U1, U2, …, Uk)
Ra: Kết luận có phải là phép tách kết nối không tổn thất hay không?
Phương pháp:
Bước 1: Lập bảng kxn,
Tại dòng i, cột j ta kí hiệu là aj nếu Aj Ui, ngược lại, ta kí hiệu là bij
Bước 2: Với mỗi X Y F, xét các dòng có kí hiệu bằng nhau trên tập X Các dòng này sẽ được thay đổi kí hiệu để chúng mang giá trị bằng nhau trên tập Y, theo quy tắc:
- Nếu tồn tại một kí hiệu có dạng aj thì các kí hiệu còn lại được đổi thành aj
- Nếu không có giá trị nào có dạng aj thì lấy tùy ý một ký hiệu bij để làm bằng
Bước 2 được lặp lại cho đến khi không có thay đổi nào trên bảng nữa
Nếu tại bước kết thúc, bảng có một dòng gồm toàn ký hiệu dạng aj thì là phép tách kết nối không tổn thất, ngược lại là phép tách kết nối tổn thất
Trang 10Kiểm tra tính kết nối không tổn thất của một phép tách
Ví dụ
Cho R=<U, F>, trong đó U={S, A, I, P} và F={SA, SI P}
Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không? Bảng khởi tạo
S A I P
Trang 11Kiểm tra tính kết nối không tổn thất của một phép tách
Ví dụ 1:
Cho U={S, A, I, P} và F={SA, SI P}
Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?
Xét SA
S A I P
S A I P
Trang 12Kiểm tra tính kết nối không tổn thất của
một phép tách
Ví dụ 1:
Cho U={S, A, I, P} và F={SA, SI P}
Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?
Xét SI P
S A I P
S A I P
S A I P
Trang 13Kiểm tra tính kết nối không tổn thất của
một phép tách
Ví dụ 1:
Cho U={S, A, I, P} và F={SA, SI P}
Kiểm tra =(SA, SIP) có là phép tách không tổn thất hay không?
Xét SI P
=(SA, SIP) là phép tách kết nối không tổn thất
S A I P
S A I P
S A I P
Trang 14Kiểm tra tính kết nối không tổn thất của một phép tách
Định lý
Giả sử =(U1, U2) là một phép tách của lược đồ quan hệ R=<U,F> Khi đó, là phép tách kết nối không tổn thất
F U
U U
U
F U
U U
U
1 2
2 1
2 1
2 1
\
\
Trang 15Kiểm tra tính kết nối không tổn thất của một phép tách
Chứng minh định lý
Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}
U1={A1, A2, …, Ai-1, Ai …, Aj}
U2={Ai , …, Aj,Aj+1 …, An}
Bảng khởi tạo
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 b21 b22 … bi-1 ai … aj aj+1 … an
Trang 16Kiểm tra tính kết nối không tổn thất của một phép tách
Chứng minh định lý
Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}
U1={A1, A2, …, Ai-1, Ai …, Aj}
U2={Ai , …, Aj,Aj+1 …, An}
Nếu U1U2 U1\U2 F+ => Ai, Ai+1 …, Aj A1, A2, …, Ai-1 F+
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 b21 b22 … bi-1 ai … aj aj+1 … an
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 a1 a2 … ai-1 ai … aj aj+1 … an
Trang 17Kiểm tra tính kết nối không tổn thất của một phép tách
Chứng minh định lý
Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}
U1={A1, A2, …, Ai-1, Ai …, Aj}
U2={Ai , …, Aj,Aj+1 …, An}
Nếu U1U2 U1\U2 F+ => Ai, Ai+1 …, Aj A1, A2, …, Ai-1 F+
=(U1, U2) là phép tách kết nối không tổn thất
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 b21 b22 … bi-1 ai … aj aj+1 … an
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 a1 a2 … ai-1 ai … aj aj+1 … an
Trang 18Kiểm tra tính kết nối không tổn thất của một phép tách
Chứng minh định lý
Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}
U1={A1, A2, …, Ai-1, Ai …, Aj}
U2={Ai , …, Aj,Aj+1 …, An}
Nếu U1U2 U2\U1 F+ => Ai, Ai+1 …, Aj Aj+1,…, Ai-1 F+
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 b21 b22 … bi-1 ai … aj aj+1 … an
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj aj+1 … an
U2 b21 b22 … bi-1 ai … aj aj+1 … an
Trang 19Kiểm tra tính kết nối không tổn thất của một phép tách
Chứng minh định lý
Giả sử U={A1, A2, …, Ai-1, Ai …, Aj, Aj+1…, An}
U1={A1, A2, …, Ai-1, Ai …, Aj}
U2={Ai , …, Aj,Aj+1 …, An}
Nếu U1U2 U2\U1 F+ => Ai, Ai+1 …, Aj Aj+1,…, Ai-1 F+
=(U1, U2) là phép tách kết nối không tổn thất
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj b1j+1 … b1n
U2 b21 b22 … bi-1 ai … aj aj+1 … an
A 1 A 2 … A i-1 A i … A j A j+1 … A n
U1 a1 a2 … ai-1 ai … aj aj+1 … an
U2 b21 b22 … bi-1 ai … aj aj+1 … an
Trang 20Kiểm tra tính kết nối không tổn thất của một phép tách
Định lý
Giả sử =(U1, U2) là một phép tách của lược đồ quan hệ R=<U,F> Khi đó, là phép tách kết nối không tổn thất
=> là phép tách kết nối tổn thất
F U
U U
U
F U
U U
U
1 2
2 1
2 1
2 1
\
\
F U
U U
U
F U
U U
U
1 2
2 1
2 1
2 1
\
\