Professional Documents
Culture Documents
Chuong 5 Slides
Chuong 5 Slides
(Functional Dependency)
162
Vấn đề thiết kế CSDL
● Dựa trên trực quan của người thiết kế
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ộ
165
Giá trị Null trong các bộ
● Khó khăn khi thực hiện các phép toán kết nối
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)
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
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
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+
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+
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;
○ 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.
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
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