Tìm khóa mờ của một quan hệ

Một phần của tài liệu Cơ sở dữ liệu mờ và ứng dụng (Trang 33)

Sử dụng khái niệm bao đóng của tập thuộc tính đối với tập phụ thuộc hàm mờ để tìm khóa mờ của một quan hệ mờ. Phƣơng pháp đơn giản nhất và chi phí thuật toán cao nhất là vét cạn, sẽ phân tích bao đóng của tất cả các tổ hợp của các thuộc tính trong quan hệ và kiểm tra xem bao đóng đó có chứa tất cả các thuộc tính hay không. Điều này có nghĩa là tổ hợp thuộc tính nào mà bao đóng của nó chứa tất cả các thuộc tính của quan hệ, thì tổ hợp thuộc tính đó là khóa mờ, với độ mạnh là giá trị nhỏ nhất trong các độ thuộc trong danh sách bao đóng. Tuy nhiên, cũng không cần phải xem xét bao đóng của tất cả các tổ hợp các thuộc tính. Vì nếu một

thuộc tính nào đó là một phần của khóa thì nó phải nằm trong vế trái của một phụ thuộc hàm nào đó, hoặc nó không xuất hiện trong bất kỳ phụ thuộc hàm nào. Sau đây là thuật toán tìm khóa mờ của một quan hệ đã cho với tập phụ thuộc hàm mờ.

Thuật toán 2.2: Tìm khóa mờ của một quan hệ

Vào: Quan hệ R, tập phụ thuộc hàm mờ F đúng trên R

Ra: Tìm ra các khóa mờ của R

Thuật toán

1. Tìm ra tất cả các thuộc tính có xuất hiện ở vế trái của một phụ thuộc hàm mờ nào đó trong F

2. Tìm tất cả các thuộc tính không xuất hiện trong bất kỳ phụ thuộc hàm mờ nào của F.

3. Lấy hợp của hai tập tìm đƣợc ở bƣớc 1 và 2, ta đƣợc danh sách AttributeList.

4. Bắt đầu với những tổ hợp thuộc tính đơn (chỉ có một thuộc tính), tăng dần kích thƣớc của tổ hợp của các thuộc tính trong danh sách AttributeList.

 Nếu tổ hợp chứa một khóa đã tìm thấy trƣớc đó, tiếp tục với tổ hợp khác.

 Tìm bao đóng của tổ hợp thuộc tính.

 Nếu bao đóng vừa tìm đƣợc chứa tất cả các thuộc tính của quan hệ, đặt  là số nhỏ nhất trong tất cả các độ mạnh có trong bao đóng, lúc này bao đóng vừa tìm đƣợc là khóa mờ với độ mạnh . Thêm nó vào danh sách khóa mờ.

Với thuật toán này, có thể tìm tất cả các khóa ứng viên

Ví dụ 2.5: Xét lại ví dụ 2.3. Áp dụng thuật toán 2.2 ở trên để tìm tất cả các khóa mờ của quan hệ R=(A,B,C,D) với các phụ thuộc hàm A 0.6 BA 0.8 CD.

Tập tất cả các thuộc tính có xuất hiện trong vế trái của các phụ thuộc hàm là {A}. Không có thuộc tính nào không xuất hiện trong bất kỳ phụ thuộc hàm nào. Do đó, AttributeList = {A}. Do chỉ có một thuộc tính trong AttributeList nên ta chỉ phải tính bao đóng của một tổ hợp thuộc tính đơn, tổ hợp {A}. Theo ví dụ 2.2, ta đã tính đƣợc bao đóng này là {(A,1),(B,0.6),(C,0.8),(D,0.6). Vì bao đóng này chứa tất cả các thuộc tính của quan hệ, nên nó là khóa, với độ mạnh là 0.6, đó là giá trị nhỏ nhất trong các giá trị 0.6, 0.8 và 1.

Một phần của tài liệu Cơ sở dữ liệu mờ và ứng dụng (Trang 33)