1 Tập phụ thuộc hàm tương đương Hai tập phụ thuộc hàm F và G là tương đương (kí hiệu F ≡ G) nếu: • Tất cả các phụ thuộc hàm trong F có thể được suy dẫn từ G, và • Tất cả các phụ thuộc hàm trong G có thể suy dẫn từ F. Vì thế, F và G là tương đương nếu F+ = G+ Nếu F và G là tương đương thì ta nói F phủ G và G phủ F. Thuật toán kiểm tra sự tương đương của 2 tập PTH • F phủ G: ∀X → Y∈G, tính X+ F, sau đó kiểm tra xem Y∈X+ F • G phủ F: ∀X → Y∈F, tính X+ G, sau đó kiểm tra xem Y∈X+ G
Trang 1Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 1
BÀI 5: TẬP PHỤ THUỘC HÀM TƯƠNG ĐƯƠNG
TẬP PHỤ THUỘC HÀM TỐI THIỂU
Mục tiêu:
Trong bài này, Anh/Chị cần đạt được những mục tiêu sau:
1 Nắm vững khái niệm tập phụ thuộc hàm tương đương và tập phụ thuộc hàm tối thiểu
2 Nắm rõ các thuật toán kiểm tra 2 tập phụ thuộc hàm có tương đương nhau; thuật toán tìm phủ tối thiểu
3 Áp dụng thuật toán để giải quyết bài toán rút gọn tập phụ thuộc hàm, kiểm tra sự tương đương nhau của các tập phụ thuộc hàm
Nội dung:
1 Tập phụ thuộc hàm tương đương
Hai tập phụ thuộc hàm F và G là tương đương (kí hiệu F ≡ G) nếu:
• Tất cả các phụ thuộc hàm trong F có thể được suy dẫn từ G, và
• Tất cả các phụ thuộc hàm trong G có thể suy dẫn từ F
Vì thế, F và G là tương đương nếu F+ = G+
Nếu F và G là tương đương thì ta nói F phủ G và G phủ F
Thuật toán kiểm tra sự tương đương của 2 tập PTH
• F phủ G: ∀X → Y∈G, tính X+F, sau đó kiểm tra xem Y∈X+F
• G phủ F: ∀X → Y∈F, tính X+G, sau đó kiểm tra xem Y∈X+G
Ví dụ : Xét hai tập phụ thuộc hàm
F = {A →C, AC → D, E→AD, E →H }
G = { A →CD, E → AH }
Ta chứng minh F phủ G:
Tìm bao đóng của các vế trái của các phụ thuộc hàm trong G theo F Áp dụng thuật toán tìm bao đóng của tập thuộc tính, ta có:
Trang 2Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 2
{A}+F = { A, C, D };
{E}+F = {E, A, D, H, C}
ta thấy các bao đóng này chứa các vế phải tương ứng Từ đó suy ra F phủ
G
Ta chứng minh G phủ F:
Tìm bao đóng của các vế trái của các phụ thuộc hàm trong F theo G Ta có:
{A}+G ={A,C,D},
{AC}+G = { A,C,D},
{E}+G = {E,A,H,C,D}, ta thấy các bao đóng này chứa các vế phải tương ứng Từ đó suy ra G phủ F
Tóm lại G tương đương với F
2 Tập phụ thuộc hàm tối thiểu
2.1 Phụ thuộc hàm có vế phải một thuộc tính
Mỗi tập phụ thuộc hàm F đều tương đương với tập phụ thuộc hàm G mà
vế phải của các phụ thuộc hàm trong G chỉ chứa một thuộc tính
Ví dụ: Cho tập phụ thuộc hàm F
F = {A →C, AC → D, E→AD, E →H }
Ta suy ra:
F≡G={ A →C, AC → D, E→A, E→D, E →H }
2.2 Phụ thuộc hàm có vế trái dư thừa
Cho F là tập phụ thuộc hàm của quan hệ R(U) và X, Y ⊆U, X → Y ∈ F Nói rằng phụ thuộc hàm X → Y có vế trái dư thừa (phụ thuộc không đầy đủ) nếu có thuộc tính A ∈ X (X gồm nhiều thuộc tính) sao cho:
Trang 3Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 3
F≡F - { X → Y }∪{ (X-A) → Y }
Nói một cách khác, phụ thuộc hàm X → Y gọi là phụ thuộc hàm có vế trái không dư thừa khi ta không thể thay thế bất kì một phụ thuộc hàm X → Y trong F bằng một phụ thuộc hàm A → Y mà A là tập con của X nhưng vẫn được tập phụ thuộc hàm tương đương với F ban đầu
Ví dụ:
Cho tập phụ thuộc hàm F={ A → BC, B → C, AB → D} ta thấy phụ thuộc hàm AB → D có vế trái dư thừa B vì
F≡ F - { AB → D}∪{ A → D }
≡ { A → BC, B → C, A → D }
Ta nói F là tập phụ thuộc hàm có vế trái không dư thừa nếu F không chứa các phụ thuộc hàm có vế trái dư thừa
Thuật toán loại bỏ dư thừa vế trái của các phụ thuộc hàm trong F
Input: Tập phụ thuộc hàm F
Output: Tập phụ thuộc hàm F không chứa phụ thuộc hàm có vế trái dư thừa
Các bước thực hiện:
o Bước 1: Với mỗi phụ thuộc hàm X → Y (X từ 2 thuộc tính trở lên) của F thì thực hiện bước 2
o Bước 2: Với mỗi A ∈ X, nếu A → Y∈ F+ thì thay X → Y bằng A
→ Y Lặp lại bước 2 đến khi vế trái X không dư thừa
Ví dụ: Cho tập F={ A → BC, B → C, AB → D}
Trang 4Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 4
Xét phụ thuộc hàm AB → D: có A+={ABCD} nên A → D ∈ F+ nên thay
AB → D bằng A → D và
F≡{ A → BC, B → C, A → D }
2.3 Tập phụ thuộc hàm không dư thừa
F là tập PTH không dư thừa nếu không tồn tại F’ ⊂ F sao cho F’ ≡ F
Ví dụ: Cho F = {A →BC, B →D, AB →D} F là dư thừa vì F≡F’={ A
→BC, B →D}
Thuật toán loại khỏi F các phụ thuộc hàm dư thừa
- Input: Tập PTH F
- Output: Tập F không có PTH dư thừa
- Thuật toán:
! Bước 1: Với mỗi PTH X → Y trong F
! Bước 2: Nếu X → Y là thành viên của F – {X → Y} thì loại
X → Y khỏi F
! Bước 3: Lặp lại bước 2 cho đến khi hết các PTH cần xét
Ví dụ:
Cho F = {A →BC, B →D, AB →D} Tìm tập phụ thuộc hàm không dư thừa
Giải:
1 Giả sử A → BC là dư thừa F={B → D, AB → D} Kiểm tra A → BC có là thành viên của F: A+={A} ta thấy BC ∉ A+
Vậy: A → BC không dư thừa
2 Giả sử B->D là dư thừa: F={A → BC; AB → D} Tính: B+ = {B} ta thấy D ∉ B+
Trang 5Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 5
=> B → D không dư thừa
3 Xét AB → D: F={A → BC; B → D}
Tính (AB)+ = {ABCD} ta thấy D ∈ (AB)+
=> Vậy: AB → D là dư thừa
Kết luận: F ≡ { A →BC, B →D } là tập phụ thuộc hàm không dư thừa
2.4 Thuật toán tìm tập phụ thuộc hàm tối thiểu
F được gọi là tập phụ thuộc hàm tối thiểu Ftt (phủ tối thiểu) nếu F thỏa mãn đồng thời các điều kiện sau:
1 F là tập phụ thuộc hàm có vế trái không dư thừa
2 F là tập phụ thuộc hàm có vế phải một thuộc tính
3 F là tập phụ thuộc hàm không dư thừa
Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm
Input: Tập phụ thuộc hàm F
Output: Phủ tối thiểu của F
Các bước:
Bước 1: Loại khỏi F các phụ thuộc hàm có vế trái dư thừa
Bước 2: Tách các phụ thuộc hàm có vế phải nhiều hơn một thuộc tính thành các phụ thuộc hàm có vế phải một thuộc tính
Bước 3: Loại khỏi F các phụ thuộc hàm dư thừa
Lưu ý:
- Với thuật toán trên ta luôn tìm được ít nhất một phủ tối thiểu Ftt ≡ F
- Nếu ta thay đổi trật tự loại bỏ các phụ thuộc hàm trong F thì ta có thể tìm được các phủ tối thiểu khác nhau
Trang 6Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 6
Ví dụ 1:
Cho tập F={ A → BC, B → C, AB → D} Tìm phủ tối thiểu của F
Giải:
Bước 1: Xét phụ thuộc hàm AB → D có A+={ABCD} nên A → D ∈ F+ thay AB → D bằng A → D và
F≡{ A → BC, B → C, A → D }
Bước 2: Tách phụ thuộc hàm A → BC ta được
F≡{ A → B, A → C, B → C, A → D }
Bước 3: Kiểm tra xem các phụ thuộc hàm có dư thừa hay không
• Giả sử A → B dư thừa khi đó F = { A → C, B → C, A → D }
Tính A+ = {ACD} ta thấy B ∉ A+ nên A → B không dư thừa
• Giả sử A → C dư thừa khi đó F= { A → B, B → C, A → D }
Tính A+={ABCD} ta thấy C ∈ A+ nên A → C dư thừa
F≡{ A → B, B → C, A → D }
• Giả sử B → C dư thừa khi đó F={ A → B, A → D }
Tính B+ ={B} ta thấy C ∉ B+ nên B → C không dư thừa
• Giả sử A → D dư thừa khi đó F= { A → B, B → C }
Tính A+={ABC} ta thấy D ∉ A+ nên A → D không dư thừa
Kết luận: Phủ tối thiểu của tập F đã cho là
Ftt={ A → B, B → C, A → D }
Ví dụ 2: Cho F={AB →CD, B →C, C →D} Tìm tập phụ thuộc hàm tối thiểu
Giải:
Trang 7Tập phụ thuộc hàm tương đương – tập phụ thuộc hàm tối thiểu - Bài 5 Trang 7
Bước 1: Loại PTH có vế trái dư thừa:
Xét AB → CD, giả sử dư A cần CM B → CD là thành viên của F: B+={BCD} => đúng nên dư A
Khi đó F = {B → CD; B → C; C → D}
Bước 2: Đưa về dạng PTH có vế phải 1 thuộc tính
F = {B → C; B → D; C → D}
Bước 3: Loại khỏi F các PTH dư thừa
Dễ thấy B → D là dư thừa vì B → C và C → D
Vậy phủ tối thiểu của Ftt = {B → C; C → D}
Chúc Anh/Chị học tập tốt!
TÀI LIỆU THAM KHẢO
- Cơ sở dữ liệu, Đỗ Trung Tuấn, NXB Giáo dục, 2004
- Nhập môn Cơ sở dữ liệu, Nguyễn Tuệ, NXB Đại học Quốc gia, 2008
- Nhập môn Cơ sở dữ liệu quan hệ, Lê Tiến Vương, NXB Giáo dục,
2004
- Giáo trình Cơ sở dữ liệu, Học viện Bưu chính viễn thông, NXB Bưu điện, 2004
- Fundamentals of Database Systems, 6th edition, John Wiley & Sons,
Inc, 2011
- Database Systems Concepts, Abram Siberschatz, Henry F.Korth, S.Sudarshan, McGaw-Hill /Irwin, 2002