Thuật Toán và Ví dụ tìm tất cả các khóa trong lược đồ quan hệ

Đầu tiên, chúng ta cần hiểu một vài khái niệm :

Ta gọi :

  • Q là tập cơ sở dữ liệu
  • F là tập phụ thuộc hàm
  • L(left) : là các thuộc tính chỉ xuất hiện bên trái
  • R(right) : là các thuộc tính chỉ xuất hiện ở vế phải
  • S(supperkey) : là tập các siêu khóa
  • K(key) : là tập các khóa

Tập thuộc tính nguồn (TN) : bao gồm các thuộc tính chỉ xuất hiện ở vế trái, không xuất hiện ở vế phải của F( tập phụ thuộc hàm) và các thuộc tính không xuất hiện ở cả vế trái và vế phải của F.

Vậy TN = Q \ R

Nghĩa là ta lấy Q trừ cho R để tìm thuộc tính chỉ xuất hiện ở L và các thuộc tính không xuất hiện ở cả L và R

Ví dụ : Cho tập cơ sở dữ liệu Q = {A,B,C,D,E}    L = {A,B}    R = {B,C,E}

TN = Q \ R = {A,D}

Tập thuộc tính đích (TĐ) : Bao gồm các thuộc tính chỉ xuất hiện ở R, không xuất hiện ở L.

Vậy TĐ = R \ L

Ví dụ : Cho L = {A,B,C,D,E}     R = {E,F,G,H}

TĐ = {F,G,H}

Tập thuộc tính trung gian (TG) : Chứa các thuộc tính xuất hiện ở cả L và R

Vậy TG = L Giao R (Giao của 2 tập hợp để lấy thuộc tính chung của 2 Tập hợp đó)

Ví dụ : Cho L = {A,B,C,D,E}   R = {D,E,F,G}

Vậy TG = L /cap R = {D,E}

Thuật toán :

Bước 1 :

Tìm tập thuộc tính nguồn TN và Tập thuộc tính trung gian TG, bằng các ví dụ ở trên thì các bạn có thể dễ dàng tìm thấy 2 tập thuộc tính này.

Bước 2 :

Nếu TG = 0

Thì K(Key) = TN, và kết thúc thuật toán, xuất ra K của tập cơ sở dữ liệu <Q,F>

Ngược lại, nếu TG # 0

Thì qua bước 3

Bước 3 :

Tìm tất cả các tập con Xcủa TG

Bước 4 :

Tìm Siêu khóa(Si) bằng cách với mọi Xi , nếu (TN U Xi)+ = Q thì khi đó Si = TN U Xi

Bước 5 :

Tìm Khóa(Ki) bằng cách loại bỏ các siêu khóa không tối thiểu

Với mọi SSj thuộc S

Nếu Si chứa trong Sthì loại bỏ Sj ra khỏi tập siêu khóa. Khi đó, tập S còn lại chính là tập khóa cần tìm

Ví dụ :

Ta có S = {AB, ABC, ED, EDF}

Ta thấy AB chứa trong ABC, ED chứa trong EDF vậy chúng ta cần phải loại bỏ ABC và EDF.

Vậy S = {AB,ED} chính là tập khóa cần tìm

Chúng ta có một ví dụ mẫu như sau :

Ví dụ : Cho một tập cơ sỡ dữ liệu R = <Q, F>

Với Q = {ABC}     F = {AB –> C, C -> A}. Tìm tất cả các khóa thuộc tập cơ sở dữ liệu trên.

Bài Làm :
L = {ABC}      R = {CA}

TN = {B}        TG = {AC} # 0 nên ta làm tiếp bước 3

Ta có tập con Xi của tập TG = {0, A,C,AC}

Ta lấy từng thuộc tính thuộc tập con Xi của tập TG hợp với TN ta có các thuộc tính sau :

S1 = TN U 0 = B Ta có B+ = B # Q nên S1 = A không là siêu khóa

S2 = TN U A = AB Ta có AB+ = ABC = Q nên S2 = AB là siêu khóa

S3 = TN U C = BC Ta có BC+ = ABC = Q nên S3 = BC là siêu khóa

S4 = TN U AC = ABC Ta có ABC+ = ABC = Q nên S4 = ABC  là siêu khóa

Vậy ta có tập siêu khóa S = {AB,BC,ABC}.

Tuy nhiên, vì AB chứa trong ABC và BC chứa trong ABC nên loại bỏ siêu khóa ABC ra khỏi tập siêu khóa

Vậy ta có, tập khóa K = {AB,BC} là khóa của lượt đồ quan hệ

 

 

Bình luận về bài viết này

Start a Blog at WordPress.com.

Up ↑