7. SAT (FD(SAT(F)) )= SAT(F) 8 FD(SAT(FD( ))) = FD()
1.2.6. Khóa của lược đồ quan hệ
Khóa của lược đồ quan hệ
Đ ị n h n g h ĩ a
Cho LĐQH a = (U, F). Tập thuộc tính K U được gọi là khoá của LĐQH a
nếu
(i) K + = U
(ii) A K: (K \A)+ U
Hai điều kiện trên tương đương với (i') KU
(ii') A K: K\A↛U
Nếu K thoả điều kiện (i) (hoặc (i')) thì K được gọi là một siêu khoá.
Thuộc tính AU được gọi là thuộc tính khoá (nguyên thuỷ hoặc cơ sở) nếu A
có trong một khoá nào đấy. A được gọi là thuộc tính không khoá (phi nguyên
thuỷ hoặc thứ cấp) nếu A không có trong bất kỳ khoá nào.
Cho LĐQH a = (U, F). Ta ký hiệu UK là tập các thuộc tính khóa của a và U0 là
tập các thuộc tính không khóa của a. Dễ thấy UK |Uo là một phân hoạch của U.
C h ú ý
Trong một số tàì liệu thuật ngữ khoá được dùng theo nghĩa siêu khoá và thuật
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Thuật toán tìm một khóa của LĐQH
Tư tưởng: Xuất phát từ một siêu khóa K tùy ý của LĐQH, duyệt lần lượt các thuộc tính A của K, nếu bất biến (K\A)+ = U được bảo toàn thì loại A khỏi K. Có thể thay
kiểm tra (K\A)+ = U bằng kiểm traA (K\A)+.
Algorithm Key Format: Key(U,F)
Input: - Tập thuộc tính U
- Tập PTH F
Output: - Khóa K U thỏa
(i) K+ = U
(ii)AK: (K\A)+ U Method
K:= U;
for each attribute A in U do if A in Closure(K\A,F) then K:=K\A endif; endfor; return K; end Key.
Thuật toán duyệt n thuộc tính, với mỗi thuộc tính thực hiện phép lấy bao đóng với độ phức tạp n2m. Tổng hợp lại, độ phức tạp tính toán của thuật toán là O(n3
m).
Một số tính chất của khóa
Các tính chất đơn giản
Cho LĐQH (U,F). Khi đó
1. K U là một khoá khi và chỉ khi U phụ thuộc đầy đủ vào K.
2. Hai khoá khác nhau của một LĐQH không bao nhau.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Đ ị n h l ý
( Đặc trưng của các thuộc tính khóa [7])
Cho K là một khóa của LĐQH a = (U,F). Khi đó với mọi tập con X của K ta có: X+ K=X.
C h ứ n g m i n h
Vì X X+ và X K nên X X+K. Ta cần chứng minh X+K X. Giả sử
AX+K và AX. Ta xét tập M = K\A. Dễ thấy X M. Ta có, theo tính chất đồng biến của bao đóng, AX+ M+. Từ đây suy ra K M+, do đó, theo tính chất lũy đẳng của bao đóng và tính chất khóa của K ta có, U = K+ M++ = M+, tức là M là
bộ phận thực sự của khóa K lại đồng thời là siêu khóa, trái với định nghĩa khóa. Vậy
A X ■
Đ ị n h l ý
(Công thức tính giao các khóa)
Cho LĐQH a = (U,F) với n thuộc tính trong U và m PTH trong F. Gọi UI là giao các khóa của a. Khi đó có thể xác định giao các khóa bằng một thuật toán tuyến tính theo mn qua công thức
F F R L I U R L U \ ( \ ) C h ứ n g m i n h
Trước hết để ý rằng các PTH LR và L(R\L) là tương đương, do đó ta có thể giả thiết rằng mọi PTH trong F đều có dạng LR, LR = , tức là giả thiết
rằng tập PTH F được cho dưới dạng thu gọn tự nhiên. Do giả thiết này ta có R\L=R.
Dễ nhận thấy, theo công thức tính UI trong định lý, UI là tập các thuộc tính không có mặt trong vế phải của mọi PTH trong F, do đó chúng phải có mặt trong mọi
khóa. Giả sử A là một thuộc tính có trong vế phải của PTH LAR' nào đó của F.
Ta chứng minh A sẽ không xuất hiện trong một khóa K nào đấy của a. Thật vậy, xét
tập X = U\A. Dễ thấy X L và X+ = XAR' = U và do đó X là siêu khóa. Từ siêu khóa X không chứa A ta lấy ra được một khóa K không chứa A ■
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Thuật toán xác định giao các khóa trong LĐQH Algorithm KeyIntersec
Format: KeyIntersec(U,F) Input: - Tập thuộc tính U
- Tập PTH F
Output: - Giao các khóa
F F R L L R U M \ ( \ ) Method M:=U; for each FD LR in F do M:= M\(R\L); endfor; return M; end KeyIntersec.
Theo thuật toán trên, để tính giao các khóa ta cần thực hiện m lần lặp ứng với
số lượng PTH trong tập F. Trong mỗi lần lặp, phép toán trên tập hợp n phần tử có
độ phức tạp O(n) do đó độ phức tạp của thuật toán tính giao các khóa, KeyIntersec
là O(mn). Tích mn chính là chiều dài của biểu diễn LĐQH a = (U,F) tức là chiều dài của dữ liệu vào trong thuật toán.
Đ ị n h l ý
(Định lý về khóa duy nhất, Hồ Thuần, Lê Văn Bào)
Cho LĐQH a = (U,F). Gọi UI là giao của các khóa trong a. Khi đó a có một khóa duy nhất khi và chỉ khi UI
+
= U. C h ứ n g m i n h
Nếu UI + = U thì UI là siêu khóa. Vì UI là giao của các khóa đồng thời lại là siêu khóa nên a không thể còn khóa nào khác ngoài UI. Ngược lại, nếu a chỉ có một
khóa duy nhất K thì giao của các khóa đương nhiên là UI = K, và do đó, theo tính
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
T h í d ụ
Cho LĐQH a = (U, F), U = ABCDE, F = {ABC, ADB, BD}.
Ta có, giao của các khóa là UI = ABCDE\BCD = AE. UI+ = (AE)+ = AE U
nên a có hơn một khóa. Vì UI là giao các khóa nên ta có thể bổ sung cho UI một số thuộc tính để thu được các khóa. Dễ xác định được a có hai khóa là K1 = ABE và
K2= ADE. Ta còn có, tập các thuộc tính khóa là UK = ABDE, tập các thuộc tính không khóa là Uo = C.