- Nếu F├f X →tY thì t là cận dưới lớn nhất (glb) của một số các kiểu thờ
i Y Áp dụng T4, ta có: F├ X →tY Định lý được chứng mnh □
2.3.5. Bao đóng của tập thuộc tính
Cho F là tập các TFD. Để tìm tất cả các TFD được suy ra từ F ta phải tiến hành tìm F+. Với việc làm này thường phải mất rất nhiều thời gian vì thực tế cho thấy rằng tập F+ lớn hơn rất nhiều so với F.
Trên thực tế, chúng ta cũng khơng cần thiết phải tính tất cả các TFD được suy ra từ F mà chỉ cần biết một TFD X →tY nào đó có được suy ra từ F hay
không?
Định nghĩa 2.22. (Bao đóng của các thuộc tính)
Cho F là tập hữu hạn các TFD và X là tập hữu hạn các thuộc tính. Khi đó, bao đóng của X đối với F, ký hiệu là X+, được xác định như sau:
X+ = {(B, t) | X →tB ∈ F+ và X →t’B ∈ F+: t ≺ t’}
Nhận xét: Do F là hữu hạn nên X+ là hữu hạn.
Mệnh đề 2.1.
Cho F là tập hữu hạn các TFD, X là tập hữu hạn các thuộc tính. Khi đó, F╞ X →tB nếu và chỉ nếu:
∃{(B, t1), ..., (B, tm)} ⊆ X+ sao cho t ≼C{t1, ..., tm}
Theo mệnh đề 2.1, ta có thể kiểm tra được TFD X →tB có được suy ra từ F hay khơng. Điều này có thể thực hiện dễ dàng bằng cách kiểm tra xem (B, t) có
thuộc X+
F hay khơng, mà việc tính X+
F lại khơng phức tạp lắm, có thể được thực hiện bởi thuật tốn sau:
Thuật tốn 2.1. (Tính bao đóng của các thuộc tính)
• Vào: + Tập hữu hạn các thuộc tính U.
+ Tập phụ thuộc hàm theo thời gian F. + X ⊆ U.
• Ra: X+
F
• Phương pháp:
+ Bước 1. X(0) = {(A, tTop) | A ∈ X}
+ Bước 2. Lần lượt tính X(i+1) dựa vào X(i) như sau:
Với mỗi TFD A1 ... Ak →t B1 ... Bm ∈ F sao cho {(A1, t1), ..., (Ak, tk)} ⊆ X(i) ta tính tập {(Bj, t’) | j = 1,m; t’ = glb(t1, ..., tk, t )}.
Cho f1, ..., fr là tất cả các TFD trong F thoả điều kiện trên và các tập Y1, ..., Yr là các tập ta tính được tương ứng, khi đó:
X(i+1) = X(i) ∪ Y1 ∪ ... ∪ Yr Bước 2 được lặp lại cho đến khi X(i+1) = X(i)
Kết quả: X+
F = X(i) \ {(B, t’) ∈ X(i) | ∃t’’ (B, t’’) ∈ X(i) với t’ ≺ t’’}
Nhận xét: Vì X = X(0) ⊆ X(1) ⊆ ... ⊆ U và do U là hữu hạn nên thuật toán 2.1 sẽ được dừng lại sau hữu hạn bước thực hiện.
Ví dụ 2.20. Cho M = (R, Ngày, φ) với R = (A, B, C)
F = {A →Ngày B, B →Ngày C, B →ThángC, B →Tháng A}
1. Với X = AB. Tính X+
F ?
X(0) = {(A, tTop), (B, tTop)}
X(1) = X(0) ∪ (B, Ngày) ∪ (C, Ngày) ∪ (C, Tháng) ∪ (A, Tháng)
= {(A, tTop); (B, tTop); (B, Ngày); (C, Ngày); (C, Tháng); (A, Tháng)} X(2) = X(1)∪ (A, Ngày) = {(A, tTop); (B, tTop); (B, Ngày); (C, Ngày);
(C, Tháng); (A, Tháng); (A, Ngày)} X(3) = X(2)
Vậy, X+
F = {(A, tTop); (B, tTop); (C, Tháng)}