Chương 5 : LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU
3. Bao đóng của tập phụ thuộc hàm và bao đóng của tập thuộc tính
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→YF╞═ 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 hồn tồ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 tố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 tố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 tố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 tố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+
3.3. Bài tố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 tố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 tốn thành viên tađưa về giải bài tốntìm baođóng của tập thuộc tính.
3.4. Thuật tốn tìm bao đóng của một tập thuộc tính
Thuật tố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}. Tìm baođóng của các tập X = {AC} dựa trên F.
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}