Kiểm tra tính bảo toàn phụ thuộc trong phép phân tách

Một phần của tài liệu Lý thuyết chuẩn hóa của cơ sở dữ liệu mờ và ngôn ngữ SQL mờ (Trang 59)

Trong phần thảo luận về 3NF mờ, 2 thuật toán được đưa ra để thực hiện phân tách thành 3NF mờ, một thuật toán đạt được tính bảo toàn phụ thuộc, và một thuật toán đảm bảo tính có kết nối không mất thông tin. Thuật toán phân tách thành BCNF mờ cũng đảm bảo tính có kết nối không mất thông tin. Tính chất bảo toàn phụ thuộc của phép phân tách trong mô hình dữ liệu quan hệ mờ được nghiên cứu chi tiết ở [14]. Phần này trình bày một thuật toán kiểm tra tính bảo toàn phụ thuộc của phép phân tách.

Thut toán 2.12. Thut toán kim tra tính bo toàn ph thuc

Vào: Mt phép phân tách ρ={R1, R2, ..., Rk} và tp các ph thuc m F.

Ra: Phép phân tách ρ có bo toàn ph thuc F hay không.

Phương pháp:

Vi mi ffd trong F, X→α Y, trong đó X= X1, X2, ...,Xm

1) Xây dng mt danh sách bao đóng bc cu ZList, khi to là tt c các thuc tính vế trái ca ffd, X, vi độ mnh cc đại.

ZList ={(X1,1),(X2,1), .... ,(Xm,1)} 2) While (true)

i. NewZList ZList

iii.Vi mi quan h phân tách Ri (i=1,..,k)

+ Thiết lp li Domain (Domain:=φ)

+ Vi mi phn t ca NewZList

Nếu thuc tính ca phn t này nm trong Ui, trong

đó Ui là tp thuc tính ca Ri, thêm thuc tính này vào Domain.

+ Tìm tp bao đóng ca Domain, ZListi

+ Vi mi phn t ca ZListi ,

Nếu thuc tính ca phn t này nm trong Ui, thêm phn t này vào TListi

+ Đưa TListi vào NewZList, s dng phép hp m. iv. Nếu ZList = NewZList, thoát khi vòng lp

v. Ngược li, ZList NewZList

3) Nếu tt c các thuc tính trong Y nm trong ZList vi độ mnh α hoc ln hơn, thì tính bo toàn ph thuc không b vi phm, tiếp tc vi các ffd khác

4) Ngược li, không bo toàn ph thuc, thoát

Ví d 2.16. Cho quan h R với tập các thuộc tính {A, B, C}, các quan h

phân tách R1 =(A, B) và R2=(B, C), và các ffd lần lượt là A →0.9 B và B →0.7

C. Áp dụng thuật toán 2.12 để kiểm tra tính bảo toàn phụ thuộc. Với ffd đầu tiên A →0.9 B, khởi tạo tập bao đóng bắc cầu của A là

ZList ={(A, 1)}

Vi quan h R1 (i=1) Domain = {A} ZList1= {(A, 1), (B, 0.9), (C, 0.7)} TList1= {(A, 1), (B, 0.9)} NewZList = {(A, 1), (B, 0.9)} Vi quan h R2 (i=2) Domain = {B} ZList2= {(B, 1), (C, 0.7)} TList2= {(B, 1), (C, 0.7)} NewZList = {(A, 1), (B, 0.9), (C, 0.7)} Bởi vì ZList NewZList, ZList {(A, 1), (B, 0.9), (C, 0.7)} Ở lần lặp thứ 2, ZList=NewZList, thoát khỏi vòng lặp, chúng ta thấy rằng thuộc tính vế phải, B, xuất hiện trong ZList với độ mạnh 0.9, do vậy tính bảo toàn phụ thuộc không bị vi phạm.

Tiếp tục với ffd thứ 2, B →0.7 C. Thực hiện tương tự, cuối cùng ta có

ZList={(B, 1), (C, 0.7)} và vì thuộc tính C xuất hiện trong ZList với độ mạnh 0.7, tính bảo toàn phụ thuộc không bị vi phạm.

Vì vậy, phép phân tách R thành R1 và R2 là bảo toàn phụ thuộc.

Một phần của tài liệu Lý thuyết chuẩn hóa của cơ sở dữ liệu mờ và ngôn ngữ SQL mờ (Trang 59)

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

(105 trang)