PH THUC HÀM VÀ XÁC ĐỊNH KHÓA CA QUAN H
1.Định nghĩa:
Cho r(A,B,C) , vi r là quan h và A,B,C là thuc tính
Ph thuc hàm A B ( đọc là A xác định B) được định nghĩa là:
t, t’ r nếu t.A = t’.A thì t.B = t’.B
Ý nghĩa : Nếu hai b có cùng tr A thì có cùng tr B.
2.H tiên đề cho ph thuc hàm
Cho lược đồ quan h r(U), F là tp các ph thuc hàm được định nghĩa trên
quan h r, U là tp thuc tính.
Ph thuc hàm A B
Ta có A B được suy logic t F nếu quan h r trên U tha các ph thuc
hàm trong F thì cũng tha ph thuc hàm A B.
Ví d: F = { A B , B C }
Ta có ph thuc hàm A C là ph thuc hàm được suy t F.
3. Bao đóng: Bao đóng ca F ký hiu là F+ là tp tt c các ph thuc hàm được
suy t F, F+ được định nghĩa :
F+ = { f / F |=f }
4. H tiên đề Amstrong
T F suy ra F+da trên h tiên đề Amstrong. H tiên đề Amstrong bao gm:
a1) phn x: Nếu Y X thì X Y
a2) tăng trưởng: Nếu Z U và X Y thì XZ YZ
Ký hiu XZ là X Z
a3) bt cu: Nếu X Y và Y Z thì X Z
a4) bt cu gi:
Nếu X Y và WY Z thì XW Z
a5) Lut hp: nếu X Y và X Z thì X YZ
a6) Lut phân rã: Nếu X Y và Z Y thì X Z
Trong sáu lut trên thì a4, a5, a6 suy được t a1, a2, a3.
Chng minh a5 có th suy được t a2 và a3
Nếu X Y và X Z thì X YZ
Tht vy,
T ph thuc hàm X Y dùng a2 ( lut tăng trưởng) ta có X XY
T X Z dùng a2 ( lut tăng trưởng) ta có XY ZY
Dùng a3 lut bt cu t X XY và XY ZY ta có X ZY
Lut bt cu gi:
Nếu X Y và WY Z thì XW Z
Tht vây t X Y dùng a2 (lut tăng trưởng ) thêm W ta có:
WX WY
Ngoài ra ta đã có WY Z nên theo tính bt cu ta có :
WX Z
H tiên đề Amstrong là đúng và đủ.
Đúng: Cho R, F
Nếu X Y là ph thuc hàm được suy t F nh h tiên đề Amstrong
thì X Y cũng đúng trên R.
Đủ: Nếu X Y không tha trên R thì X Y không th được suy t F.
5. Thut toán tính bao đóng
Cho X U, ký hiu X+ ={A U | X A F+}
Thut toán:
Vào: Tp thuc tính X và tp ph thuc hàm F
Ra: Bao đóng X đối vi F, closure(X,F)
Begin
Olddep =
Newdep = X
While Newdep <> Olddep do begin
Olddep = Newdep
For each pth W Z F do
If Newdep W then
Newdep = Newdep Z
End { if }
End { for}
End { while}
Return ( Newdep)
End
Ví d:
Cho F = { A D , AB E, BI E , CD I , E C }
Tính Closure(AE,F) ?
Theo định nghĩa ta có :
AE +
F = { X | AE X F+}
Ban đầu:
While pass# Olddep NewDep Ghi chú
0 AE
AED
Duyt qua tng pth W Z F
ca F, tìm W sao cho W AE ta
có pth A D vì A AE lut
phn x cho AE A. lúc này Z
là D.
AEDC
Kế đó E C
Vì E AED
KHÓA CA QUAN H
1.Định nghĩa: Cho quan h r( R ), tp K R được gi là khóa ca quan h r
nếu:K+=R nếu bt mt phn t khi K thì bao đóng ca nó s khác R. Như thế tp
K R nếu K+=R và ( K \ A )+ R , A R.
Trc quan t định nghĩa, nếu K là mt tp thuc tính mà K+=R thì ta có th bt
các thuc tính ca K đề nhn được tp K bé nht và đó chính là khóa ca quan h.
Ví d: Cho R = { A, B, C, D, E, G } và
F= { AB C , D EG , BE C , BC D , CG BD, ACD B,
CE AG}
Ta s thy các tp thuc tính:
K1 = { A, B } , K2 = {B,E} , K3={C,G} , K4={C,E} , K5 = {C,D}, K6={B,C} đều
là khóa , nghĩa là mt quan h có th có nhiu khóa.
Thut toán tìm khóa:
Ý tưởng ca thut toán:
Bt đầu t tp R vì R+ = R, ta bt dn các phn t ca R đề nhn được tp bé
nht mà bao đóng ca nó vn bng R.
Thut toán
Vào: r(R) , F
Ra : K ( khóa )
Bước 1: Gán K = R
Buc 2: Lp li các bước sau:
Loi khi K phn t A mà ( K \ A )+ = R
Mô t thut toán bng ngôn ng gi ta Pascal
Begin
K := R
For each A in K do
If ( K \ A )+ = R then K := K \ A
End
Nhn xét thut toán trên ch tìm được mt khóa trong sơ đồ quan h. Nếu cn
tim nhiu khóa , ta thay đổi trât t loi b các phn t ca K.
Ví d:
Cho R = { A,B,C,D,E,G,H,I}
F= { AC B, BI ACD, ABC D , H I , ACE BCG , CG AE }
Tìm K ?
Bước 1: Gán K = R = {A,B,C,D,E,G,H,I}
Bước 2: Ln lượt loi bt các thuc tính ca K
Loi phn t A: ta có {B,C,D,E,G,H,I}+ = R vì pth CG AE khiến A thuc v
{B,C,D,E,G,H,I}+ nên K = {B,C,D,E,G,H,I}.
Loi phn t B, ta có {C,D,E,G,H,I}+ = R vì pth CG AE khiến A thuc v
{C,D,E,G,H,I}+ và pth AC B nên K {C,D,E,G,H,I}.
Loi phn t C, ta có {D,E,G,H,I}+ R nên K vn là {C, D,E,G,H,I}
Loi phn t D, ta có: {C, E,G,H,I}+ = R vì pth CG AE khiến A thuc v
{C, E,G,H,I}+ và pth AC B nên K ={C,E,G,H,I}.
Loi phn t E, ta có: {C, G,H,I}+ = R vì pth CG AE , AC B , ABC D
nên K ={C,G,H,I}.
Loi phn t G, ta có: {C, H,I}+ R nên K vn là {C, G,H,I}.
Loi phn t H, ta có: {C, G,I}+ R nên K vn là {C, G,H,I}.
Loi phn t I, ta có: {C,G,H}+ = R vì CG AE , AC B, ABC D nên
K={C,G,H}.
Vêy K={ C,G,H} là mt khóa ca r ( R )
T thut toán tìm khóa ta có các nhn xét sau:
Các thuc tính không xut hin trong c vế trái ln vế phi ca F phi có
trong khóa.
Các thuc tính ch xut hin trong vế trái ca tt c các pth trong F cũng
phi có mt trong Khóa.
Trong quá trình tìm khóa ta có th b bt tt c các thuc tính đơn nm bên
phi ca các pth ca F. Tuy nhiên cn kim tra li vì không phi lúc nào
cũng có th b được các thuc tính đó.
Định lý:
Nếu K là khóa ca quan h r( R ) và F thì
t1,t2 r, t1.K t2.K
Chng minh: