Thuật toán kiểm tra một phép tách có bảo toàn thông tin

Một phần của tài liệu Co so du lieu Chuong 6 ThS Nguyen Vuong Thinh (Trang 26 - 28)

Input: Lược đồ quan hệ R(Ω) với Ω = {A1, A2,..., An} và tập phụ thuộc hàm F.

Phép tách R(Ω) thành m lược đồ con R1(Ω1), R2(Ω2), ... , Rm(Ωm)

Output: Khẳng định phép tách có bảo toàn thông tin hay không.

Bước 1: Tạo một ma trận S có m hàng và n cột. Mỗi cột tương ứng với một thuộc tính Aj trong Ω và mỗi hàng tương ứng với một lược đồ quan hệ con Ri(Ωi) .

Bước 2: Đặt phần tử S(i, j) của ma trận nhận giá trị bằng 1 nếu Aji và ngược lại, S(i, j) nhận giá trị bằng 0 nếu Aj i

Bước 3: Lặp lại thao tác sau đây cho tới khi nào không còn sự thay đổi trong ma trận S: Với mỗi phụ thuộc hàm X → Y trong F, xác định các hàng trong S có chứa các giá trị 1 như nhau trong các cột ứng với các thuộc tính trong X. Nếu có một hàng trong số đó chứa giá trị 1 trong các cột ứng với tập thuộc tính Y thì làm cho các cột tương ứng của các hàng khác cũng chứa giá trị 1.

Bước 4: Nếu tồn tại 01 hàng có chứa toàn giá trị 1 thì phép tách là bảo toàn thông tin, ngược lại là không bảo toàn.

Ví dụ 6.9: Cho lược đồ quan hệ

PhanCong(MaNV, TenNV, ChuyenMon, MaDA, TenDA, DiaDiem, NgayBD, NgayKT) Và tập phụ thuộc hàm:

F = { MaNV → TenNV, ChuyenMon; MaDA → TenDA, DiaDiem; MaDA → TenDA, DiaDiem;

MaNV, MaDA → NgayBD, NgayKT }

Người ta tách lược đồ quan hệ PhanCong thành các lược đồ con sau đây:

NhanVien(MaNV, TenNV, ChuyenMon)

DuAn(MaDA, TenDA, DiaDiem)

PhanCongNV(MaNV, MaDA, NgayBD, NgayKT) Hỏi phép tách trên có bảo toàn thông tin không?

Giải

MaNV TenNV ChuyenMon MaDA TenDA DiaDiem NgayBD NgayKT

NhanVien 1 1 1 0 0 0 0 0

DuAn 0 0 0 1 1 1 0 0

PhanCongNV 1 0 0 1 0 0 1 1

MaNV TenNV ChuyenMon MaDA TenDA DiaDiem NgayBD NgayKT

NhanVien 1 1 1 0 0 0 0 0

DuAn 0 0 0 1 1 1 0 0

28

6.3.2. PHÉP TÁCH BẢO TOÀN TẬP PHỤ THUỘC HÀM

Một phần của tài liệu Co so du lieu Chuong 6 ThS Nguyen Vuong Thinh (Trang 26 - 28)

Tải bản đầy đủ (PPTX)

(35 trang)