1. Phụ thuộc hàm Khái niệm
2.2.2. Thuật tốn tìm tất cả các khĩa
Tập thuộc tính nguồn, ký hiệu là N, là tập chứa những thuộc tính chỉ xuất hiện ở vế trái, khơng nằm bên vế trái và vế phải của mọi phụ thuộc hàm
Tập thuộc tính trung gian, ký hiệu là TG, là tập chứa những thuộc tính vừa xuất hiện ở vế trái, vừa xuất hiện ở vế phải trong các phụ thuộc hàm
Thuật tốn
Bước 1: Tính tập nguồn N. Nếu NF+ =Q+thì chỉ cĩ 1 khố là N, ngược lại qua bước 2 Bước 2: Tính tập trung gian TG. Tính tập tất cả các tập con Xi của tập TG.
Bước 3: Tìm tập S chứa mọi siêu khĩa Si:
Với mỗi Xi, nếu (N∪Xi)F+ =Q+ thì Si =(N∪Xi)
Bước 4: Loại các siêu khĩa khơng tối tiểu:
S S Si j∈ ∀ , , nếu Si ⊂Sjthì S =S−Sj A F1 B F2 C D F3 E F4 H G F5 F6
Ví dụ. Cho lược đồ quan hệ R(A, B, C) và tập phụ thuộc hàm F={ ABỈC, CỈA}
Tìm mọi khĩa của R.
Bước 1: N = {B}, NF+ =B≠Q+
Bước 2: TG = {AC}, tập các tập con trung gian là CTG ={∅,A,C,AC}
Bước 3: N Xi N∪Xi (N∪Xi)+ (N ∪Xi)+ =Q+? B ∅ B B Sai B A BA BAC Đúng B C BC BCA Đúng B AC BAC BAC Đúng Như vậy tập siêu khố S ={BA,BC,BAC}
Bước 4: Loại các siêu khĩa khơng tối tiểu:
Nhận thấy rằng BA⊂BACnên loại siêu khĩa BAC. Tập các khĩa cịn lại là S ={BA,BC}
Cải tiến thuật tốn
Nhận thấy rằng ở bước 3, khi xét tập một con Xi, nếu (N∪Xi)+ =Q+, khi đĩ N∪Xi là một khố. Trong trường hợp này nếu xét tiếp các tập Xj:Xi⊂ Xj, thì hiển nhiên
(N∪Xj)+ =Q+, và cuối cùng siêu khố N∪Xj cũng sẽ bị loại ở bước 4. Hơn nữa, bước tính tập con đầu tiên là rỗng cũng khơng cần tính.
Do đĩ, khi tính bao đĩng của tập thuộc tính, khơng tính Xi=∅ và nếu (N∪Xi)+ =Q+, thực hiện loại bỏ các tính tốn cho các trường hợp Xj:Xi⊂ Xj. Khi đĩ kết thúc thuật tốn tại bước 3, khơng cần thực hiện bước 4 vì tất cả các khố nhận được ở bước 3 đều là tối tiểu.
3. Ràng buộc tồn vẹn