12.2: Các tập phụ thuộc hàm tương đương Cho F và G là hai tập phụ thuộc hàm trên tập thuộc tính U, ta nói rằng tập phụ thuộc hàm F tương đương với tập phụ thuộc hàm G nếu và chỉ nếu F +
Trang 1BÀI 12: PHỦ CỦA TẬP PHỤ THUỘC HÀM
12.1: Định nghĩa tương đương
Định lý: Cho F là tập các phụ thuộc hàm trên U và f là một
phụ thuộc hàm trên U, khi đó 2 việc sau tương đương
(1)F├f
(2)F╞f
Tức là, phụ thuộc hàm f được suy dẫn từ F theo quan hệ khi
và chỉ khi nó được suy dẫn từ F theo hệ tiên đề Amstrong
Trang 212.2: Các tập phụ thuộc hàm tương đương
Cho F và G là hai tập phụ thuộc hàm trên tập thuộc tính U, ta nói rằng tập phụ thuộc hàm F tương đương với tập phụ thuộc hàm G nếu và chỉ nếu F + =G + Nếu F + =G + thì ta nói F là phủ của G và ngược lại G là phủ của F.
*Thuật toán xác định F và G có tương đương hay không?
Bước 1: Với mỗi phụ thuộc hàm X→Y của F ta xác định xem X→Y có được suy dẫn từ G không?
Bước 2: Với mỗi phụ thuộc hàm X→ Y của G ta xác định xem X→Y có được suy dẫn từ F không?
Nếu cả hai bước trên đều đúng thì F≡G.
Trang 3Ví dụ: Cho lược đồ quan hệ có:
F={A→BC, A→D, CD→E}
G={A→BCE, A→ABD, CD→E}
a) F có tương đương với G không?
b) F có tương đương với G’={A→BCDE} không?
Trang 412.3: Phụ thuộc hàm không dư thừa
12.3.1: Phụ thuộc hàm dư thừa
Cho F là tập các phụ thuộc hàm trêu U, f là một phụ thuộc hàm của F tức là f F, f được gọi là dư thừa trong F nếu như (F-f)+ = F+
Hay có thể nói tương đương f được gọi là dư thừa trong F nếu nó suy dẫn được từ tập F sau khi đã bỏ đi phụ thuộc
hàm f
Trang 5* Thuật toán xác định f= X→Y có phải là thành viên của F hay không?
Bước 1: Tạm xóa f khỏi F, gọi G là tập thu được G=F-f,
nếu G thì chuyển qua bước 2, còn không thì kết thúc thuật toán và kết luận f là không dư thừa trong F
Bước 2: Giả sử f = X→Y nếu G├f tứcY XG+ thì f là dư thừa trong F còn ngược lại f là không dư thừa(là thành
Trang 6Ví dụ: Cho F={AB→C, C→D, AB→D}
Cho biết AB→D có dư thừa trong F hay không?
Trang 812.4: Phủ thu gọn
12.4.1: Phụ thuộc hàm có vế trái dư thừa
F là tập các phụ thuộc hàm trên lược đồ quan hệ Q, Z là
tập thuộc tính, Z→Y F Nói rằng phụ thuộc hàm Z→Y
có vế trái dư thừa ( phụ thuộc không đầy đủ ) nếu có một
A Z sao cho:
F=F-{Z→Y} {(Z-A)→Y}
Ngược lại Z→Y là mọt phụ thuộc hàm có vế trái không
dư thừa hay Y phụ thuộc hàm đầy đủ vào Z hay phụ thuộc hàm đầy đủ
Chú ý: Phụ thuộc hàm có vế trái chứa một thuộc tính là
phụ thuộc hàm đầy đủ
Trang 9* Thuật toán loại khỏi F các phụ thuộc
hàm có vế trái dư thừa
Bước 1: Lần lượt thực hiên bước 2 cho các phụ thuộc hàm
Z→Y của F (với các phụ thuộc hàm có vế trái có từ
2 thuộc tính trở lên)
Bước 2: Với mỗi tập con thật sự của X,
Nếu X+→Y F+ thì thay X→Y trong F bằng X+→Y
thực hiện lại bước 2
Trang 1012.4.2: Tập 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 một tập phụ thuộc hàm G mà vế phải của các phụ thuộc hàm trong
Trang 1112.4.3: Tập phụ thuộc hàm không dư
thừa(phủ không dư)
Nói rằng F là tập phụ thuộc hàm không dư thừa nếu
không tồn tại F’ F sao cho F’ ≡ F Ngược lại, F là tập
phụ thuộc hàm dư thừa
Ví dụ:
Cho F={A → BC, B → D, AB → D}
thì F dư thừa vì F’-F = {A → BC, B → D}
Trang 12* Thuật toán loại khỏi F các phụ thuộc
Trang 1312.4.4: Tập phụ thuộc hàm tối thiểu
F được gọi là một phụ thuộc hàm tối thiểu (phủ tối
thiểu) nếu F thỏa mãn đồng thời ba đ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
Trong đó, điều kiện 1 và 2 có thể thay đổi vị trí cho nhau
Trang 14*Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm
Bước 1: Loại bỏ 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 trê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 bỏ khỏi F các phụ thuộc hàm dư thừa.
Trang 15Ví dụ: Cho lược đồ quan hệ Q(A, B, C, D) và tập phụ
thuộc hàm F như sau F={AB →CD, B →C, C→ D}
Hãy tính phủ tối thiểu của F?
Bước 1: AB →CD là phụ thuộc hàm có vế trái dư thừa?
B →CD F+?
Trả lời: B+ = BCD => B →CD F+
Vậy AB →CD là phụ thuộc hàm có vế trái dư thừa A
ÞKết quả của bước 1 là:
F={B →CD, B →C, C→ D}
Bước 2: Kết quả của bước 2 là:
Trang 16Bước 3: Trong F1tt , B→C là phụ thuộc hàm dư thừa?
Trang 17BÀI 14:KHÓA CỦA LƯỢC ĐỒ QUAN
HỆ
14.1: Khóa và siêu khóa
Đn1: Cho lược đồ quan hệ α=(U,F), KU nếu K+=U, thì
ta nói K là một siêu khóa
Chú ý: Điều kiện K+=U có thể thay bằng K →U hoặc
K→ U\K
Đn2: Cho lược đồ quan hệ α=(U,F), tập KU được gọi là khóa của lược đồ α nếu như nó thỏa mãn:
a) K là một siêu khóa
Trang 18Chú ý: Định nghĩa 2 tương đương với định nghĩa :
Cho lược đồ quan hệ α=(U,F), tập KU được gọi là khóa của lược đồ α nếu như nó thỏa mãn:
a) K→ UF+
b)K1K thì K1 → UF+
Hai điều kiện trên còn tương đương với:
a) K+=U
b)AK thì (K-{A})+U
Hoặc nó tương đương với
a)K→U
b)AK thì (K-{A})+→U
Trang 19*Tính chất của khóa và siêu khóa
1. Hợp của 2 siêu khóa là một siêu khóa
2. Giao của 2 siêu khóa chưa chắc là một siêu khóa
3. Hai khóa bất kỳ không giao nhau
4. Hợp của 2 khóa là 1 khóa khi và chỉ khi lược đồ có
duy nhất 1 khóa
5. Một lược đồ có thể có nhiều khóa
6. Bản thân U là một siêu khóa
7. Với mọt quan hệ R trên U, thì R luôn có ít nhất một
Trang 20* Tìm một siêu khóa của lược đồ
Cho lược đồ quan hệ α=(U,F), hãy tìm một siêu khóa K
của lược đồ
Ta có thể tìm siêu khóa K của lược đồ theo các bước sau:Đặt L= Li |Li →Ri F
Đặt R= Ri |Li →Ri F
Đặt K = U\R L thì K là một siêu khóa.
*Nhận xét: Khi đã có một siêu khóa nếu ta bỏ đi một số
thuộc tính ta sẽ thu được một khóa
Trang 2114.2: Họ Sperner và khóa
Nếu gọi Kα là tập tất cả các khóa của lược đồ α=(U,F), như vậy mỗi phần tử của Kα là một tập thuộc tính và các
tập hợp đó là không bao nhau
Định nghĩa: Họ Sperner trên U là họ M ={X|X U} sao cho hai phần tử của M là không bao nhau
Nhận xét: Tập hợp Kα tất cả các khóa của lược đồ là 1 họ Sperner trên U
Trang 2214.3: Một số vấn đề về khóa
14.3.1: Kiểm tra một tập cho trước có phải
là khóa hay không?
Cho K U hỏi rằng K có phải là khóa hay không?
Cách làm: Tính
+)Nếu U thì K không là khóa của lược đồ
+)Nếu K+=U chứng tỏ K là một siêu khóa
Để kiểm tra K có phải là khóa 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 khóa thì chứng tỏ K là khóa, nếu tồn tại một tập con thực sự của K là siêu khóa thì K không phải là
khóa
Trang 2314.3.2: Tìm một khóa của lược đồ quan hệ
Cho lược đồ α=(U,F), hãy tìm một khóa K
Tư tưởng chung:
B1) Trước hết chọn một siêu khóa K
B2) Từ siêu khóa đó kiểm tra xem nó có phải là khóa
Trang 2414.3.3: Giao của tất cả các khóa
Ký hiệu Iα là tập mà mỗi phần tử của nó tham gia vào tất cả các khóa của lược đồ hay Iα là giao của tất cả các
khóa của lược đồ
Ký hiệu Nα là tập mà mỗi phần tử của nó không tham gia vào bất cứ một khóa nào của lược đồ
Ký hiệu Sα ={U\ (Ri -Li )| Li →RiF}
Ta sẽ chứng minh được Iα = Sα
Trang 25Định nghĩa: Cho lược đồ quan hệ α=(U,F), thuộc tính A
trong U được gọi là thuộc tính tiền định nếu như A có mặt ở
vế phải của một phụ thuộc hàm bất kỳ thì A cũng phải xuất hiện ở vế trái của phụ thuộc hàm đó hoặc thuộc tính A không xuất hiện ở bất cứ phụ thuộc hàm nào
Định lý 1: Cho lược đồ quan hệ α=(U,F),
gọi N={ (Ri -Li )| Li Iα} khi đó N Nα (hay N là tập
chứa một số các phần tử không khóa của lược đồ )
Trang 26Định lý 2: Với Y Nα và X Iα thì Y (XY))+ \ X Nα
Trang 2714.3.4: Thuật toán tìm giao của tất cả các khóa
Giao của tất cả các khóa được tìm theo công thức:
Iα ={U\ (Ri - Li)}
Trang 2814.3.5: Thuật toán kiểm tra 1 lược đồ đã
cho có một hay nhiều khóa?
Bước 1: Tìm giao của tất cả các khóa của lược đồ Iα
Bước 2: Nếu (Iα)+= U thì lược đồ đã cho có duy nhất một khóa
Bước 3: Nếu (Iα)+U thì lược đồ có nhiều khóa
Trang 2914.3.6: Thuật toán tìm tất cả các khóa của lược đồ quan hệ
*Thuật toán 1:
Bước 1: Xác định tất cả các tập con khác rỗng của Q+ Kết
Bước 2: Tìm bao đóng của các X1
Bước 3: Siêu khóa là các X1 có bao đóng đúng bằng Q+
Bước 4: Xây dựng tập chứa tất cả các khóa của Q từ tập S
Trang 30*Thuật toán 2:
B1) Xác định Iα
B2) Nếu (Iα)+ =U thì kết luận lược đồ có 1 khóa duy nhất
là Iα và kết thúc thuâth toán, ngược lại thì chuyển sang
bước tiếp theo
B3) Xác định N={ (Ri -Li )| Li Iα }
+) Đặt N’ = (IαN)+\ Iα (N’Nα )
+) Đặt B =U\N’\Iα
B4) Nếu |B|=2 (tập B chỉ gồm có 2 thuộc tính ), giả sử
B=B1B2 khi đó lược đồ chỉ có 2 khóa là B1 và B2, kết thúc thuật toán Ngược lại nếu |B| > 2 thì chuyển sang bước tiếp theo
B5) Tìm tất cả các tập con khác rỗng của B, ký hiệu các tập con đó là{B1, B2, …, Bn} Tính ( Bi Iα)+ (i=1…n), nếu ( Bi Iα)+ =U thì đặt Mi = Bi Iα