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
YX
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 XY đượ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 XY
• Ký hiệu F|=XY
• F bao hàm (implies) XY
• XY đượ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): YX 
XY
• F2. Gia tăng (augmentation): XY
 XZ YZ
• F3. Bắc cầu (transitivity): XY và
YZ  X Z
15
Hệ tiên đề Amstrong



F4. Hợp (additivity): XY và XZ  X
YZ
F5. Chiếu (projectivity): XYZ  X Y
F6. Bắc cầu giả (pseudotransitivity): XY
và YZW  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={ ACB, AC, DA}
• G={AB, AC, DA, DB}
F và G có tương đương nhau không???
Từ AC + Tiên đề F2  AAC (1)
Từ (1)+ ACB + tiên đề F3  AB
Từ DA + AB + 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, CB} trên r(ABC)
F+={AA, ABA, ACA, ABCA,
BB, ABB, BCB, ABCB,
CC, ACC, BCC, ABCC,
ABAB, ABCAB,
ACAC, ABCAC,
BCBC, ABCBC,
ABCABC,
ABC, ABAC, ABBC, ABABC,
CB,CBC, ACB, ACAB }
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:
• XY F+
• XZ F+: Z Y
Hoặc
X

F
= {A|XA  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 WZ 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:DB, f2: AC, f3: ADE,
f4:CF}
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|= XY, cần kiểm tra
X Y  F+
Giải thuật:
• Nhập: phụ thuộc hàm XY và tập F
• Xuất: true nếu F|= XY, 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={DB, AC, ADE, CB}.
Kiểm tra F có bao hàm AB??
- Tìm A+F?  A+F = {ACB}
- Do B  A+F nên F bao hàm AB
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- fF 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= fF right(f) - fF 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={DB, AC,
ADE, CF}. 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={AD, CAF,
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