Vì vậy trong quá trình chuẩn hoá dữ liệu và tìm kiếm thông tin, cần thiết phải thực hiện các phép tách lược đồ quan hệ chưa chuẩn hoá về tập các lược đồ quan hệ chiếu đã được chuẩn hoá, [r]
Trang 1CHƯƠNG 7: KỸ THUẬT THIẾT KẾ CÁC HỆ CƠ SỞ DỮ LIỆU QUAN HỆ
Chương này sẽ giới thiệu nguyên lý thiết kế và cài đặt các hệ cơ sở dữ liệu quan hệ
Kỹ thuật chuyển đổi một quan hệ chưa chuẩn hóa về một nhóm các quan hệ ở dạng chuẩn 3NF không bị tổn thất thông tin, trong một số trường hợp các phép tách vẫn bảo toàn các phụ thuộc và phân rã lược đồ thành dạng chuẩn BCNF
Nội dung của chương bao gồm:
• Mục đích phân rã
• Định nghĩa phân rã lược đồ
• Phân rã lược đồ không mất mát thông tin
• Phân rã lược đồ bảo toàn phụ thuộc hàm
• Phân rã lược đồ thành BCNF
• Phân rã lược đồ thành 3NF
7.1 Phân rã lược đồ cơ sở dữ liệu
7.1.1 Mục đích phân rã
Một trong hai nguyên nhân do thiết kế kém sẽ gây nguy hiểm cho cơ sở dữ liệu là trùng lắp thông tin và không có khả năng trình bày thông tin một cách chắc chắn Mục tiêu của
lý thuyết thiết kế cơ sở dữ liệu là tính độc lập của dữ liệu Cấu trúc lưu trữ các hệ cơ sở
dữ liệu phản ảnh tính hiện thực, khách quan và tính toàn vẹn dữ liệu Vì vậy trong quá trình chuẩn hoá dữ liệu và tìm kiếm thông tin, cần thiết phải thực hiện các phép tách lược
đồ quan hệ chưa chuẩn hoá về tập các lược đồ quan hệ chiếu đã được chuẩn hoá, sao cho quá trình tách không làm tổn thất thông tin (lossless- mất mát thông tin), theo nghĩa các quan hệ gốc được khôi phục chính xác từ phép kết nối tự nhiên của các quan hệ chiếu Tách và kết nối các lược đồ quan hệ có làm tổn thất thông tin hay không, có bảo toàn các phụ thuộc hay không đã được nhiều người quan tâm nghiên cứu, giải quyết A.V Ho , C.Beeri & J.D Ullman giới thiệu thuật toán xác định phép kết nối các lược đồ quan hệ không có tổn thất thông tin với giả thiết các phụ thuộc dữ liệu là các phụ thuộc hàm
Ví dụ 5.1: Cho một lược đồ quan hệ dùng để ghi nhận giảng viên và lớp giảng dạy của
giảng viên
GIANGDAY(MONHOC, SOTIET, LOP, GIAOVIEN, HOCVI, DIACCHI)
MONHOC SOTIE
T
Trang 2CSDL 45 DHKTPM11A Trần Lan Anh ThS Tp.HCM
Các phụ thuộc hàm: MONHOC SOTIET;
MONHOC, LOP GIAOVIEN;
GIAOVIEN HOCVI, DIACHI
Do có phụ thuộc hàm MONHOC SOTIET nên số tiết của dòng thứ 2 và dòng thứ 4 gây nên trùng lắp thông tin Tương tự phụ thuộc hàm GIAOVIEN HOCVI, DIACHI nên học vị và địa chỉ của dòng thứ 2 và dòng thứ 4 gây nên trùng lắp thông tin Các dữ liệu gây trùng lắp thông tin là các dữ liệu có thể suy đoán được một cách chắc chắn và duy nhất từ phụ thuộc hàm
Ở đây để lưu học vị và địa chỉ của một giảng viên thì giảng viên đó phải tham gia giảng dạy một lớp nào đó Để giải quyết vấn đề lưu thông tin các giảng viên không tham gia giảng dạy người ta dùng giá trị NULL cho các thuộc tính MONHOC, SOTIET, LOP Như vậy, lược đồ quan hệ này lưu trữ hai thông tin của hai đối tượng khác nhau một là giảng dạy của các giảng viên tham gia giảng dạy, hai là thông tin của các giảng viên không tham gia giảng dạy Vấn đề nảy sinh ở đây là khi ta chỉ cần cập nhật việc giảng dạy ta phải đảm bảo không gây ảnh hưỏng tới các giảng viên không tham gia giảng dạy
và ngược lại Như vậy thông tin lưu trữ ở lược đồ quan hệ này không chắc chắn
Do đó lược đồ quan hệ GIANGDAY kém chất lượng, không phản ảnh tính hiện thực, khách quan và tính toàn vẹn dữ liệu Ta cần phải phân rã thành những lược đồ quan
hệ chất lượng hơn dựa vào tập phụ thuộc hàm ban đầu của nó theo một nguyên tắc nào đó
7.1.2 Định nghĩa phân rã lược đồ
Định nghĩa 1:
Phép phân rã các lược đồ quan hệ R={A1, A2, , An} là việc thay thế lược đồ quan hệ R thành các lược đồ con {R1, , Rk}, trong đó Ri⊆R và R=R1 ∪ R2…∪ Rk Được xem như một công cụ bổ sung vào phương pháp ER để loại trừ dư thừa dữ liệu Phụ thuộc hàm được xem như là sự khái quát hóa các ràng buộc chính (key constraint) Các phụ thuộc hàm được dùng để xác định các dạng chuẩn (normal form) Việc phân rã lược đồ sẽ dựa theo các dạng chuẩn này Vì vậy lý thuyết phân rã còn được gọi là lý thuyết chuẩn hóa
Ví dụ: Phân rã quan hệ GIANGDAY(MONHOC, SOTIET, LOP, GIAOVIEN, HOCVI,
DIACCHI) thành hai lược đồ LICHDAY và GIAOVIEN
LICHDAY(MONHOC, SOTIET, LOP)
Trang 3GIAOVIEN(LOP, GIAOVIEN, HOCVI, DIACHI)
Tình trạng dữ liệu của hai lược đồ trên như sau
MONHO
C
SOTIE T
N
HOCV I
DIACHI
Anh
M
A
DHKTPM11 A
Trần Lan Anh
M
A
DHKTPM11 A
Nai
Nai
Nếu ta phân rã thành hai quan hệ trên phát sinh hai vấn đề sau:
1 Để trả lời câu hỏi: ”Cho biết thông tin của các giáo viên dạy CSDL của lớp DHHTTT11A thì ta phải kết nối tự nhiên hai quan hệ LICHDAY và GIAOVIEN Kết quả như sau:
A
Trần Lan Anh
A
A
Trần Lan Anh
A
A
A
Trần Lan Anh
A
Trần Lan Anh
Ta thấy lớp DHHTTT11A môn CSDL có hai giáo viên giảng dạy là Trần Lan Anh
và Lê Hà Điều này không giống dữ liệu ban đầu Vấn đề này gọi là phân rã không bảo toàn thông tin
3 Xét phụ thuộc hàm trên lược đồ phân rã, ta có:
TKB(MONHOC, SOTIET, LOP) MONHOC SOTIET
Trang 4GV(LOP, GIAOVIEN, HOCVI, DIACHI) GV HOCVI, DIACHI
Từ hai phụ thuộc hàm trên ta không thể suy ra được phụ thuộc hàm MONHOC, LOP
GV Như vậy, hai phụ thuộc hàm trên không đảm bảo kiểm tra các ràng buộc toàn vẹn
do 3 phụ thuộc hàm ban đầu gây ra nên Vấn đề này gọi là phân rã không bảo toàn phụ thuộc hàm
Để phân rã thành các lược đồ quan hệ sao cho không vi phạm hai vấn đề trên, chúng
ta sẽ xét các quy tắc và các thuật toán sau để đảm bảo phân rã các lược đồ sao cho phản ảnh được tính hiện thực, khách quan và tính toàn vẹn dữ liệu
7.2 Phép tách bảo toàn thông tin - (Lossless decomposition)
Khảo sát quan hệ r và các phân rã của nó r1,…, rn Sau phân rã, CSDL không còn lưu trữ quan hệ r nữa mà chỉ lưu lại các quan hệ chiếu của nó r1, , rn CSDL phải có khả năng khôi phục lại quan hệ gốc r từ các quan hệ chiếu này Nếu không khôi phục lại được quan hệ r thì việc phân rã không biểu diễn cùng một thông tin với CSDL gốc Phân rã mất mát thông tin (lossy decomposition)
Ví dụ 2: Cho lược đồ quan hệ Q(TENNCC,DIACHI,SANPHAM,DONGIA) có quan
hệ tương ứng là r
Đặt r1 là quan hệ có được bằng cách chiếu r lên Q1(TENNCC,SANPHAM,DONGIA), Đặt r2 là quan hệ có được bằng cách chiếu r lên Q2(TENNCC,DIACHI)
Đặt r’là quan hệ có được bằng cách kết tự nhiên giữa r1 và r2 qua TENNCC
r
TENNCC
DIACHI
SANPHAM
DONGIA
Hung
12 Nguyễn Kiệm
Tivi
200
Hung
12 Nguyễn Kiệm
Máy giặt
Trang 5Hung
40 Nguyễn Oanh
Tivi
200
r 2 = r.Q 2
r 1 = r.Q 1 +
TENNCC
DIACHI
TENNCC
SANPHAM
DONGIA
Hung
12 Nguyễn Kiệm
Hung
Tivi
200
Hung
40 Nguyễn Oanh
Hung
Máy giặt
250
TENNCC r’ = r 1 |><|r 2
Trang 6Hung 12 Nguyễn Kiệm Tivi 200
Kết quả là r r’ hay r r.Q1|><|r.Q2
Với kết quả trên, ta nói phép tách (Q1,Q2) tách Q thành Q1, Q2 là tách-kết nối (phân rã) mất mát thông tin
Nếu r = r.Q1|><|r.Q2 ta nói phép tách (Q1,Q2)là tách-kết nối không mất mát thông tin (tách kết nối bảo toàn thông tin hay phân rã bảo toàn thông tin)
Vậy với điều kiện nào thì phép tách trở thành tách-kết nối không mất mát thông tin?
7.2.1.Định nghĩa phép tách Q thành hai lược đồ con bảo toàn thông tin
Q là lược đồ quan hệ, Q1, Q2 hai lược đồ con có:
Q1 Q2 = X Q1 Q2 = Q + Nói rằng lược đồ quan hệ Q được tách thành hai lược đồ con Q1, Q2 theo phép tách
(Q1,Q2)là phép tách kết nối không mát thông tin (hay phép tách bảo toàn thông tin) nếu với r là quan hệ bất kỳ của Q ta có:
r = r.Q1 |><|
X
r.Q2 Tức là r được tạo nên từ phép kết nối tự nhiên của các hình chiếu của nó trên các Q1,Q2
Ví dụ: Ta phân rã lại quan hệ GIANGDAY(MONHOC, SOTIET, LOP, GIAOVIEN,
HOCVI, DIACCHI) thành hai lược đồ LICHDAY và GIAOVIEN
LICHDAY(MONHOC, SOTIET, LOP)
GIAOVIEN(LOP, GIAOVIEN, HOCVI, DIACHI)
Tình trạng dữ liệu của hai lược đồ trên như sau
T
VI
DIACHI
Anh
Nếu ta phân rã thành hai quan hệ trên phát sinh hai vấn đề sau:
Trang 7Để trả lời câu hỏi: ”Cho biết thông tin của các giáo viên dạy CSDL của lớp DHHTTT11A thì ta phải kết nối tự nhiên hai quan hệ LICHDAY và GIAOVIEN Kết quả như sau:
MONHO
C
Nhận xét: sau khi kết nối tự nhiên giữa hai qua hệ LICHDAY và GIAOVIEN ta được quan hệ giống như quan hệ ban đầu Vậy phép tách trên bảo toàn thông tin
7.2.2 Tính chất
Nếu Q là một lược đồ quan hệ, Q1,Q2 là hai lược đồ quan hệ con có
Q 1 + Q 2 + = X
Q 1 + Q 2 + = Q +
X Q 2 +
Thì r = r.Q 1 |><|X r.Q 2
Ví dụ: cho Q(SAIP), Q1 =(SA) , Q2 =(SIP) F={S→A,SI→P} Hỏi việc tách Q thành
Q1 và Q2 có gây ra mất mát thông tin không?
Áp dụng tính chất trên, ta có
Q1+ ∩ Q2+ = S
Q1+ Q2+ = SAIP = Q+
S → SA = Q1+
Theo tính chất trên, với mọi quan hệ r của Q ta luôn có
r = r.Q1 r.Q2
Suy ra phép tách trên là phép tách kết nối bảo toàn thông tin
7.2.3 Phép tách Q thành n lược đồ con
Q
Q1 Q12
Q21 Q2
Q3 Q4
Trang 8Q là một lược đồ quan hệ, F là tập phụ thuộc hàm Q được tách thành các lược đồ con Q1, Q2, Q3 ,Qn theo từng bước mà ở mỗi bước một lược đồ được tách thành hai lược
đồ con và thỏa mãn điều kiện của tính chất bảo toàn thông tin thì với r là quan hệ bất kỳ của Q ta luôn có:
r = r.Q1|><|r.Q2|><|r.Q3 |><|r.Qn
7.2.4 Thuật toán kiểm tra phân rã bảo toàn thông tin (Lossless-join decomposition)
Dữ liệu vào: lược đồ quan hệ Q(A1,A2,…An), tập phụ thuộc hàm F, phép tách
=(Q1,Q2,…,Qk)
Dữ liệu ra: kết luận phép tách có phải là phép tách bảo toàn thông tin ?
Bước 1:
Thiết lập một bảng với n cột (tương ứng với n thuộc tính) và k dòng (tương ứng với k quan hệ), trong đó cột thứ j ứng với thuộc tính Aj, dòng thứ i ứng với lược
đồ Ri
Tại dòng i và cột j, ta điền ký hiệu aj nếu thuộc tinh Aj∈Ri Ngược lại ta điền ký hiệu bij
Bước 2:
Xét các phụ thuộc hàm trong F và áp dụng cho bảng trên
Giả sử ta có phụ thuộc hàm X→Y∈F, xét các dòng có giá trị bằng nhau trên
thuộc tính X thì làm bằng các giá trị của chúng trên Y.
Ngược lại làm bằng chúng bằng ký hiệu bij Tiếp tục áp dụng các pth cho bảng (kể cả việc lặp lại các phụ thuộc hàm đã áp dụng) cho tới khi không còn áp dụng được nữa
Bước 3:
Xem xét bảng kết quả Nếu xuất hiện một dòng chứa toàn giá trị a1, a2 ,…,an thì
kết luận phép tách ρ không mất mát thông tin
Chú ý: một điều quan trọng cần phải nhớ là khi cho hai ký hiệu bằng nhau thì phải cho bằng nhau ở tất cả các xuất hiện của chúng trong bảng chứ không phải chỉ cho bằng nhau
ở những ký hiệu trong phạm vi các phụ thuộc hàm X Y F
Ví dụ: Với Q(ABCDE)
Q1 = (AD),Q2 =(AB), Q3 =(BE), Q4 =(CDE), Q5 =(AE)
F = {AC,BC,AD,DEC,CEA}
Kiểm tra tính bảo toàn thông tin của phép phân rã Q thành Q1,Q2,Q3,Q4,Q5
1
a 2
a 3
a 4
a 5
Bước 2: Điền b1,b2,b3,
Trang 9A B C D E A B C D E
Sửa bảng giá trị để thảa AC
Sửa b4,b13 thành b2
Sửa bảng giá trị để thỏa BC Sửa b8 thành b2
Q 1 (AD) a1 b1 b2 a4 b3 Q 1 (AD) a1 b1 b2 a4 b3
Q 2 (AB) a1 a2 b2 b5 b6 Q 2 (AB) a1 a2 b2 b5 b6
Q 3 (BE) b7 a2 b8 b9 a5 Q 3 (BE) b7 a2 b2 b9 a5
Q 4 (CDE) b10 b11 a3 a4 a5 Q 4 (CDE) b10 b11 a3 a4 a5
Q 5 (AE) a1 b12 b2 b14 a5 Q 5 (AE) a1 b12 b2 b14 a5
Sửa bảng giá trị để thỏa AD
Sửa b5,b14 thành a4
Sửa bảng giá trị để thỏa DEC
Sửa b2 thành a3 sửa tất cả b2 thành a3
A
B
C
D
E
A
B
C
D
E
Q 1 (AD)
a1
b1
b2
Trang 10b3
Q 1 (AD)
a1
b1
a3
a4
b3
Q 2 (AB)
a1
a2
b2
a4
b6
Q 2 (AB)
a1
a2
a3
a4
b6
Q 3 (BE)
b7
a2
b2
b9
a5
Q 3 (BE)
b7
a2
a3
b9
a5
Q 4 (CDE)
Trang 11b11
a3
a4
a5
Q 4 (CDE)
b10
b11
a3
a4
a5
Q 5 (AE)
a1
b12
b2
a4
a5
Q 5 (AE)
a1
b12
a3
a4
a5
Sửa bảng giá trị để thỏa CEA
Sửa b7,b10 thành a1
Lần lượt xét lại các phụ thuộc hàm trong F, nếu bảng giá trị chưa thỏa phụ thuộc hàm nào thì tiếp tục làm cho nó thỏa
Sửa bảng giá trị để thỏa AD
A
Trang 12B C D E
A B C D E
Q 1 (AD)
a1 b1 a3 a4 b3
Q 1 (AD)
a1 b1 a3 a4 b3
Q 2 (AB)
a1 a2 a3 a4 b6
Q 2 (AB)
a1 a2 a3
Trang 13b6
Q 3 (BE)
a1
a2
a3
b9
a5
Q 3 (BE)
a1
a2
a3
a4
a5
Q 4 (CDE)
a1
b11
a3
a4
a5
Q 4 (CDE)
a1
b11
a3
a4
a5
Q 5 (AE)
a1
b12
a3
Trang 14a5
Q 5 (AE)
a1
b12
a3
a4
a5
Dòng thứ 3 Q3(BE) của bảng chứa toàn giá trị aj (j=1 n) nên phép phân rã trên là bảo toàn thông tin
7.3 Phân rã bảo toàn phụ thuộc hàm (decompositions that preserve dependencies)
7.3.1 Định nghĩa
Cho lược đồ quan hệ Q và tập phụ thuộc hàm F xác định trên Q Phân rã Q thành {Q1, Q2…Qn} thì mỗi Q sẽ xác định một tập phụ thuộc hàm Fi:
Fi = {X Y : XY Qi và X F+}
Fi được gọi là tham chiếu của F+ lên Qi
Phân rã trên bảo toàn phụ thuộc hàm nếu:
Đặt F‟ = F1 F2 … Fn thì F‟ = F (nghĩa là F‟+ = F+ )
Để kiểm tra phân rã bảo toàn phụ thuộc hàm ta đi kiểm tra F1F2 … Fn F
Lưu ý: Khi tính các Fi thường hay thiếu sót các phụ thuộc hàm vì Fi là chiếu của F+ lên
Qi chứ không phải F lên Qi Như vậy để tính đầy đủ Fi của Qi ta tính bao đóng của tất cả các tập con thực sự của Qi
X Qi Nếu X+ Qi X thì (X (X+ (Qi - X)) Fi
Ví dụ: Cho Q(ABCD), F = {A B, B C, C D, D A}
Phân rã Q thành {Q1(AB), Q2(BC), Q3(CD)} sẽ dễ dàng nhầm lẫn:
Q1(AB), F1 = {A B}
Q1(BC), F2 = {B C}
Q1(CD), F1 = {C D}
Lúc này F‟ = F1 F2 F3 = {A B, B C, C D}
Rõ ràng là F‟ không tương đương với F vì F‟+ F+ do D A F‟+
Như vậy nếu vội vã kết luận phân rã trên không bảo toàn phụ thuộc hàm là sai
Trang 15Thực ra:
Q1(AB) Af+ = ABCD A B F1 Bf+ = BCDA B A F1
Vậy F1 = {A B, B A}Q2(BC) Bf+ = BCDA B C F2 Cf+ = CDAB C B F2 Vậy F2 = {B C, C B}
Q3(CD) Cf+ = CDAB C D F3 Df+ = DABC D C F3
Vậy F3 = {C D, D C}
Vậy F‟ = F1 F2 F3 = { A B,B A, B C, C B, C D, D C}
Ta tính được F‟+ = F+ F‟ F
Kết luận: Phân rã trên bảo toàn phụ thuộc hàm
Trang 16Thuật toán phân rã lược đồ bảo toàn phụ thuộc hàm
Vào: Cho lược đồ quan hệ Q(A1, A2,…,An) và tập phụ thuộc hàm F
Ra: Tách Q thành các lược đồ bảo toàn phụ thuộc hàm
Bước 1: Liệt kê tất cả các tập con của Q+
Bước 2: Với mỗi tập con của Q
Tính bao đóng của các tập con của các Qi+
Tìm hình chiếu của tất cả các Qi
Bước 3: Tạo tập phụ thuộc hàm G gồm tất cả các hình chiếu của các Qi Kiểm tra nếu F
có tương đương với G thì phép tách bảo toàn phụ thuộc hàm, ngược lại kết luận phép tách không bảo toàn thụ thuộc hàm
Ví dụ: Cho lược đồ quan hệ Q(A,B,C) và F={AB,BC,CA} Phép phân rã =(Q1,Q2) tách Q thành hai lược đồ quan hệ Q1(A,B) và Q2(B,C) Hãy tính hình chiếu của F trên Q1 và Q2 Phép phân rã có bảo toàn phụ thuộc hàm F không?
Giải:
Bước 1: Liệt kê tất cả tập con của Q+
AB Bước 2: Tính bao đóng của các tập con của Q1
+= A+=ABC B+=ABC
AB+=ABC Bước 3: Tính F1 =Q1(F)
Tính cho Q2
Bước 4: Kê tất cả tập con của Q2
BC Bước 5: Tính bao đóng của các tập con của Q2
Bước 6: Tính F2 =Q2(F)
Bước 7:
G=Q1(F)Q2(F)={AB,AAB,BA,BAB,BC,BBC,CB,CBC}
Trang 17F={AB,BC,CA} có AB, BC là thành viên của G còn CA có là thành viên của G hay không ta tính CG+ CG+=ABC CA cũng là thành viên của G Vậy phép phân rã trên bảo toàn phụ thuộc hàm