CHƯƠNG 6 : LÝ THUYẾT VỀ THIẾT KẾ CƠ SỞ DỮ LIỆU
6.1. Phụ thuộc hàm (Functional Dependencies)
6.1.2.3. Khóa của lược đồ quan hệ
Định nghĩa: Cho lược đồ quan hệ R(U) với U={A1,A2,…,An} và tập phụ thuộc hàm
F, X ⊆ U. Ta nói X là m ột khóa của R nếu thỏa 2 điều kiện sau:
(1) X → U∈F+ nghĩa là X xác định hàm tất cả các thuộc tính (các phụ thuộc hàm
này thuộc F hoặc được suy diễn logic từ F)
(2) Không t ồn tại Y ⊂ X sao cho Y ¹ ∅ mà Y → U∈F+
Muốn chứng minh X là khóa c ủa R, phải thực hiện các bước sau:
Chứng minh X → U∈F+ Û X+=U
Ví dụ 6.5: Cho lược đồ quan hệ R(A,B,C,D,E) và tập phụ thuộc hàm F = {A→B, C→E,
D→C, EB→D}. Chứng minh rằng AD là một khóa của R.
Theo thuật tốn tìm bao đóng ta có: AD+=ABCDE = U. Và mọi tập con khác rỗng của
AD đều có bao đóng khác U, Thật vậy ta có A+=AB, D+= CDE
Suy ra tập thuộc tính AD là một khóa của R.
Muốn tìm khóa của một lược đồ quan hệ ta dựa vào thuật tốn tìm khóa.
Có 3 thuật tốn tìm khóa:
– Thuật tốn tìm khố dựa trên đồ thị:
Để tìm khóa dựa trên đồ thị chúng ta sẽ biểu diễn lược đồ quan hệ R(U) bằng đồ thị có hướng như sau:
+ Mỗi nút của đồ thị là tên của một thuộc tính trong R
+ Nút trung gian là nút thể hiện tập gồm nhiều thuộc tính, ký hiệu là
+ Cung nối 2 thuộc tính A, B thể hiện phụ thuộc hàm A→B
+ Thuộc tính mà chỉ có các mũi tên đi ra (tức là chỉ nằm trong vế trái của các phụ thuộc hàm) được gọi là nút g ốc.
+ Thuộc tính mà tới nó chỉ có các cung đi vào (tức là chỉ nằm trong vế phải của phụ thuộc hàm) được gọi là nút lá.
Như vậy, khóa c ủa lược đồ quan hệ phải bao phủ tập các nút gốc, đồng thời không chứa bất kỳ nút lá nào của đồ thị.
Xuất phát từ tập các nút gốc (X), dựa trên tập các phụ thuộc hàm F, chúng ta tìm
bao đóng X+F. Nếu X+F = U thì X là khóa, ngược lại thì bổ sung một thuộc tính khơng
thuộc nút lá vào X rồi tìm bao đóng. Cứ như thế cho đến khi tìm được bao đóng của X bằng U, khi đó X là khóa của R.
Ví dụ 6.6: Cho lược đồ quan hệ R(A,B,C,D,E,G) và tập phụ thuộc hàm F = {A→B,
C→E, D→C, EB→D, E→G}. Hãy tìm một khóa của R.
Đồ thị được vẽ như sau:
D B
A C
E G
Trong đồ thị trên nút gốc là A (vì chỉ có cung đi ra). Nút lá là G (vì chỉ có cung đi vào). Do đó khóa phải chứa A.
A+=AB # U, chọn nút D bổ sung vào tập nút gốc, tính
AD+=ABCDEG=U Suy ra AD là khóa của R.
– Thuật tốn tìm tất cả các khóa: Một số khái niệm:
+ Tập thuộc tính nguồn (TN): chứa tất cả các thuộc tính chỉ có xu ất hiện ở vế trái và khơng xu ất hiện ở vế phải của các phụ thuộc hàm.
+ Tập thuộc tính đích (TD): chứa tất cả các thuộc tính chỉ có xu ất hiện ở vế phải của các phụ thuộc hàm.
+ Tập thuộc tính trung gian (TG): chứa tất cả các thuộc tính xuất hiện ở cả vế trái và vế phải của các phụ thuộc hàm.
+ Nếu K là khóa c ủa R thì K É TN và K Ç TD = Ỉ
Thuật tốn:
Vào: Lược đồ quan hệ R với tập thuộc tính U và tập phụ thuộc hàm F. Ra: Tập tất cả các khóa c ủa R.
Bước 1: Xác định tập nguồn và tập trung gian.
Bước 2: Nếu tập thuộc tính trung gian TG = Ỉ thì lược đồ quan hệ chỉ có m ột khóa là K = TN. N ếu khơng thì qua bước 3
Bước 3: Tìm tất cả các tập con Xi của tập trung gian TG
Bước 4: Tìm tất cả các siêu khóa S i sao cho nếu (TNÈXi)+ = U thì Si = TN ÈXi
Bước 5: Tìm khóa bằng cách loại bỏ các siêu khóa : nếu Si Ì Sj thì loại bỏ Sj Ví dụ 6.7: Cho lược đồ quan hệ R(A,B,C,D,E,F,G) và tập phụ thuộc hàm F={AB®D, CD®AF, AB®E, BD®EG}. Hãy tìm tất cả các khóa của lược đồ R
TN={B, C}, TG={A, D}
Xi XiÈTN {XiÈTN}+ Si Khóa
Ỉ BC BC
A ABC U ABC ABC
D DBC U DBC DBC