INPUT: Lược đồ quan hệ R = {A1, A2,...,An }, tập phụ thuộc hàm F và phép tách ρ=(R1,..,Rk)
OUTPUT: Kết luận phép tách ρ có phải là mất mát thông tin không? Ta có thể diễn giải lại thuật giải như sau:
BC1: Dựng bảng S gồm n cột và k hàng, cột j ứng với thuộc tính Aj, hàng i ứng với lược đồ Ri.
BC2: Ở vị trí hàng i và cột j, đặt aijnếu Aj thuộc Ri. Nếu không đặt bij.
BC3: Xét mỗi phụ thuộc hàm X -> Y trong F cho đến khi bảng S không còn thay đổi: Lable :Với mỗi phụ thuộc hàm X -> Y trong F, nếu trong bảng S có chứa 2 dòng u, v mà:
u[X] = v[X ] = aij
thì sửa các giá trị tại cột Y như sau: + Nếu u[Y ] = v[Y] = aij thì không sửa + Nếu u[Y] = v[Y] = bij thì không sửa + Nếu u[Y] = aij u[Y] = bij
v[Y] = bij hoặc v[Y] = aij thì sửa bij bằng aij Lặp lại BC3.
BC4: Nếu thu được 1 hàng toàn aij thì phép tách này không mất thông tin, ngược lại phép tách mất thông tin.
Ví dụ:
Cho r = ABCD, F = { A -> B, AC ->D} và phân rã ρ = {(AB), (ACD)}. T1(R) A B C D
R1a21b22a23a24
Với A -> B ta có: T2(R) A B C D R1a11a12b13b14
R1a21a22a23a24
Chúng ta thấy rằng ở bảng T2(R) xuất hiện hàng thứ hai toàn aij nên phép tách ρ bảo toàn thông tin.
Định lý
Trong trường hợp ρ = {R1,R2}, nghĩa là phép tách chỉ có 2 lược đồ con. Để kiểm tra phép tách có bảo toàn thông tin, ta sử dụng định lý sau.
Phép phân rã R thành ρ = {R1(U1), R2(U2)}là bảo toàn thông tin khi và chỉ khi U1? U2→ U1\U2hay U1? U2→ U2\U1