09.01.2013 Views

Cơ sở dữ liệu - e-ptit.edu.vn

Cơ sở dữ liệu - e-ptit.edu.vn

Cơ sở dữ liệu - e-ptit.edu.vn

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chương I: Khái niệm cơ bản về các hệ cơ <strong>sở</strong> <strong>dữ</strong> <strong>liệu</strong><br />

Suy ra X = ACE là khóa.<br />

b) Theo thứ tự L ∩ R = CB<br />

Xét (X - C) + = (ABE) + = ABCDEG = Ω ⇒ X = ABE<br />

(X- B) + = (AE) + = ADEG ≠ Ω.<br />

Vậy X = ABE cũng là là khóa thứ 2 của lược đồ quan hệ.<br />

Như vậy khóa của lược đồ quan hệ trên là K1 = ABE và K2= ABE.<br />

Thuật toán 3.7: Xác định một khoá trong siêu khóa cho trước<br />

Giả sử K là khóa được chứa trong siêu khóa X cho trước. Hiển nhiên K ⊆ X. Mặt khác<br />

Ω \ R ⊆ K ⊆ (Ω \ R ) ∪ (L ∩ R ) Suy ra K ⊆ ( Ω \ R ) ∪ (X ∩ (L ∩ R)).<br />

Như vậy nếu cho trước một siêu khóa X , có thể xác định một khóa được chứa trong nó.<br />

Với thuật toán này thời gian kiểm tra chỉ phụ thuộc vào số phần tử của X ∩ (L∩ R), nghĩa<br />

là thời gian để xác định một khóa trong Y := ( Ω \ R ) ∪ X ∩ (L ∩ R)) nhanh hơn rất<br />

nhiều để xác định một khóa trong X.<br />

Input: : Ω :={ A1 , A2 ,.. , An } ≠ ∅<br />

F := {Lj → Rj ⏐ Lj, Rj ⊆ Ω }<br />

L = ∪ Lj và R = ∪ Rj<br />

Lj ⊆ Ω Rj ⊆ Ω<br />

X ∩ (L ∩ R)) ={ A1 , A2... Ak}<br />

Output: : Xác định một khoá K trong siêu khóa X cho trước của lược đồ quan<br />

hệ.<br />

Phương pháp:<br />

Nếu X = (Ω \ R) suy ra (Ω \ R) là siêu khóa, đồng thời cũng là khoá duy<br />

nhất của lược đồ quan hê s = .<br />

Đặt Y := (Ω \ R) ∪ X ∩ (L ∩ R) = {A1 , A2... Ak}.<br />

X = X ∩ (L ∩ R) = {A1 , A2... Ak} .<br />

Kiểm tra (X \ Aj ) +<br />

Begin<br />

End.<br />

If X = (Ω \ R ) then<br />

Begin<br />

End<br />

X = ( Ω \ R ) ∪ X ∩ (L ∩ R)<br />

For each A ∈ X ∩ (L ∩ R ) do<br />

If ( X - A ) + = Ω then<br />

X = X - A<br />

X là khóa của lược đồ quan hệ s = < Ω , F >.<br />

64

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!