You are on page 1of 30

Phụ thuộc hàm

(Functional Dependency)

162
Vấn đề thiết kế CSDL
● Dựa trên trực quan của người thiết kế

● Thiếu một tiêu chuẩn hình thức để đánh giá

● Chứa các giá trị thừa trong các bộ

● Chứa các giá trị null trong các bộ

● Xuất hiện các bộ không có thực

163
Thông tin thừa trong các bộ

164
Thông tin thừa trong các bộ
● Dị thường khi thêm bộ

● Dị thường khi xóa/sửa bộ

165
Giá trị Null trong các bộ

● Lãng phí không gian lưu trữ

● Khó khăn khi thực hiện các phép toán kết nối

● Khó khăn khi sử dụng các hàm tập hợp

166
Xuất hiện các bộ không có thực

167
Xuất hiện các bộ không có thực

168
Phụ thuộc hàm (FD)
● Định nghĩa: Cho LĐQH R(U) với U = {A1, A2,…, An}
○ X, Y là hai tập con của U,
○ r là một quan hệ trên R,
○ t1, t2 là hai bộ bất kỳ của r,
○ Phụ thuộc hàm giữa hai thuộc tính X và Y, ký hiệu là X ➜ Y,
được định nghĩa như sau:
X ➜ Y ⇔ (t1.X = t2.X ⇒ t1.Y = t2.Y)

(X xác định Y hay Y phụ thuộc hàm vào X)

169
Phụ thuộc hàm (FD)
● Ví dụ: cho lược đồ quan hệ R(A, B, C, D, E)

A B C D E
1. AB ➜ C (F)
1 2 3 4 5 2. B➜D (T)
3. DE ➜ A (T)
1 4 3 4 5

1 2 4 4 1

170
Bao đóng của tập phụ thuộc hàm

● Cho F là tập PTH trên R, với ∀r ∈ R: r thỏa F, nếu X ➜ Y đúng


trên r thì ta có X ➜ Y được suy dẫn từ F, kí hiệu F ⊨ X ➜ Y.
● Bao đóng của F, kí hiệu F+, gồm
○ F
○ Tất cả các PTH được suy dẫn từ F
● F được gọi là đầy đủ nếu F = F+

171
Hệ luật suy dẫn Amstrong
● Cho X, Y, Z, W là tập con của U trong LĐQH R(U)
● Ba luật của tiên đề Amstrong
○ Phản xạ: Nếu Y ⊂ X thì X ➜ Y
○ Tăng trưởng: Nếu X ➜ Y thì XZ ➜ YZ
○ Bắc cầu: Nếu X ➜ Y và Y ➜ Z thì X ➜ Z
● Ba hệ quả của tiên đề Amstrong
○ Hợp: Nếu X ➜ Y và X ➜ Z thì X ➜ YZ
○ Phân rã: Nếu X ➜ Y và Z ⊂ Y thì X ➜ Z
○ Bắc cầu giả: Nếu X ➜ Y và WY ➜ Z thì XW ➜ Z

172
Bao đóng của tập thuộc tính

● Cho LĐQH R(U) và F là tập các phụ thuộc hàm trong R


○ Bao đóng của tập thuộc tính X đối với F, kí hiệu XF+, là tập các
thuộc tính phụ thuộc vào X:
XF+ = {A ∈ U | X ➜ A ∈ F+}
● Nhận xét:
○ X ➜ Y ∈ F + ⇔ Y ∈ X F+
○ Nếu K là khóa của R thì KF+ = U

173
Thuật toán tìm bao đóng X+
● Input: U, F và X ⊆ U
● Output: X+F
● Thực hiện:
○ B1: X+ ≔ X
○ B2:
■ Nếu tồn tại Y ➜ Z và Y ⊆ X+ thì
● X+ ≔ X+ ∪ Z;
● Tiếp tục B2
■ Ngược lại, thực hiện B3
○ B3: trả về X+

174
Thuật toán tìm bao đóng X+
● Ví dụ: Cho LĐQH R(A,B,C,D,E,G,H) và tập phụ thuộc hàm
○ F = {B ➜ A; DA ➜ CE; D ➜ H; GH ➜ C; AC ➜ D}.
○ Tìm bao đóng của X = {A, C} trên F
■ X(0) = {A,C} , {A,C}➜{D}
■ X(1) = {A,C,D}, {A, D}➜{C,E}
■ X(2) = {A,C,D,E}, {D}➜{H}
■ X(3) = {A,C,D,E,H}
■ XF+ = X(3)
● Cho X = {B, D}, tìm XF+?

175
Thuật toán tìm bao đóng X+

● Ví dụ 2: Cho LĐQH R(A,B,C,D,E,G) và tập phụ thuộc hàm


○ F = {A ➜ C; A ➜ EG; B ➜ D; G ➜ E}
○ Tìm bao đóng XF+ và YF+ của X = {A,B} và Y = {C,G,D}

● Kết quả : XF+ = {A,B,C,E,G} , YF+ = {C,G,D,E}

176
Kiểm tra PTH suy dẫn
● Cho F = {AB ➜ C, A ➜ D, D ➜ E, AC ➜ B}
● Hai PTH AB ➜ E và D ➜ C có được suy dẫn từ F hay không?

X X F+

AB ABCDE được suy dẫn từ F

D DE

177
Các tập PTH tương đương

● Tập PTH F được gọi là một phủ của tập PTH G nếu G ⊂ F+
● Hai tập PTH F và G là tương đương nếu
○ F phủ G, và
○ G phủ F
● Nhận xét
○ ∀ X ➜ Y ∈ G, nếu Y ⊆ XF+ thì F phủ G
○ F và G tương đương nếu và chỉ nếu F+ = G+

178
Tập PTH tối thiểu
● Thừa PTH
○ {A ➜ B, B ➜ C, A ➜ C}
■ vì A ➜ C được suy dẫn từ {A ➜ B, B ➜ C}
● Thừa thuộc tính
○ {A ➜ B, B ➜ C, A ➜ CD}
■ vì A ➜ CD được suy dẫn từ {A ➜ B, B ➜ C, A ➜ D}
○ {A ➜ B, B ➜ C, AC ➜ D}
■ vì AC ➜ D được suy dẫn từ {A ➜ B, B ➜ C, A ➜ D}

179
Tập PTH tối thiểu

● Tập PTH F là tối thiểu nếu thỏa các điều kiện sau:
○ Tất cả các PTH của F chỉ có một thuộc tính ở vế phải;
○ Không tồn tại bất kì một PTH X ➜ A ∈ F và một tập Y ⊂ X mà
F+ = (F - {X ➜ A} ∪ {Y ➜ A})+;
○ Không tồn tại bất kì một X ➜ A ∈ F mà (F - {X ➜ A})+ = F+.

● Phủ tối thiểu của tập PTH G là tập PTH tối thiểu F tương đương G

180
Thuật toán tìm phủ tối thiểu
● Input: tập PTH G
● Output: phủ tối thiểu F của G
● Thực hiện:
○ B1: F ≔ Ø
○ B2: Với mỗi X ➜ Y ∈ G, Y = {A1, A2, …, Ak}, Aj ∈ U
■ F ≔ F ∪ {X ➜ {Aj}}
○ B3: Với mỗi X ➜ {A} ∈ F, X = {B1, B2, …, Bt}, Bi ∈ U
■ Với mỗi Bi, nếu A ∈ {X - {Bi}}F+, thì
● F ≔ (F - {X ➜ {A}}) ∪ {(X - {Bi}) ➜ A}
○ B4: Với mỗi X ➜ {A} ∈ F
■ E ≔ F - {X ➜ {A}}
■ Nếu A ∈ XE+ thì F ≔ F - {X ➜ {A}}
181
Phủ tối thiểu
● Ví dụ 1: Cho LĐQH R(A,B,C,D). Tìm phủ tối thiểu của
G = {AB ➜ CD, B ➜ C, C ➜ D}
○ B1: F ≔ Ø
○ B2: F ≔ {AB ➜ C, AB ➜ D, B ➜ C, C ➜ D}
○ B3: Xét AB ➜ C và AB ➜ D; Có C ∈ (B)F+ và D ∈ (B)F+;
■ F ≔ {B ➜ D, B ➜ C, C ➜ D}
○ B4: B ➜ D dư thừa
■ F ≔ {B ➜ C, C ➜ D}
● Ví dụ 2: Tìm phủ tối thiểu của G = {A ➜ BC, A ➜ B, B ➜ C, AB ➜ C}
● Ví dụ 3: Tìm phủ tối thiểu của G = {A ➜ C, C ➜ A, CB ➜ D, AD ➜ B,
CD ➜ B, AB ➜ D}
182
Siêu khóa và khóa
● Cho LĐQH R(U)
○ S ⊆ U là siêu khóa nếu ∀r ∈ R, ∀t1, t2 ∈ r, thì t1.S ≠ t2.S
○ K ⊆ U là khóa nếu K là siêu khóa nhỏ nhất
■ A ∈ K được gọi là thuộc tính khóa
■ A là thuộc tính không khóa nếu không tham gia vào bất kì
một khóa nào của R
● Nhận xét:
○ S xác định hàm tất cả các thuộc tính của R
○ U luôn là một siêu khóa
○ R có thể có nhiều khóa

183
Siêu khóa và khóa - Các tính chất
● Cho LĐQH R(U), tập PTH F = {Li ➜ Ri, i = 1..k}
○ Không mất tính tổng quát, giả sử Li ∩ Ri = Ø, ∀i=1..k
○ Đặt ℒ = i=1⋃k Li, ℛ = i=1⋃k Ri
● TC1: X ⊆ U, X là siêu khóa ⇔ X+ = U
● TC2: X ➜ Y ∈ F+, A ∈ ℒ, ⇒ X\{A} ➜ Y\{A} ∈ F+
● TC3: X ⊂ U, A ∈ X. Nếu X\{A} ➜ A ∈ F+ ⇒ X không là khóa
● TC4: X ⊆ U, nếu X là khóa thì (U\{ℛ}) ⊆ X ⊆ (U\{ℛ}) ∪ (ℒ ∩ ℛ)
○ HQ1: (U\{ℛ}) ∪ (ℒ ∩ ℛ) là một siêu khóa của R
○ HQ2: Nếu (U\{ℛ})+ = U ⇔ R có 1 khóa duy nhất K = (U\{ℛ})

184
Tìm khóa của lược đồ
● Input: tập PTH F xác định trên LĐQH R(U)
● Output: một khóa K của R
● Thực hiện:
○ B1: K ≔ U = {A1, A2, …, An};
■ i = 1;
○ B2: Nếu U ⊆ (K - {Ai})F+ thì K ≔ K - {Ai};
■ i ≔ i + 1;
■ Nếu i > n thì sang B3; ngược lại, tiếp tục B2
○ B3: trả về K;

185
Tìm khóa của lược đồ
● Ví dụ 1: cho lược đồ quan hệ R(U) và tập phụ thuộc hàm F như sau:
○ U = {A,B,C,D,E}, F = {AB ➜ C, AC ➜ B, BC ➜ DE}. Tìm khóa K.

■ B1: K ≔ U ⇒ K=ABCDE
■ B2: (K\A)+ ⇒ (BCDE)+ = BCDE ≠ U ⇒ K = ABCDE
■ B3: (K\B)+ ⇒ (ACDE)+ = ABCDE = U ⇒ K = ACDE
■ B4: (K\C)+ ⇒ (ADE)+ = ADE ≠ U ⇒ K = ACDE
■ B5: (K\D)+ ⇒ (ACE)+ = ACEBD = U ⇒ K = ACE
■ B6: (K\E)+ ⇒ (AC)+ = ACBDE = U ⇒ K = AC

186
Tìm khóa của lược đồ

● Nhận xét:

○ Nếu thay đổi thứ tự xét các thuộc tính ở B2 trong thuật toán có
thể dẫn đến nhiều khóa khác nhau;

○ Theo TC4 ở trên, có thể thay U ở B1 bởi (U\{ℛ}) ∪ (ℒ ∩ ℛ);

○ Chỉ xét loại bỏ các thuộc tính (ℒ ∩ ℛ) tại B2 của thuật toán.

187
Tìm khóa của lược đồ

● Ví dụ 2: cho lược đồ quan hệ R(U) và tập phụ thuộc hàm F như sau:
○ U = {A,B,C,D,E,G,H,I}, F= {AC ➜ B; BI ➜ AC; ABC ➜ D; H ➜ I;
ACE ➜ BCG; CG ➜ AE}
○ Tìm khóa K của R.

● Ví dụ 3: cho R(U) và F như sau:


○ U = {A,B,C,D,E, F, G}, F= {B ➜ A, D ➜ C, D ➜ BE, DF ➜ G}
○ Tìm khóa K của R.

188
Tìm tất cả các khóa của lược đồ
● Input: tập PTH F xác định trên LĐQH R(U)
● Output: tất cả khóa K của R
● Thực hiện:
○ B1: Tìm 2n tập con của U = {A1, A2, …, An};
■ S ≔ Ø;
○ B2: Với mỗi tập thuộc tính X ⊆ U,
■ nếu XF+ = U thì S ≔ S ∪ {X};
○ B3: ∀X, Y ∈ S, nếu X ⊂ Y thì S ≔ S - {Y};
○ B4: trả về S;

189
Tìm tất cả các khóa của lược đồ
● Ví dụ: Tìm tất cả các khóa của LĐQH R(A, B, C) với tập PTH F = {AB
➜ C, C ➜ A}
Xi X i+ Siêu khóa Khóa

A A

B B

AB ABC AB AB

C CA

AC AC

BC BCA BC BC

ABC ABC ABC

190
Tìm tất cả các khóa của lược đồ
● Input: tập PTH F xác định trên LĐQH R(U)
● Output: tất cả khóa K của R
● Thực hiện: (thuật toán cải tiến)
○ B1: Tìm ℒ , ℛ, S = U - ℛ, ℒ ∩ ℛ;
○ B2: Nếu S+ = U thì R có 1 khóa duy nhất là K = S;
○ B3: (Nếu S+ ≠ U) Thiết lập bảng

X⊆ℒ ∩ℛ (S ∪ X)+ Kết luận

X là các tập thuộc tính Nếu (S ∪ X)+ = U (S ∪ X) là một khóa của R


⊆ℒ∩ℛ Nếu (S ∪ X)+ ≠ U (S ∪ X) không là một khóa của
R
Chú ý: X ⊆ ℒ ∩ ℛ tham gia vào khóa (S ∪ X) thì ở các bước tiếp theo không xét các
thuộc tính chứa X.
191

You might also like