Giải thuật được trình bày qua 5 bước: B1: Đếm: - Xác định xem quan hệ R có bao nhiêu thuộc tính giả sử n thuộc tính - Xác định xem tách R thành bao nhiêu quan hệ con giả sử m quan hệ co
Trang 1DẠNG 8: KIỂM TRA TÍNH MẤT MÁT THÔNG TIN CỦA PHÉP TÁCH Bài toán: Cho quan hệ R(U, F) Hãy kiểm ta trính mất mát thông tin khi tách R thành R1(U1), R2(U2), R3(U3) Rn(Un)
Phương pháp:
Vì phương pháp tương đối dài nên ở đây, chúng ta vừa xem phương pháp, vừa áp dụng luôn vào một ví dụ:
Ví dụ: Cho quan hệ R(U, F): U ={A B C D E G H} và
F = {AB → D, B → CE, A → G, C →H}
Hãy kiểm tra tính mất mát thông tin khi tách R thành: R1(ABCD), R2(ABC),
R3(CEGH)
Giải thuật được trình bày qua 5 bước:
B1: Đếm:
- Xác định xem quan hệ R có bao nhiêu thuộc tính (giả sử n thuộc tính)
- Xác định xem tách R thành bao nhiêu quan hệ con (giả sử m quan hệ con)
B2: Vẽ:
Vẽ một bảng n+2 cột và m+2 dòng:(với ví dụ trên là 9 cột và 5 dòng)
B3: Điền:
Dòng 1, bắt đầu từ cột 3, điền J=1 n Dòng 2 bắt đầu từ cột 3, điền các thuộc tính
Cột 1, bắt đầu từ dòng 3, điều i = 1 m
Cột 2, bắt đầu từ dòng 3, điền các quan hệ con
I=1 R1(ABCD)
2 R2(ABC)
3 R3(CEGH)
Điền các ô (i, j): Nếhuộc tính J có trong quan hệ I thì tại ô (i,j) ta điền aj Ngược
lại thì không điền gì
Trang 2J=1 2 3 4 5 6 7
B4: Làm bằng:
Xét phụ thuộc hàm X → Y trong F Nếu trên cột X có hai dòng bằng nhau theo aj (tức đều bằng aj) thì làm bằng trên 2 dòng tương ứng của cột Y
Cách làm bằng:
Nếu 2 ô cần làm bằng có tồn tại một giá trị aj thì làm bằng theo aj (tức cả 2 ô đó đều được điền aj) Ngược lại (tức 2 ô cần làm bằng vẫn còn trống) thì không làm bằng
Chú ý: giá trị aj mới được điền vào do làm bằng mà có phải được khoanh tròn
Xét AB → D có làm bằng trên dòng 1 và 2
Xét B → CE không cần làm bằng trên cột C, không thể làm bằng trên cột E
Xét A → G không thể làm bằng trên G
Xét C → H có làm bằng trên dòng 1, 2, 3
B5: Kết luận:
Khi không thể làm bằng được nữa, nếu tồn tại ít nhất một dòng chứa toàn aj
(j=1 n) thì phép tách là không mất mát thông tin Ngược lại, phép tách là có mất mát thông tin
Với ví dụ trên, phép tách là có mất mát thông tin
Các chú ý:
Trong quá trình làm bằng, nếu chưa làm bằng xong nhưng đã xuất hiện một dòng
chứa toàn aj (j=1 n) thì có thể dừng lại và kết luận
Phương pháp trên cho phép giải quyết bài toán chỉ cần lập 1 bảng duy nhất
Do ví dụ trên được trình bày kết hợp với phương pháp nên có thể sinh viên chưa rút ra được cách thức trình bày một bài giải dạng này, thế nào cho đủ Do đó, sau đây là một ví dụ để sinh viên tham khảo cách trình bày:
Ví dụ 2:
Trang 3Cho quan hệ R(U, F): U ={A B C D E G H} và
F = {A → D, B → CE, C → G, E →H}
Hãy kiểm tra tính mất mát thông tin khi tách R thành: R1(ABCE), R2(ABDH),
R3(CGH)
Bài giải:
Xét A → D có làm bằng trên dòng dòng 1 và 2 Xét B → CE có làm bằng trên dòng 1 và 2 Xét C → G có làm bằng trên dòng 1, 2, 3 Xét E → H làm bằng trên dòng 1 và 2
Kết luận: Phép tách là không mất mát thông tin