Bao đóng của tập phụ thuộc hàm và bao đóng của tập thuộc tính

Một phần của tài liệu Giáo trình cơ sở dữ liệu (nghề công nghệ thông tin cao đẳng) (Trang 61 - 64)

Mục tiêu:Trình bày khái niệm về bao đóng của tập phụ thuộc hàm và bao đóng

tập thuộc tính, các giải thuật xác định bao đóng tương ứng với tập phụ thuộc hàm và

tập thuộc tính đã được xác định.

3.1. Bao đóng của tập phụ thuộc hàm F

Bao đóng của tập phụ thuộc hàm F, ký hiệu là F+, là tập hợp tất cả các phụ

thuộc hàm suy diễn lôgic từ F:

F+ = {X→YF╞═ X→Y}

Hay nói cách khác: Bao đóng (closure) của tập phụ thuộc hàm F (ký hiệu là F+) là tập hợp tất cả các phụ thuộc hàm có thể suy ra từ F dựa vào các tiên đề

Armstrong. Rõ ràng F ⊆ F+

Ví dụ: Cho R=(A,B,C) vàF = {A→B, B→C}. Khi đó bao đóngF+ gồm các phụ thuộc hàm X→Y thoả

(i) X chứa A, Y bất kỳ:

A,B,C→A,B,C; A,B,C→A,B; A,B,C→A,C; A,B,C→B,C; A,B,C→A; A,B,C→B; A,B,C→B; A,B,C→C; A,B→A,B,C; A,B→A,B; A,B→A,C; A,B→B,C; A,B→A; A,B→B; A,B→B; A,B→C; A,C→A,B,C; A,C→A,B; A,C→A,C; A,C→B,C; A,C→A; A,C→B; A,C→B; A,C→C; A→A,B,C; A→A,B; A→A,C; A→B,C; A→A; A→B; A→B; A→C;

(ii) X chứa B nhưng không chứa A, Y không chứa A: BC→BC; BC→B; BC→C B→BC; B→B; B→C (iii) C→C

Về mặt lý thuyết ta hoàn toàn có thể xây dựng thủ tục tính bao đóng F+ của tập phụ thuộc hàmF, nhưng trên thực tế bài toán xác định F+ là không khả thi vì với số

thuộc tính và phụ thuộc hàm lớn sẽ dẫn đến bùng nổ tổ hợp.

Thay vào đó chúng ta sẽ xem xét một bài toán khác: "Kiểm tra xem một phụ

thuộc hàm có thuộc bao đóng F+ hay không ?". Bài toán này gọi là bài toán thành viên. Bài toán thành viên thiết thực hơn bài toán tính bao đóng vì trong thực tế rất hiếm khi phải tìm tất cả các phụ thuộc hàm suy diễn lô-gic từF.

Bài toán thành viên liên quan mật thiết với khái niệm bao đóng của tập thuộc tính.

3.2. Bao đóng của tập thuộc tính X

Bao đóng của tập thuộc tính X⊂R (đối với tập phụ thuộc hàm F), ký hiệu là XF+ (X+), là tập hợp tất cả các thuộc tính phụ thuộc hàm vào X:

X+ = {A X→A∈F+}

Từ định nghĩa dễ dàng suy ra: X⊂X+ và X→Y ⇔ Y⊂X+. Nghĩa là X+ là tập thuộc tính lớn nhất phụ thuộc hàm vào X.

Ví dụ: Cho R(ABC) và F = {A→B, B→C}. Khi đó ta dễ dàng thấy bao đóng của thuộc tính B là B+ = {B,C} vì B→{B,C} và B không xác định A.

3.3. Bài toán thành viên

Qua phần trên ta nhận thấy X+ được định nghĩa thông qua F+. Vấn đề nảy sinh khi nghiên cứu lý thuyết CSDL là: Cho trước tập các phụ thuộc hàm F và một phụ thuộc hàm f, bài toán kiểm tra có hay không f ∈ F+ gọi làbài toán thành viên.

Để giải quyết bài toán bài toán thành viên thật sự khôngđơn giản; vì mặc dù F là rất nhỏ nhưng F+ thì có thể rất lớn. Tuy nhiên ta có thể giải bằng cách tính X+ và so sánh X+ với tập Y. Dựa vào tính chất X → Y F+ Y X+ , ta có ngay câu trả lời X → Y ∈ F+ hay không ? Như vậy thay vì giải bài toán thành viên tađưa về giải bài toántìm baođóng của tập thuộc tính.

3.4. Thuật toán tìm bao đóng của một tập thuộc tính

Thuật toán tìm bao đóng với độ phức tạp O(N2), với N là số lượng thuộc tính

của lượcđồ quan hệ Q.

Dữ Liệu Vào Q, F, X ⊆ Q+

Dữ Liệu Ra X+

Ví dụ:

Cho lượcđồ quanhệ Q(ABCDEGH) vàtập phụ thuộc hàm F = {B → A, DA → CE, D → H, GH → C, AC → D}.

Giải: - X+ = AC - Đặt Temp = X+ + Xét AC → D, có AC ⊆ X+: X+ = X+ ∪D = ACD. Loại AC → D khỏi F. Lặp bước 2 + Xét DA → CE, có DA ⊆ X+: X+ = X+ ∪CE = ACDE. Loại DA → CE khỏi F. Lặp bước 2 + Xét D → H, có D ⊆ X+: X+ = X+ ∪H = ACDEH. Loại D → H khỏi F Lặp bước 2

Vì các phụ thuộc hàm U→V còn lại không thỏa điều kiện U ⊆ X+ nên X+ = Temp. Thuật toán dừng.

Vậy X+ = {ACDEH}

Một phần của tài liệu Giáo trình cơ sở dữ liệu (nghề công nghệ thông tin cao đẳng) (Trang 61 - 64)