CHƯƠNG 5
PHỤ THUỘC HÀM Functional dependency
1
NỘI DUNG
• PHỤ THUỘC HÀM • BÀI TOÁN TÌM PHỦ TỐI THIỂU • BÀI TOÁN TÌM KHÓA
2
(cid:1)(cid:1)(cid:1)(cid:1)Pth là m(cid:7)t công c(cid:12) bi(cid:15)u di(cid:18)n m(cid:7)t cách hình th(cid:21)c m(cid:7)t d(cid:22)ng ràng bu(cid:7)c tòan v(cid:27)n (cid:1)(cid:1)(cid:1)(cid:1) Pth ñ(cid:29)(cid:30)c (cid:21)ng d(cid:12)ng trong vi c gi!i quy$t bài tóan tìm khóa, tìm ph* t+i thi(cid:15)u và chu,n hóa c- s/ d0 li u
PHỤ THUỘC HÀM
• Khái niệm phụ thuộc hàm • Bao ñóng của một tập phụ thuộc hàm F • Bộ luật dẫn AMSTRONG • Bao ñóng của tập thuộc tính X • Thuật toán tìm F+
3
1. KHÁI NIỆM
phanCong
(PHICONG,
MAYBAY,
NGAYKH,
GIOKH)
Cushing
83
9/8
10:15a
Cushing
116
10/8
1:25p
Clark
281
8/8
5:50a
Clark
301
12/8
6:35p
Clark
83
11/8
10:15a
Chin
83
13/8
10:15a
Chin
116
12/8
1:25p
Copely
281
9/8
5:50a
Copely
281
13/8
5:50a
Copely
412
15/8
1:25p 4
Xét ví dụ (sgk) : Cho quan hệ Phân công
Trong thế giới thực luôn có những qui tắc hoạt ñộng : - Mỗi máy bay có một giờ khởi hành duy nhất - Nếu biết phi công, Ngày và giờ khởi hành thì biết ñược máy bay do phi công này lái - Nếu biết máy bay, ngày khởi hành thì biết phi công lái chuyến bay ñó
Những qui tắc hoạt ñộng trên là một loại ràng buộc , ñược gọi là phụ thuộc hàm , và có thể phát biểu lại như sau :
MAYBAY xác ñịnh GIOKH GIOKH phụ thuộc hàm vào MAYBAY
5
Hay ðược ký hiệu
f1: f2: f3: {MAYBAY}→→→→ GIOKH {PHICONG,NGAYKH,GIOKH}→→→→ MAYBAY {MAYBAY,NGAYKH}→→→→ PHICONG
(cid:2)(cid:2)(cid:2)(cid:2) ðịnh nghĩa phụ thuộc hàm
X →→→→Y ⇔⇔⇔⇔ ( t1.X = t2.X ⇒⇒⇒⇒ t1.Y= t2.Y )
Cho lược ñồ quan hệ Q(A1,A2,…,An) X, Y là hai tập con của Q+ = {A1,A2,…,An} r là quan hệ trên Q t1, t2 là hai bộ bất kỳ trên r
6
- N$u ∃∃∃∃ t1,t2 ∈∈∈∈r , sao cho t1.X = t2.X và t1.Y ≠ t2.Y pth X →→→→Y không th=a trên r ta nói :
- N$u v?i m@i quan h r ñAu th=a mãn pth X →→→→Y , ta nói pth X →→→→Y ñ(cid:29)(cid:30)c ñCnh nghĩa trên l(cid:29)(cid:30)c ñE quan h Q
Phụ thuộc hàm nào sau ñây thỏa
r (A , B , C , D , E)
A →→→→D , AB→→→→D
AB→→→→C
a1 a1 a2 a2 a3
b1 b2 b1 b1 b2
c1 c2 c3 c4 c5
d1 d1 d3 d3 d1
e1 d1 e1 e1 e1
Phụ thuộc hàm nào sau ñây thỏa q
BC→→→→E , DE→→→→C , A →→→→ BCDE
a1 a2 a3 a4 a5
b1 b2 b1 b2 b1
c1 c2 c1 c2 c1
d1 d2 d1 d2 d3
e1 e2 e1 e2 e1
7
2.2. Phụ thuộc hàm ñược suy diễn logic từ F Bao ñóng của một tập phụ thuộc hàm F
⇒⇒⇒⇒⇒⇒⇒⇒
1. MB →→→→→→→→ G G 1. MB 2. MB,N →→→→→→→→ PCPC 2. MB,N 3. PC,N,G →→→→→→→→ MBMB 3. PC,N,G
4. MB,N →→→→→→→→ G G 4. MB,N 5. MB,N,G →→→→→→→→ PCPC 5. MB,N,G 6. PC, N, G →→→→→→→→ PCPC 6. PC, N, G …
VVíí duduïï: : phanCong(PC phanCong(PC, MB, N, G) , F ={(1),(2),(3)} , MB, N, G) , F ={(1),(2),(3)}
FF++ FF
ÑÑònhònh nghnghóóaa: : Phụ thuộc hàm X →→→→ Y ñược suy diễn logic từ F nếu một lược ñồ quan hệ Q thỏa mãn tất cả các phụ thuộc hàm của F thì cũng thỏa phụ thuộc hàm X →→→→ Y.
Ký hiệu F |= X →→→→ Y ((GGọọii F |= X →→→→ Y là phphụụ thuthuộộcc hhààmm hhệệ ququảả))
8
(1) thothoûûaa maõnmaõn ththìì (4) (4) cuõng cuõng ñöñöôôïïcc thothoûûaa maõnmaõn ⇒⇒⇒⇒⇒⇒⇒⇒ chchææ
NX : NX : NeNeááuu (1) cacaàànn kiekieååmm tratra (1)(1)
(cid:3)(cid:3) BaoBao ññooùùngng FF++ cucuûûaa FF : : llàà ttậậpp ttấấtt ccảả ccáácc phphụụ thuthuộộcc hhààmm ñưñượợcc suysuy
(cid:3)(cid:3) LuaLuaäätt daãndaãn ññeeåå suysuy rara phuphuïï thuo
didiễễnn logic logic ttừừ FF
thuoääcc hahaøømm heheää quaquaûû ttöøöø F :F : thuoääcc hahaøømm suysuy ttöøöø FF qua qua lualuaäätt daãndaãn ((kykyùù hiehieääuu F F ff’’ ) ) neneááuu
j=1,……,i,i--1)1) ff’’ lalaøø phuphuïï thuo ∃∃ ff11, f, f22,,……, f, fnn saosao chocho ffnn=f=f’’ vavaøø ((ffii ∈∈ FF) ) ∨∨ ((ffii ñöñöôôïïcc suysuy dieãndieãn ttöøöø ffjj vôvôùùii j=1,
9
KyKyùù hiehieääuu F F ’’={f={f’’ | | FF ff’’} } ⇒⇒ cacaàànn ttììmm lualuaäätt daãndaãn saosao chocho F F ’’= = FF++ ; ; nghnghóóaa lalaøø ∀∀f, f, FF== f f ⇒⇒ FF f f vavaøø FF f f ⇒⇒ FF == f f
3. Bộ Luật Dẫn AMSTRONG (Hệ tiên ñề Amstrong)
Cho quan hệ Q(Q+) . X,Y,Z,W là các tập thuộc tính của Q+ Hệ tiên ñề Amstrong gồm các luật sau (F1) LuIt ph!n x(cid:22) (reflexive rule): N$u Y ⊆⊆⊆⊆X thì X →→→→Y
(F2) LuIt thêm vào (augmentation rule):
N$u X →→→→Y thì XZ →→→→Y trong ñó ký hi u XZ thay cho X∪∪∪∪Z
(F3) LuIt bPc cQu (transitive rule):
N$u X →→→→Y và Y →→→→Z thì X →→→→Z
Armstrong llàà ññúúngng vvàà ññầầyy ññủủ ((xemxem sgksgk) )
10
CCầầnn chchứứngng minhminh HHệệ tiêntiên ññềề Armstrong : F f f ⇒⇒⇒⇒⇒⇒⇒⇒ F F ======== f f TTíínhnh ññúúngng : F TTíínhnh ññầầyy ññủủ : : ∀∀∀∀∀∀∀∀ F F ======== f f ⇒⇒⇒⇒⇒⇒⇒⇒ F F ff
(F1), (F2), (F3) CCáácc luluậậtt ddẫẫnn khkháácc suysuy ttừừ (F1), (F2), (F3) (F4) BPc cQu gi! : n$u X →→→→Y và YW →→→→Z thì XW →→→→Z. (F5) LuIt h(cid:7)i : n$u X →→→→Y và X →→→→Z thì X →→→→YZ (F6) LuIt phân rã : n$u X →→→→Y và Z⊆⊆⊆⊆Y thì X →→→→Z
Ví dụ :
Luật phản xạ
Luật thêm vào
B ⊆⊆⊆⊆ AB A →→→→ DE
Luật bắc cầu
AB →→→→ B AB →→→→ DE AB →→→→ DEB ABC →→→→ DEB A →→→→ C
Luật bắc cầu giả
AB →→→→ C
Luật hội
A →→→→ DEB
Luật phân rã
A →→→→ DE DE →→→→ C A →→→→ DE DEB →→→→ C A →→→→ DE A →→→→ B A →→→→ DE
A →→→→ D , A →→→→ E
11
Chứng minh Luật thêm vào: giả sử có t1.XZ
= t2.XZ (1)
= t2.X = t2.Y (do X →Y) (2)
⇒ t1.X ⇒ t1.Y ⇒ XZ →Y (do (1) ⇒(2)) Luật hợp: giả sử có t1.X = t2.X (1)
= t2.Y và t1.Z = t2.Z = t2.YZ (2)
⇒ t1.Y ⇒ t1.YZ ⇒ X →YZ (do (1) ⇒(2))
Luật phân rã: gỉa sử có t1.X
= t2.X (1)
= t2.YZ (do X →YZ) = t2.Y (2)
⇒ t1.YZ ⇒ t1.Y ⇒ X →Y (do (1) ⇒(2))
Luật bắc cầu: giả sử có t1.X= t2.X (1)
= t2.Y = t2.Z (2)
⇒ ⇒ ⇒
t1.Y t1.Z X →Z (do (1) ⇒(2))
Luật bắc cầu giả: giả sử có t1.XZ = t2.XZ (1)
= t2.X và t1.Z = t2.Z (2) = t2.Y (do X →Y) (3) = t2.YZ (Kết hợp (2) và (3)) = t2.W (do YZ →W) (4)
12
⇒ ⇒ ⇒ ⇒ ⇒
t1.X t1.Y t1.YZ t1.W XZ →W
Bài tIp 1 : Ch(cid:21)ng t= các pth sau ñ(cid:29)(cid:30)c suy di(cid:18)n tY F nhZ b(cid:7) luIt d[n Amstrong ?
F = { B →→→→→→→→ A ,A ,
AC →→→→→→→→ DADA ? DADA →→→→→→→→ CE ,CE ,
AC →→→→→→→→ DHDH D →→→→→→→→ H , H ,
AC →→→→→→→→ EHEH AC →→→→→→→→ D D }
F = { B →→→→→→→→ A ,A ,
? BDBD →→→→→→→→ CE ,CE , BD →→→→→→→→ EH EH
A →→→→→→→→ CB , CB , B B →→→→→→→→ CGCG
13
C →→→→→→→→ G ,G ,
GE GE →→→→→→→→ H H }
Ví dụ F = { B →→→→→→→→ A ,A ,
Chứng minh AC →→→→→→→→ DA ?DA ? DADA →→→→→→→→ CE ,CE ,
D →→→→→→→→ H , H ,
f4 : AC →→→→→→→→ DD
AC →→→→→→→→ A (A (theotheo luluậậtt phphảảnn xxạạ))
TaTa ccóó f4 : vvàà => => SuySuy rara AC →→→→→→→→ DA (DA (theotheo luluậậtt hhộộii))
14
AC →→→→→→→→ D D }
4.Bao ñóng của tập thuộc tính X (closures of attribute sets)
Cho Q là lược ñồ quan hệ Q( Q+), F là tập các phụ thuộc hàm ñịnh nghĩa trên Q , gọi X, Ai ⊆⊆⊆⊆⊆⊆⊆⊆ Q+.
F )
Bao ñóng c*a tIp thu(cid:7)c tính X dba trên F ký hi u là X+ (hodc X+
F = ∪∪∪∪Ai v?i X →→→→Ai là ph(cid:12) thu(cid:7)c hàm ñ(cid:29)(cid:30)c suy di(cid:18)n tY F nhZ h tiên ñA Armstrong (cid:4)(cid:4) NhNhậậnn xxéétt : X
X+
⇒⇒⇒⇒⇒⇒⇒⇒ BBổổ ññềề : : X X →→→→→→→→Y Y ∈∈∈∈∈∈∈∈FF++ ⇔⇔⇔⇔⇔⇔⇔⇔ Y Y ⊆⊆⊆⊆⊆⊆⊆⊆XX++ ChChứứngng minhminh :: (1) X →→→→→→→→ Y Y ⇒⇒⇒⇒⇒⇒⇒⇒ ttồồnn ttạạii k k saosao chocho Y = Y = AAkk ⊆⊆⊆⊆⊆⊆⊆⊆ ∪∪∪∪∪∪∪∪ Ai = X+ Ai = X+ theotheo ññịịnhnh nghnghĩĩaa ccủủaa XX++ (1) X (2) Y ⊆⊆⊆⊆⊆⊆⊆⊆ XX++ ⇒⇒⇒⇒⇒⇒⇒⇒ XX++ = Y = Y ∪∪∪∪∪∪∪∪ (X(X++ -- Y) Y) ⇒⇒⇒⇒⇒⇒⇒⇒ X X →→→→→→→→ Y Y ∪∪∪∪∪∪∪∪ (X(X++ -- Y)Y)⇒⇒⇒⇒⇒⇒⇒⇒ X X →→→→→→→→ Y Y theotheo luluậậtt phânphân (2) Y rãrã
15
: X ⊆⊆⊆⊆⊆⊆⊆⊆ XX++ , X, X++ ⊆⊆⊆⊆⊆⊆⊆⊆ QQ++
Thuật toán tìm bao ñóng X+: Tính liên tiếp tập các
tập thuộc tính X0,X1,X2,... theo phương pháp sau:
lQn l(cid:29)(cid:30)t xét các ph(cid:12) thu(cid:7)c hàm c*a F B(cid:29)?c 1: X0 = X B(cid:29)?c 2:
N$u Y→→→→Z có Y ⊆⊆⊆⊆Xi thì Xi+1 = Xi ∪∪∪∪Z Lo(cid:22)i ph(cid:12) thu(cid:7)c hàm Y →→→→Z kh=i F
16
B(cid:29)?c 3: N$u / b(cid:29)?c 2 không tính ñ(cid:29)(cid:30)c Xi+1 thì Xi chính là bao ñóng c*a X Ng(cid:29)(cid:30)c l(cid:22)i ldp l(cid:22)i b(cid:29)?c 2
Ví d(cid:12) 1: Cho l(cid:29)(cid:30)c ñE quan h Q(ABCDE) và tIp ph(cid:12) thu(cid:7)c hàm F F = {
f1: f2: f3: f4: A →→→→B B →→→→C C →→→→D D →→→→E }
Tìm bao ñóng c*a tIp X = {AB} dba trên F
17
Gi!i: B(cid:29)?c 1:X0 = AB B(cid:29)?c 2: xét f1 vì A ⊆⊆⊆⊆X0 (cid:5)(cid:5)(cid:5)(cid:5) X1 = AB ∪∪∪∪B = AB , lo(cid:22)i f1 xét f2 vì B ⊆⊆⊆⊆X1 (cid:5)(cid:5)(cid:5)(cid:5) X2 = AB ∪∪∪∪C = ABC , l@ai f2 xét f3 vì C ⊆⊆⊆⊆X2 (cid:5)(cid:5)(cid:5)(cid:5) X3 = ABC ∪∪∪∪D = ABCD , lo(cid:22)i f3 xét f4 vì D ⊆⊆⊆⊆X3 (cid:5)(cid:5)(cid:5)(cid:5) X4 = ABCD ∪∪∪∪E = ABCDE , lo(cid:22)i f4
B(cid:29)?c 3 : X+ = X4 = {ABCDE} là bao ñóng c*a X
Ví d(cid:12) 2: (sgk ) Cho l(cid:29)(cid:30)c ñE quan h Q(ABCDEGH) và tIp ph(cid:12) thu(cid:7)c hàm F F = {
f1: f2: f3: f4: f5: B →→→→A DA →→→→CE D →→→→H GH →→→→C AC →→→→D }
B(cid:29)?c 1: X0 = AC B(cid:29)?c 2: xét f5 vì AC ⊆⊆⊆⊆X0 (cid:5)(cid:5)(cid:5)(cid:5) X1 = AC ∪∪∪∪D = ACD
xét f2 vì AD ⊆⊆⊆⊆X1 (cid:5)(cid:5)(cid:5)(cid:5) X2 = ACD ∪∪∪∪CE = ACDE xét f3 vì D ⊆⊆⊆⊆X2 (cid:5)(cid:5)(cid:5)(cid:5) X3 = ACDE ∪∪∪∪H = ACDEH
Xét f1, f4 :không th=a vì có v$ trái không nlm trong X3 VIy X3 không thay ñmi (cid:5)(cid:5)(cid:5)(cid:5) X+=X3={ACDEH} là bao ñóng c*a X (cid:5)(cid:5)(cid:5)(cid:5) AC →→→→EH ∈∈∈∈ F+
18
Ch(cid:21)ng minh f= {AC →→→→EH } ñ(cid:29)(cid:30)c suy d[n tY F ? Gi!i:
Bài tIp 2: Cho Q(ABCDEGH) và tIp pth F th=a trên Q.
Tìm bao ñóng c*a AC ?
F = { B →→→→→→→→ A ,A ,
DADA →→→→→→→→ CE ,CE , AC + = ?
D →→→→→→→→ H , H ,
AC →→→→→→→→ D D }
F = { B →→→→→→→→ A ,A ,
BDBD →→→→→→→→ CE ,CE ,
A →→→→→→→→ CB , CB , B + = ?
19
C →→→→→→→→ G ,G ,
GE GE →→→→→→→→ H H }
5. Thuật toán tìm F+ Thuật toán cơ bản ðể tính bao ñóng F+ của tập các phụ thuộc hàm F ta thực
hiện các bước sau:
• Bước 1: Tìm tất cả tập con của Q+ • Bước 2: Tìm tất cả các phụ thuộc hàm có thể có của Q. • Bước 3: Tìm bao ñóng của tất cả tập con của Q. • Bước 4: Dựa vào bao ñóng của tất cả các tập con ñã tìm
ñể xác ñịnh phụ thuộc hàm nào thuộc F+
Thuật toán cải tiến Dựa vào thuật toán cơ bản trên, ta nhận thấy có thể tính F+ theo các bước sau: Bước 1: Tìm tất cả tập con của Q+ Bước 2: Tìm bao ñóng của tất cả tập con của Q+. Bước 4: Dựa vào bao ñóng của các tập con ñã tìm ñể suy ra các phụ thuộc hàm thuộc F+. 20
Phủ và Phủ tối thiểu
Các khái niệm : • • •
Tập phụ thuộc hàm tương ñương với F Phủ của F Phủ tối thiểu của F
21
1. Hai tập phụ thuộc hàm tương ñương
Tập phụ thuộc hàm F và G tương ñương nếu F+ = G+
ký hiệu F ≡≡≡≡≡≡≡≡ GG
Bổ ñề : F ≡≡≡≡≡≡≡≡ G G nnếếuu vvàà chchỉỉ nnếếuu F |F |======== G G vvàà G |G |======== FF (cid:6)(cid:6)(cid:6)(cid:6)(cid:6)(cid:6)(cid:6)(cid:6) NNếếuu F F ≡≡≡≡≡≡≡≡ G G ⇒ FF ======== GG và GG ======== FF
∀∀∀∀∀∀∀∀gg∈∈∈∈∈∈∈∈ G +, g: X G +, g: X →→→→→→→→ YY ⇒ gg∈∈∈∈∈∈∈∈ FF + + ⇒ FF ======== gg
Do Do ññóó ∀ ∀ ∀ ∀ ∀ ∀ ∀ ∀gg∈∈∈∈∈∈∈∈ GG ththìì FF======== g hay F g hay F ======== G G
Tương ttựự ∀∀∀∀∀∀∀∀ff∈∈∈∈∈∈∈∈ FF ththìì G G ======== f hay Tương f hay GG ======== FF
(cid:6)(cid:6) NNếếuu F F ======== GG và GG ======== FF ⇒ FF ≡≡≡≡≡≡≡≡ GG
F F ======== GG ⇒ GG ⊆ FF + ⇒ GG +⊆ (FF +)+= FF +
22
GG ======== F F ⇒ FF ⊆ GG + ⇒ FF +⊆ (GG +)+= GG +
Thuật tóan xác ñịnh F và G có tương ñương không ?
B1 :với mỗi X →→→→→→→→ Y Y ccủủaa F F xxáácc ññịịnhnh xemxem X →→→→→→→→ Y Y ccóó ñưñượợcc không suysuy ddẫẫnn ttừừ G G không
B2 :với mỗi X →→→→→→→→ Y Y ccủủaa G G xxáácc ññịịnhnh xemxem X →→→→→→→→ Y Y ccóó ñưñượợcc không suysuy ddẫẫnn ttừừ F F không
23
NNếếuu ccảả 2 2 bưbướớcc trêntrên ññềềuu ññúúngng ththìì F F ≡≡≡≡≡≡≡≡ GG
Ví dụ 1: Cho lược ñồ quan hệ Q (ABCDE) và 2 tập pth
F ={A→→→→→→→→BC, BC, A→→→→→→→→D, CDD, CD→→→→→→→→E E } và G ={A→→→→→→→→BCE, BCE, A→→→→→→→→ABD, CD ABD, CD→→→→→→→→E E }
1. F có tương ñương với G không ?
2. F có tương ñương với G’ = { A→→→→→→→→BCDE BCDE }
1. Nhận xét : F ñược suy diễn từ G (1)
+ = {ABCDE} => trong F+ có A→→→→→→→→BCE BCE vvàà A→→→→→→→→ABD (2) ABD (2)
Ta Kiểm tra G có ñược suy diễn từ F không ?
Tính AF
TTừừ (1) (2) : (1) (2) : kkếếtt luluậậnn F F ≡≡≡≡≡≡≡≡ GG
+ = {CD} => G’+ không chứa pth CD →→→→→→→→ EE
2. Ta kiểm tra F có ñược suy diễn từ G’ không ?
24
Tính CDG
KKếếtt luluậậnn : F : F không không tương tương ñương ñương GG’’
Ví dụ 1: Cho lược ñồ quan hệ Q (ABCDE)
và 2 tập pth
F ={A→→→→→→→→BC, BC, A→→→→→→→→D, CDD, CD→→→→→→→→E E } và G ={A→→→→→→→→BCE,
BCE, A→→→→→→→→ABD, CD
ABD, CD→→→→→→→→E E }
1. F có tương ñương với G không ? 2. F có tương ñương với G’ = { A→→→→→→→→BCDE BCDE }
25
Cho lược ñồ quan hệ Q (ABCDE) và 2 tập pth
F ={A→→→→→→→→BC, BC, A→→→→→→→→D, CDD, CD→→→→→→→→E E } và G ={A→→→→→→→→DE , DE , A→→→→→→→→BCE, CD
BCE, CD→→→→→→→→E }E }
F ={A→→→→→→→→B, BB, B→→→→→→→→C, CC, C→→→→→→→→D D } và G ={A→→→→→→→→BCD , B
BCD , B→→→→→→→→CD, CCD, C→→→→→→→→D }D }
F ={A→→→→→→→→B, BB, B→→→→→→→→C, CC, C→→→→→→→→D D } và G ={A→→→→→→→→CD , C
CD , C→→→→→→→→D }D }
F ={AB→→→→→→→→C, BC, B→→→→→→→→C, CDC, CD→→→→→→→→E ,DE ,D→→→→→→→→E E } và G ={B→→→→→→→→C , DC , D→→→→→→→→E }E }
F ={AB→→→→→→→→C, BC, B→→→→→→→→C, CDC, CD→→→→→→→→E ,DE ,D→→→→→→→→E E } và G ={AB→→→→→→→→CC, B→→→→→→→→C, CC, C→→→→→→→→B, BDB, BD→→→→→→→→E }E }
26
Bài tập : xem xét các cặp pth sau có tương ñương không?
BCE, A→→→→→→→→ABD, CD
ABD, CD→→→→→→→→EE }
2. Phủ của F
ABCD, CD→→→→→→→→E }E }
BCD, CD→→→→→→→→E E }
G2 = { A→→→→→→→→E, E, A→→→→→→→→ABCD, CD G3 = { A→→→→→→→→BCD, CD ….
Trong các phủ của F ta quan tâm tới một nhóm phủ gọi là phủ tối thiểu
G là phủ của F nếu G ≡≡≡≡≡≡≡≡ FF Một số phủ của F : G1 = { A→→→→→→→→BCE,
G là phủ tối thiểu của F nếu G là phủ của F ñồng thời thỏa 3 ñiều kiện sau :
- G là tập phụ thuộc hàm có vế trái không dư thừa
(G chỉ chứa những pth ñầy ñủ)
- G là tập phụ thuộc hàm có vế phải một thuộc tính
(G chỉ chứa những pth có vế phải một thuộc tính)
- G là tập phụ thuộc hàm không dư thừa
27
3. Phủ tối thiểu
3.a. Phụ thuộc hàm có vế trái không dư thừa :
Cho F , f: X→Y∈F. Nói rlng ph(cid:12) thu(cid:7)c hàm f: X→→→→Y có
v$ trái d(cid:29) thYa (ph(cid:12) thu(cid:7)c hàm không ñQy ñ*) n$u tEn t(cid:22)i m(cid:7)t Z∈∈∈∈X sao cho :
F ≡≡≡≡F - {X →→→→Y} ∪∪∪∪{Z →→→→Y}
Ví d(cid:12) 1: cho Q(A,B,C) và F= {AB→→→→C; B→→→→C}
AB →→→→C là ph(cid:12) thu(cid:7)c hàm có v$ trái d(cid:29) thYa vì
28
F ≡≡≡≡F- {AB→→→→C}∪∪∪∪{B→→→→C}= {B→→→→C}
Nhận xét :
Pth có vế trái một thuộc tính là pth có vế trái không dư thừa
F là Tập pth có vế trái không dư thừa nếu F không chứa những pth có vế trái dư thừa.
Thuật tóan ñể lọai khỏi F các pth có vế trái dư thừa :
Bước 1: LQn l(cid:29)(cid:30)t thbc hi n b(cid:29)?c 2 cho các pth X→→→→Y c*a F
Bước 2: V?i m@i tIp con X’≠≠≠≠∅∅∅∅c*a X.
29
N$u X'→→→→Y∈∈∈∈F+ thì thay X→→→→Y trong F blng X'→→→→Y
Ví d(cid:12) 2: lọai khỏi F các pth có vế trái dư thừa
cho tIp ph(cid:12) thu(cid:7)c hàm F = {A →→→→BC, B →→→→C, AB →→→→D}
+ = ABCD => A →→→→D ∈∈∈∈F+
+ = BC => B →→→→D ∉∉∉∉F+
- xét pth AB →→→→D :
A →→→→D ∈∈∈∈F+ ? tính AF B →→→→D ∈∈∈∈F+ ? tính BF
Trong F ta thay AB →→→→D blng A →→→→D
VIy F ≡≡≡≡ F’ = {A →→→→ BC, B →→→→C, A →→→→D}
- Các pth còn l(cid:22)i có v$ trái 1 thu(cid:7)c tính _ là pth ñQy ñ*
30
K$t luIn : F ≡≡≡≡F’ là tIp pth có v$ trái không d(cid:29) thYa
3.b. 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 pth trong G chỉ gồm một thuộc tính.
Ví dụ 3: cho F = {A → BC , B → C , A → D} ta suy ra
F ≡ {A → B, A → C , B → C , A → D} = G
31
G ñược gọi là tIp ph(cid:12) thu(cid:7)c hàm có v$ ph!i m(cid:7)t thu(cid:7)c tính.
3.c. Tập phụ thuộc hàm không dư thừa
Nói rlng F là tIp ph(cid:12) thu(cid:7)c hàm không d(cid:29) thYa n$u
không tEn t(cid:22)i X→→→→Y ∈∈∈∈F sao cho F ≡≡≡≡F – {X→→→→Y}. Ng(cid:29)(cid:30)c l(cid:22)i F là tIp ph(cid:12) thu(cid:7)c hàm d(cid:29) thYa.
Ví dụ 4: cho F = {A→BC, B→D, AB→D} thì
F dư thừa vì tồn tại AB→D ∈∈∈∈F mà
F ≡ F – {AB→D} = {A→BC, B→D}
Thuật tóan lọai khỏi F các pth dư thừa:
Bước 1: lần lượt lọai từng pth X →→→→ Y trong F , ta có G
Bước 2: kiểm tra X →→→→ Y có ñược suy dẫn từ G không ?
Bước 3: nếu có thì pth X →→→→ Y là dư thừa và lọai khỏi F
32
quay lại bước 1
Giải theo thuật toán :
cho F = {A→BC, B→D, AB→D}
- Thử loại A→BC , có G = { B→D, AB→D} => A→BC không ñược suy dẫn từ G
- Thử loai B→D , có G = {A→BC, AB→D} => B→D không ñược suy dẫn từ G
- Thử loại AB→D, có G = {A→BC, B→D }
=> AB→D ñược suy dẫn từ G , => F dư thừa AB→D
33
Từ tập phụ thuộc hàm F cho trước , câu hỏi là tìm phủ tối thiểu của F ?
B(cid:29)?c 1: lo(cid:22)i kh=i F các ph(cid:12) thu(cid:7)c hàm có v$ trái d(cid:29) thYa.
B(cid:29)?c 2: Tách các ph(cid:12) thu(cid:7)c hàm có v$ ph!i trên m(cid:7)t thu(cid:7)c tính thành các ph(cid:12) thu(cid:7)c hàm có v$ ph!i m(cid:7)t thu(cid:7)c tính.
B(cid:29)?c 3: lo(cid:22)i kh=i F các ph(cid:12) thu(cid:7)c hàm d(cid:29) thYa
* Bài tóan trọng tâm
Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm *
Nhận xét :
Từ một tập pth F luôn tìm ñược ít nhất một phủ tối thiểu F’
34
Nếu tập pth F có nhiều phủ tối thiểu thì các phủ tối thiểu tương ñương với nhau F’ ≡≡≡≡ F’’ ≡≡≡≡ F
Ví dụ 1: Cho lược ñồ quan hệ Q(A,B,C,D) và tập pth F như sau:
F = {AB → CD,B → C,C → D} Hãy tìm 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?
+ = BCD ⇒ B → CD ∈ F+
+ = A ⇒ A → CD ∉ F+
Xét B → CD ∈ F+ ? trả lời: BF Xét A → CD ∈ F+ ? trả lời: AF 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} = F1 Bước 2: kết quả của bước 2 là:
F ≡≡≡≡ {B →→→→ D; B →→→→ C;C →→→→ D} = F1
Bước 3:
trong F1 , B → C là phụ thuộc hàm dư thừa?
xét B → C ∈ G+ ? với G = F1 - {B → C} = {B → D;C → D} Trả lời : BG
+ = BD ⇒ B → C ∉ G+ ⇒ B →→→→ C không dư thừa trong F1
35
trong F1 , B → D là phụ thuộc hàm dư thừa?
xét B → D ∈ G+ ? với G = F1 - {B → D} = {B → C;C → D} trả lời : BG
+ = BCD ⇒ B → D ∈ G + ⇒ B →→→→ D dư thừa trong F1
trong F1 , C → D là phụ thuộc hàm dư thừa?
xét C → D ∈ G+ ? với G = F1 - {C → D} = {B → D;B → C} trả lời :CG
+ = C ⇒ C → D ∉ G + ⇒ C → D không dư thừa trong F1
Kết quả của bước 3 : cho phủ tối thiểu
F ≡ F1 - {B → D} F ≡≡≡≡ {B →→→→ C;C →→→→ D} = Ftt
36
Ví dụ 2: Cho lược ñồ quan hệ Q(A,B,C,D) và tập phụ thuộc F như sau:
F= {AB → C , B → A , A → B} Hãy tính phủ tối thiểu của F?
Bước 1 : AB → C có là pth có vế trái dư thừa ?
B → C ∈ F+ ? trả lời: B+ = ABC ⇒ B → C ∈ F+
A → C ∈ F+ ? trả lời: A+ = ABC ⇒ A → C ∈ F+
Kết quả có 2 tập F’ và F” có vế trái không dư thừa :
F ≡≡≡≡ F’ = {B →→→→ C;B →→→→ A;A →→→→ B}
F ≡≡≡≡ F” = {A →→→→ C;B →→→→ A;A →→→→ B}
Bước 2 : F’ và F” là các tập phụ thuộc hàm có vế phải một thuộc tính
Bước 3 :
Xét F’ = {B → C;B → A;A → B} thì thấy F’ không phải là tập pth dư thừa.
Xét F” = {A → C;B → A;A → B} thì thấy F” không phải là tập pth dư thừa
Kết luận : F có 2 tập phủ tối thiểu F’ và F”
37
Ví dụ 3: Cho lược ñồ quan hệ Q(MSCD,MSSV,CD,HG) và tập phụ thuộc F như sau:
F = {MSCD→ CD;
CD → MSCD;
CD,MSSV → HG;
MSCD,HG → MSSV;
CD,HG → MSSV;
MSCD,MSSV → HG}
Hãy tìm phủ tối thiểu của F ?
Ví dụ 4: Cho lược ñồ quan hệ Q(ABC) ,tìm các phủ tối thiểu của tâp phụ thuộc hàm F
F = { A→ B ; A→ C; B → A; C → A;B → C }
38
KHÓA CỦA LƯỢC ðỒ QUAN HỆ
• Khái niệm • Thuật toán tìm một khóa • Thuật toán tìm tất cả các khóa
39
Cho Q(Q+) và F là tập pth ñịnh nghĩa trên Q. Cho K⊆⊆⊆⊆ Q+
+ = Q= Q+))
K là một khóa của Q nếu thỏa 2 ñiều kiện:
(hay KFF (hay K
(1) K →→→→→→→→ QQ+ ∈∈∈∈∈∈∈∈ FF+ (2) ∃∃∃∃ K’ ⊂⊂⊂⊂ K , K’ →→→→→→→→ QQ+ ∈∈∈∈∈∈∈∈ FF+
40
- Tập thuộc tính S là siêu khóa nếu S ⊇⊇⊇⊇K - Thuộc tính A là thu(cid:7)c tính khóa nếu A ∈∈∈∈∈∈∈∈KK -- Thuộc tính B là thu(cid:7)c tính không khóa nếu B ∉∉∉∉K - Tập thuộc tính không khóa có thể bằng ∅∅∅∅ - Một lươc ñồ quan hệ có thể có nhiAu khóa K
(cid:4) Thuật tóan tìm một khóa của lược ñồ quan hệ Q :
B1 : Gán K = Q+
B2 : Lần lượt thử lọai từng thuộc tính A ∈∈∈∈ K,có K’ = K – A
nếu k’+ = Q+ thì gán K = K’
41
Thực hiện lại bước 2
Ví dụ_sgk : Cho Q(ABCDEGHI) và F = {AC→→→→ B, BI →→→→ ACD, ABC →→→→ D, H →→→→ I, ACE →→→→ BCG, CG →→→→ AE}
Gán K = Q+ = {A,B,C,D,E,G,H,I}
Xét K’= K - {A} = {BCDEGHI} , tính K’+ = BCDEGHIA = Q+
⇒gán K = K’
Xét K’= K - {B} = {CDEGHI} , tính K’+ = CDEGHIAB = Q+
⇒Gán K= K’
Xét K’= K – {C} = {DEGHI} , tính K’+ = DEGHI ≠ Q+
Xét K’= K – {D} = {CEGHI} , tính K’+ = CEGHIABD = Q+
⇒Gán K = k’
42
Tiếp tục tương tự … kết quả thu ñược khóa K = {C,G,H}
• Cho Q(ABCDEGHI) và
F = {AC→→→→ B, BI →→→→ ACD, ABC →→→→ D, H →→→→ I, ACE →→→→ BCG, CG →→→→ AE} K’= {DEGHI} K’+= ?
43
(cid:4) Thuật tóan tìm tất cả các khóa của lược ñồ quan hệ Q Thuật tóan căn bản:
B1: Xây dựng các tập con Xi có thể có của Q+
B2: Tìm bao ñóng của các Xi
B3: Xác ñịnh các siêu khóa Si chính là các Xi có Xi+ = Q+ B4: Xác ñịnh các khóa từ tập siêu khóa SSSS
∀∀∀∀ Si, Sj ∈∈∈∈ SSSS, nếu ∃∃∃∃ Sj ⊂⊂⊂⊂ Si thì SSSS’’’’ = S S S S –––– Si Cuối cùng tập SSSS’’’’ là tIp tvt c! các khóa cQn tìm
Ví dụ -sgk …
44
Nhận xét : Kết quả của B1 có thể là một tập rất lớn của các tập con của Q+ (2n)
Các khái niệm
-Tập thuộc tính nguồn (TN) gồm tất cả
• Các thuộc tính chỉ xuất hiện ở vế trái và không xuất hiện ở vế phải của các pth • Các thuộc tính không xuất hiện ở cả vế trái và vế phải của các pth
-Tập thuộc tính ñích (TD) gồm tất cả
-Các thuộc tính chỉ xuất hiện ở vế phải của các pth
-Tập thuộc tính trung gian (TG) : gồm tất cả
•Các thuộc tính xuất hiện ở cả vế trái và vế phải của các pth
(cid:4) Thuật tóan tìm tất cả các khóa của lược ñồ quan hệ Q Thuật tóan cải tiến :
45
Hệ quả : Nếu K là khóa của A thì K ⊇ ⊇ ⊇ ⊇ TN và K ∩ ∩ ∩ ∩ TD = ∅∅∅∅
Thuật tóan cải tiến : Dữ liệu vào : lược ñồ quan hệ Q , tập phụ thuộc hàm F Dữ liệu ra: tất cả các khóa của quan hệ Q
B1: Xác ñịnh tập thụôc tính nguồn TN, tập thuộc tính trung gian TG B2: Nếu TG = ∅ thì Q chỉ có một khóa K = TN kết thúc Ngược lại : Qua bước 3
B3: tìm tất cả các tập con Xi của tập trung gian TG
B4: tìm các siêu khóa Si :
∀∀∀∀ Xi , nếu (TN ∪∪∪∪ Xi)+ = Q+ thì Si = TN ∪∪∪∪ Xi
B5: tìm các khóa từ tập siêu khóa S:
46
∀∀∀∀ Si, Sj ∈∈∈∈ S, nếu ∃∃∃∃ Sj ⊂⊂⊂⊂ Si thì S’ = S – Si
cuối cùng , tập S’ chính là tập khóa cần tìm
Ví dụ 1: cho Q(CSZ) , F= {CS →→→→ Z , Z →→→→ C}
B1: TN = {S} , TG = {C,Z}
B2 ñến B5 :
TG Siêukhóa Khóa TN∪∪∪∪TG ( TN∪∪∪∪TG)+
∅ S S
SCZ SC SC C SC
SZC SZ SZ Z SZ
B3
B4
B5
47
SZC SZC CZ SCZ
Ví dụ 2: cho Q(A,B,C,D) và tập F={ AB→C, D→B, C→ABD }. Tìm tất cả các khóa ?
Giải: B1: TN={∅} , TG={A,B,C,D } B2:
48
F={ AB→C, D→B, C→ABD }
Siêukhóa Khóa TN∪∪∪∪TG ( TN∪∪∪∪TG)+
∅ A B C
∅ A B C
TG {ABCD}
A B CABD C C
D D DB
AB AB ABCD AB AB
49
AC AC ACBD AC AC
AD AD ADBC AD AD
F={ AB→C, D→B, C→ABD }
Siêukhóa Khóa TN∪∪∪∪TG ( TN∪∪∪∪TG)+
TG {ABCD}
BCAD BC BC
BC BD CD ABC
BC BD CD ABC
CD
BD CDAB CDAB CD ABC
ABD ABD CDAB ABD
ACD ACD CDAB ACD
50
BCD BCD CDAB BCD
CDAB ABCD ABCD ABCD
Ví dụ 3: cho Q(A,B,C,D,E,H) và tập F= {A → E; C → D; E → DH} CM: K={A,B,C} là khóa duy nhất của Q ? B1: TN= {A,B,C} , TG = { E } B2
51
Siêukhóa TG
F= {A → E; C → D; E → DH} ( TN∪∪∪∪TG)+ Khóa
TN∪∪∪∪TG
A,B,C
∅ ABC ABC
A,B,C,E
A,B,C,E
E
B3
B4
B5
52
ABCEDH = Q+ ABCEDH = Q+