Kiểm tra một tập cho trước có phải là khoá hay không?

Một phần của tài liệu Đề cương bài giảng môn cơ sở dữ liệu (Trang 109 - 110)

1. Định nghĩa các thuật ngữ: cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ

13.3.1.Kiểm tra một tập cho trước có phải là khoá hay không?

Cho K⊆U hỏi rằng K có phải là khoá hay không?

Cách làm: tính K+, nếu K+≠U thì K không là khoá của lược đồ.

nếu K+= U chứng tỏ K là một siêu khoá, để kiểm tra K có phải là khoá không ta lấy mọi tập con thực sự của K, nếu tất cả các tập con thực sự của K đều không là siêu khoá thì chứng tỏ K là khoá, nếu tồn tại một tập con thực sự của K là siêu khoá thì chứng tỏ K không là khoá.

13.3.2.Tìm một khoá của lược đồ quan hệ

Cho một lược đồα= (U, F), hãy tìm một khoá K. Tư tưởngchung:

b1)Trướchết chọn một siêu khoá K

b2) Từ siêu khoá đó kiểm tra xem nó có phải là khoá không

b3) Nếu K là khoá thì dừng thuật toán,ngược lại chuyển bướctiếp theo.

b4) Nếu K cha phải là khoá thì có K1 là tập con thực sự của và lớn nhất của K và K1là siêu khoá, thay K bằng K1và quay trở lại bướcb2.

* Thuật toán tìm một khóa của lược đồ quan hệ:

Input:Lược đồ quan hệ α=(U, F)

Output: Một khoá K của lược đồ Method

- Chọn một siêu khoá K của lược đồ chẳng hạn có thể chọn K=U hoặc K= U\ R∪L với L=∪Li|∀LiRi∈F, R=∪ Ri|∀LiRi∈F - For each attribute A in K Do

If (K-A)+= U Then K:=K-{A} EndIf

EndFor - Return K

Ví dụ: Cho lược đồα=(U,F) Với U=ABCDEGH

F={ABCDE, ACBCG, BDG, ACHHE, CG BDE } và K = ACGH hỏi rằng K có là khoá của lược đồ hay không? K+= ACGH ∪BCG∪HE∪ BDE = U suy ra K là siêu khoá

Các tập con thực sự lớn nhất của U là ACG, CGH, ACH, AGH dễ dàng kiểm tra các tập ACG có (ACH)+= U vậy K không là khoá.

Ví dụ: Cholược đồ quan hệα=(U, F) với U=ABCDEGHK

F={ ADH→BC, GH→BE, D→CG, CH→K} Hãy tìm một khoá của lợc đồ

Chọn siêu khoá K=ACDGH

Loại A ta có (K-A)+ = (CDGH)+ = BCDEGHK ≠ U nên A không thể loại được

Loại C ta có (K-C)+= (ADGH)+= ABCDEGHK=U Nên gán K:=K–{C}= ADGH

Loại D ta có (K-D)+ = (AGH)+=ABEGH≠U nên không loại được D Loại G ta có (K-G)+ = (ADH)+= ABCDEGHK=U

Nên gán K=K- {G} = ADH

Loại H ta có (K-H)+=(AD)+=ACDG≠U nên không loại đượcH Vậy khoá K=ADH

Nhận xét : Ta cha có một thuật toán nào để tìm tất cả các khoá của lược đồ, do vậy ta phải tìm cách tiếp cận khác nhau đối với khoá.

Một phần của tài liệu Đề cương bài giảng môn cơ sở dữ liệu (Trang 109 - 110)