Chuong 9 Phu thuoc ham
Download
Report
Transcript Chuong 9 Phu thuoc ham
Chương 9: Phụ thuộc hàm
(Functional Dependency)
1
Nội dung
Dư thừa dữ liệu
Phụ thuộc hàm
Hệ tiên đề Amstrong
Bao đóng của tập phụ thuộc hàm
Bao đóng của tập thuộc tính
Tìm khóa
2
Dư thừa dữ liệu
(Data redundancy)
Mục đích của thiết kế CSDL là gom
các thuộc tính thành các quan hệ sao
cho giảm thiểu dư thừa dữ liệu
Hậu quả của dư thừa dữ liệu:
• Lãng phí không gian đĩa
• Các bất thường khi cập nhật
Ba loại bất thường:
• 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
3
Phụ thuộc hàm
(Functional Dependency)
Phụ thuộc hàm mô tả mối liên hệ
giữa các thuộc tính
Dựa vào phụ thuộc hàm để thiết kế
lại CSDL, loại bỏ các dư thừa dữ liệu
4
Phụ thuộc hàm
(Functional Dependency)
Cho lược đồ quan hệ R(U), r là 1 quan hệ
bất kỳ trên R, X và Y là 2 tập thuộc tính
con.
Định nghĩa: Phụ thuộc hàm (FD) f: X Y
trên lược đồ quan hệ R nếu và chỉ nếu mỗi
giá trị X trong r có quan hệ chính xác với 1
giá trị Y trong r. Nghĩa là bất kể khi nào 2
bộ 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]
5
Phụ thuộc hàm
(Functional Dependency)
X là vế trái, ký hiệu left(f) hay còn gọi
là determinant
Y là vế phải, ký hiệu right(f) hay còn
gọi là dependent
6
Phụ thuộc hàm
(Functional Dependency -FD)
Phụ thuộc hàm là 1 đặc điểm ngữ
nghĩa của các thuộc tính, được xem
là 1 ràng buộc giữa các thuộc tính.
Ví dụ: Một nhân viên chỉ có 1 tiền
lương nhưng nhiều nhân viên có thể
có cùng 1 mức lương
Emp_ID Salary
Salary -/-> Emp_ID
7
Phụ thuộc hàm
(Functional Dependency -FD)
Nếu X là 1 candidate key thì tất cả
các thuộc tính Y của lược đồ R sẽ
phải phụ thuộc hàm vào X
Ví dụ: trong lược đồ PROFESSOR có
ProfId là primary key nên:
ProfId Name, Qualification
Có 1 số FD trong lược đồ sẽ gây ra
dư thừa dữ liệu.
8
Ví dụ FD và dư thừa dữ liệu
Xét lược đồ PERSON(SSN, Name,
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
Bất thường xảy ra khi một người có
nhiều sở thích thay đổi địa chỉ
9
Giải thuật kiểm tra phụ thuộc hàm
Bài toán: cho quan hệ r và 1 phụ
thuộc hàm f:X Y. Kiểm tra xem r
thỏa mãn f hay không?
Function Satisfies(r,f:X Y)
• Sắp thứ tự các bộ trong r theo các thuộc
tính của X
• If mỗi tập các bộ có cùng giá trị X thì có
cùng giá trị Y then
Satisfies = true
• Else
Satisfies = false
10
Tậ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
YX
Số tập con có thể có của R =
{A1,A2,...,An} là 2n. Ứng với mỗi tập con
sẽ có tối đa 2n. Số FD tối đa có thể có
trong 1 lược đồ là 22n.
11
Tập phụ thuộc hàm
FD được dùng để thể hiện các ràng
buộc bảo toàn (integrity constraint),
vì vậy DBMS cần phải quản lý các
FD.
Với 1 tập S chứa toàn bộ các FD của
1 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.
12
Hệ tiên đề Amstrong
Phụ thuộc hàm XY được suy diễn
luận lý 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
13
Hệ tiên đề Amstrong
Quy tắc suy diễn (inference rule):
nếu 1 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
14
Hệ tiên đề Amstrong
Các tiên đề suy diễn:
• F1. Phản xạ (reflexivity): YX
XY
• F2. Gia tăng (augmentation): XY
XZ YZ
• F3. Bắc cầu (transitivity): XY và
YZ X Z
15
Hệ 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
16
Bao đóng của tập phụ thuộc hàm
Bao đóng (closure) của tập phụ
thuộc 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
Ký hiệu F+
F+ là 1 tập hợp các FD được suy diễn
từ F
17
Các tính chất của bao đóng của tập
phụ thuộc hàm
1.
2.
3.
Tính phản xạ: với mọi tập phụ
thuộc hàm F+ ta luôn có F F+
Tính đơn điệu: nếu F G thì F+
G+
Tính lũy đẳng: với mọi tập phụ
thuộc hàm F ta luôn có (F+)+ =
F+.
18
Hệ tiên đề Amstrong
Hệ tiên đề Amstrong là đúng đắn
(sound) 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
Hệ tiên đề Amstrong là toàn vẹn
(completeness) bảo đảm rằng f
F+ nếu và chỉ nếu f là 1 FD được suy
diễn
19
Phụ 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.
F và G là tương đương nhau nếu F
suy diễn G và G suy diễn F
20
Kiểm tra các tập FD tương đương
Input: F,G – các tập FD
Output: true nếu F tương đương G,
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
21
Ví dụ
Hãy khảo sát 2 tập FD sau:
• 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
22
Bao đóng của tập phụ thuộc hàm
Ví dụ cho F={AB C, CB} trên r(ABC)
F+={AA, ABA, ACA, ABCA,
BB, ABB, BCB, ABCB,
CC, ACC, BCC, ABCC,
ABAB, ABCAB,
ACAC, ABCAC,
BCBC, ABCBC,
ABCABC,
ABC, ABAC, ABBC, ABABC,
CB,CBC, ACB, ACAB }
23
Bao đóng của tập thuộc tính
Bao đóng của tập thuộc tính X dựa
trên một tập phụ thuộc hàm F
(closure of X under F) là 1 tập thuộc
tính Y sao cho:
• XY F+
• XZ F+: Z Y
Hoặc
X
F
= {A|XA F+}
24
Giả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
Procedure Closure(X,F,Closure_X)
Begin
Closure_X:=X;
repeat
Old_X := Closure_X;
for mỗi WZ trong F do
if W Closure_X then
Closure_X :=Closure_X Z;
until Closure_X = Old_X;
End;
25
Ví dụ tìm bao đóng của X
Cho R(A,B,C,D,E,F) và tập
F={f1:DB, f2: AC, f3: ADE,
f4:CF}
Tìm A+F:
• A+F ={A}
• Duyệt F lần 1: Từ f2 A+F = {AC}; Từ
f4 A+F = {ACF}
• Duyệt F lần 2: A+F không thay đổi
A+F = {ACF}
Tìm {AD}+F ???
26
Kiểm tra thành viên trong F+
Để xác định F|= XY, cần kiểm tra
X Y F+
Giải thuật:
• Nhập: phụ thuộc hàm XY và tập F
• Xuất: true nếu F|= XY, ngược lại là
false
Function Member(X,Y,Z)
Begin
if Y Closure(X,F) then Member = true
else Member = false;
End
27
Ví dụ kiểm tra phụ thuộc hàm
Cho F={DB, AC, ADE, CB}.
Kiể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
28
Giải thuật tìm khóa của lược đồ quan hệ
Nhập: R(U) và tập phụ thuộc hàm F
Xuất: tập hợp K bao gồm tất cả khóa
của R
Tập thuộc tính nguồn (TN) chứa tất
cả các 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
TN=U- fF right(f)
29
Giả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
TD= fF right(f) - fF left(f)
Tập thuộc tính trung gian (TG) chứa
tất cả 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
30
Thuật toán tìm tất cả khóa
Bước 1: tạo tập thuộc tính nguồn TN.
Tập thuộc tính trung gian TG
Bước 2: if TG = then lược đồ quan
hệ chỉ có 1 khóa K
K=TN Kết thúc
Ngược lại qua bước 3
Bước 3: tìm tất cả các tập con Xi của
tập trung gian TG
…..
31
Thuật toán tìm tất cả khóa (tt)
Bước 4: tìm các siêu khóa Si bằng
cách Xi
if (TN Xi)+ = Q+ then Si =
TN Xi
Bước 5: tìm khóa bằng cách loại bỏ
các siêu 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
32
Ví dụ 1
Cho R(A,B,C,D,E,F) và F={DB, AC,
ADE, CF}. Tìm tất cả các khóa của R
B1: TN={AD}, TG={C}
Xi là các tập con của TG
Xi
Xi TN (Xi TN)+
Siêu
khóa
AD
ADBCEF=R+
AD
C
ADC
ADBCEF=R+
ADC
Khóa
AD
33
Ví dụ 2
Cho R(A,B,C,D,E,F) và F={AD, CAF,
AB EC}. Tìm khóa của R?
TN={B} , TG={AC}
Khóa của R là {AB} và {BC}
Xi Xi TN (Xi TN)+
B
B
C CB
A AB
AC ABC
Siêu khóa
ABCDEF=R+ BC
ABCDEF=R+ AB
ABCDEF=R+ ABC
Khóa
BC
AB
34