H-íng dÉn «n tËp CSDL quan hÖ Tµi liÖu tham kh¶o Trang 27 DẠNG 7: TÌM KHOÁ TỐI THIỂU CỦA QUAN HỆ Bài toán: Cho quan h R(U, F). Hãy tìm một khoá tối thiểu của R. Kiến thức liên quan: Cho quan hệ R(U, F), X ⊆ U. X được gọi là khoá của R nếu X + ≡ U. X được gọi là một khoá tối thiểu của R nếu: X là khoá của R và X tối thiểu (tức không tồn tại một tập con thực sự nào của X mà tập con đó cũng là khoá của R). Giải thuật tìm khoá tối thiểu của R: B1: Đặt K 0 = {U} B2: Tính K 1 = K 0 ∪ Z nếu ∃ Y → Z mà Y ∈ K 0 . Tính K i = K i-1 ∪ Z nếu ∃ Y → Z mà Y ∈ K i-1 Lặp cho tới khi K i ≡ K i-1 B3: Kết luận K i là một khoá tối thiểu của R. Ví dụ: Cho quan hệ R(U, F): U = {A, B, C, D, E, G, H} Và F = {AB →C, B → DE, C → EG, G → B, E → H} Tìm một khóa tối thiểu của quan hệ R. Đặt K 0 = {A,B,C,D,E,G,H} K 1 = {ABCDEG} vì E → H và E ∈ K 0 K 2 = {ABCD} vì C → EG và B ∈ K 1 K 3 = {ABC} vì B → D và B ∈ K 2 K 4 = {AB} vì AB → C và AB ∈ K 3 K 5 ≡ K 4 Vậy {AB} là một khóa tối thiểu của R. Chú ý: Với một quan hệ R(U, F) cho trước có thể tồn tại nhiều khóa tối thiểu khác nhau, tùy thuộc vào thứ tự loại bỏ các thuộc tính trong giải thuật. Chẳng hạn, với ví dụ trên, ta có thể thu được một khóa khác bằng cách loại B đi ngay từ đầu: Đặt K 0 = {A,B,C,D,E,G,H} K 1 = {ABCDEG} vì E → H và E ∈ K 0 K 2 = {ACDEG} vì G → B và G ∈ K 1 K 3 = {ACD} vì C → EG và C ∈ K 2 K 4 ≡ K 3 Vậy {ACD} là một khóa tối thiểu của R. Ta thấy {ACD} có nhiều thuộc tính hơn {AB} nhưng nó vẫn là khóa tối thiểu. Điều này cũng dễ hiểu do {ACD} + trùng với U nên nó là khóa của R. Mặt khác nó không chứa một tập con nào cũng là khóa của R nên nó tối thiểu. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. . tËp CSDL quan hÖ Tµi liÖu tham kh¶o Trang 27 DẠNG 7: TÌM KHOÁ TỐI THIỂU CỦA QUAN HỆ Bài toán: Cho quan h R(U, F). Hãy tìm một khoá tối thiểu của R. Kiến. là một khoá tối thiểu của R. Ví dụ: Cho quan hệ R(U, F): U = {A, B, C, D, E, G, H} Và F = {AB →C, B → DE, C → EG, G → B, E → H} Tìm một khóa tối thiểu của