Dư thừa dữ liệuData redundancy thuộc tính thành các quan hệ sao cho giảm thiểu dư thừa dữ liệu ◦ Lãng phí không gian đĩa ◦ Các bất thường khi cập nhật ◦ Bất thường khi thêm vào ◦ Bất th
Trang 1Chương 9: Phụ thuộc hàm (Functional Dependency)
Trang 2Nội dung
Trang 3Dư thừa dữ liệu
(Data redundancy)
thuộc tính thành các quan hệ sao cho
giảm thiểu dư thừa dữ liệu
◦ Lãng phí không gian đĩa
◦ Các bất thường khi cập nhật
◦ Bất thường khi thêm vào
◦ Bất thường khi xóa bỏ
◦ Bất thường khi sửa đổi
Trang 4Stamps Coins Hiking Skating Acting
Khóa chính của bảng PERSON?
SSN + Hobby
Thông tin cá nhân bị trùng lặp
Các bất thường:
◦ Nếu John thay đổi chỗ ở update anomaly
◦ Nếu bổ sung thêm người mới tên là Homer Simpson
nhưng chưa biết sở thích của anh ta không thể tạo bản ghi mới được insertion anomaly
◦ Nếu Bart Simpson không có bất kỳ sở thích nào xóa sở thích Acting như thế nào Delete anomaly
Trang 5Phụ thuộc hàm
(Functional Dependency)
thuộc tính
CSDL, loại bỏ các dư thừa dữ liệu
Trang 6bộ của r có cùng giá trị X thì cũng có cùng giá trị Y.
t1, t2 r(R): t1[X] = t2[X] t1[Y]= t2[Y]
Trang 8Phụ thuộc hàm
(Functional Dependency -FD)
buộc giữa các thuộc tính
nhưng nhiều nhân viên có thể có cùng 1
mức lương
Emp_ID SalarySalary -/-> Emp_ID
Phụ thuộc hàm được xác định dựa vào
quy tắc nghiệp vụ được xác định trên lược
đồ quan hệ
Trang 9là primary key nên:
ProfId Name, Qualification
thừa dữ liệu
Trang 10Ví dụ FD và dư thừa dữ liệu
Address,Hobby) với quy tắc là 1 người có thể
có nhiều sở thích (hobby)
◦ SSN,Hobby SSN, Name, Address,Hobby
thích thay đổi địa chỉ
Trang 11Giải thuật kiểm tra phụ thuộc
hàm
hàm f:X Y Kiểm tra xem r thỏa mãn f
Satisfies = true
◦ Else
Satisfies = false
Trang 13Tập phụ thuộc hàm
Gọi F là 1 tập phụ thuộc hàm trên R
nếu mọi phụ thuộc hàm trong F đều là phụ thuộc hàm trên R
Phụ thuộc hàm tầm thường ( trivial
FD) hay phụ thuộc hàm hiển nhiên X
Y nếu Y X
◦ Ví dụ: Name, Address Name
Trang 14thể có (2n)2=22n.
Trang 15Tập phụ thuộc hàm
bảo toàn (integrity constraint), vì vậy
DBMS cần phải quản lý các FD
lược đồ, có cách nào tìm ra 1 tập T S
sao cho mọi FD của S đều ngầm suy từ
các FD của T Khi đó, DBMS chỉ quản lý
các FD của T, các FD trong S sẽ được quản
lý một cách tự động
Trang 16Hệ tiên đề Amstrong
từ F nếu mọi quan hệ thỏa mãn mọi phụ
thuộc hàm trong F thì cũng thỏa mãn XY
◦ Ký hiệu F⊨XY
◦ F bao hàm (implies) XY
◦ XY được suy diễn theo quan hệ từ F
Trang 17Hệ tiên đề Amstrong
quan hệ thỏa mãn 1 số phụ thuộc hàm
nào đó thì quan hệ này cũng thỏa mãn 1
số phụ thuộc hàm khác
Trang 19Hệ tiên đề Amstrong
F4 Hợp (additivity): XY và XZ X
YZ
F5 Chiếu (projectivity): XYZ X Y
F6 Bắc cầu giả (pseudotransitivity): XY
và YZW XZ W
Trang 21Bao đóng của tập phụ thuộc
hàm
hàm F là 1 tập phụ thuộc hàm nhỏ nhất
chứa F sao cho không thể áp dụng hệ tiên
đề Amstrong trên tập này để tạo ra 1 phụ thuộc hàm khác không có trong tập hợp
này
F+ là 1 tập hợp các FD được suy diễn từ F
Trang 22Các tính chất của bao đóng của tập phụ thuộc hàm
hàm F+ ta luôn có F F+
hàm F ta luôn có (F+)+ = F+
Trang 23Hệ tiên đề Amstrong
các phụ thuộc hàm suy diễn từ F (tập
phụ thuộc hàm trên r) theo hệ tiên đề
Amstrong cũng là một phụ thuộc hàm trên r
(completeness) bảo đảm rằng f F+
nếu và chỉ nếu f là 1 FD được suy diễn
Trang 24Phụ thuộc hàm tương đương
Nếu F và G là 2 tập FD F suy diễn G ( F
entails G) nếu F suy diễn được tất cả các
FD có trong G
diễn G và G suy diễn F
Trang 25Kiểm tra các tập FD tương
đương
false nếu ngược lại For each f F do
if G does not entail f then return false
For each g G do
if G does not entail f then return false
Return true
Trang 26Ví dụ
◦ F={ ACB, AC, DA }
◦ G={AB , AC, DA , DB}
F và G có tương đương nhau không???
Từ AC + Tiên đề F2 AAC (1)
Từ (1)+ ACB + tiên đề F3 AB
Từ DA + AB + tiên đề F3 D B
F suy diễn G
Tương tự khi xét G suy diễn F
Trang 27Bao đóng của tập phụ thuộc
hàm
BB, ABB, BCB, ABCB,
ABAB, ABCAB, ACAC, ABCAC, BCBC, ABCBC, ABCABC,
Trang 28Bao đóng của tập thuộc tính
Trang 29Giải thuật tìm bao đóng của tập
thuộc tính trên tập phụ thuộc hàm
Input: tập thuộc tính X và tập phụ thuộc hàm F
Output: bao đóng của X dựa trên F
Trang 31Kiểm tra thành viên trong F+
if Y Closure(X,F) then Member = true
else Member = false;
End
Trang 32Ví dụ kiểm tra phụ thuộc hàm
tra F có bao hàm AB??
- Tìm A+F? A+F = {ACB}
- Do B A+F nên F bao hàm AB
Trang 33Giải thuật tìm khóa của lược đồ quan hệ
R
thuộc tính 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 và các thuộc tính không xuất hiện ở
cả vế trái lẫn vế phải của các phụ thuộc
hàm
Trang 34Giải thuật tìm khóa của lược đồ quan hệ
Tập thuộc tính đích (TD) chứa tất cả các
thuộc tính có xuất hiện ở vế phải và không xuất hiện ở vế trái của các phụ thuộc hàm
các thuộc tính xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm
Trang 35Thuật toán tìm tất cả khóa
thuộc tính trung gian TG
có 1 khóa K
K=TN Kết thúc Ngược lại qua bước 3
trung gian TG
…
Trang 36Thuật toán tìm tất cả khóa (tt)
if (TN Xi)+ = Q+ then Si = TN
Xi
khóa không tối tiểu
Si, Sj S
if Si Sj then Loại Sj ra khỏi tập siêu khóa S
S còn lại chính là tập khóa cần tìm
Trang 37Ví dụ 1
ADE, CF} Tìm tất cả các khóa của R
Trang 38Ví dụ 2
AB EC} Tìm khóa của R?
Xi Xi TN (Xi TN)+ Siêu khóa Khóa