Khóa của lược đồ quan hệ

Một phần của tài liệu Luận văn:ứng dụng phép dịch chuyển lược đồ quan hệ trong cơ sở dữ liệu docx (Trang 32 - 36)

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\AU

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 aU0

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 : X+ K=X.

C h ứ n g m i n h

X X+ X K nên X X+K. Ta cần chứng minh X+K X. Giả sử

AX+KAX. 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

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 LRL(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 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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.

Một phần của tài liệu Luận văn:ứng dụng phép dịch chuyển lược đồ quan hệ trong cơ sở dữ liệu docx (Trang 32 - 36)