6.4.1.Phéptáchbảotoànthôngtin
Giảsửlượcđồquanhệ RđượcphântáchthànhcácsơđồconR1,R2,…,Rkvà Flàtậpcácphụ
thuộchàmtrênR.TanóiphéptáchnàylàkhôngmấtmátthôngtinđốivớiFnếum ọiquanhệrtrên
r=ΠR1(r)*ΠR2(r)*…*ΠRk(r)
tứclàquanhệrlàkếtnốitựnhiêncủanhữngquanhệlàphépchiếucủanótrên mỗiRi.
Gọimρlàánhxạđượcđịnhnghĩanhưsau: mρ(r)= ΠR1(r)*ΠR2(r)*…*ΠRk(r)
tứcmρ(r)làkếtnốitựnhiêncủanhữngquanhệlàphépchiếucủanótrêncács ơđồcontrongρ.
Vìvậyđiềukiệnđểmộtphéptáchlàkhôngmấtmátthôngtinlàr=mρ.
Bổđề.CholượcđồquanhệR,ρ={R1,R2,…,Rk},rlàmộtquanhệtrênRvàri
=ΠRi(r).Thì (a)r⊆mρ(r)
(b)Nếus=mρ®thìΠRi(s)=ri
(c)mρ(mρ(r))=mρ(r)
Bổđềcóthểchứngminhdễdàngdựatrênkháiniệmphéptáchvàđịnhnghĩac ủamρ.
Kiểmtraphéptáchlàkhôngmấtmátthôngtin.
Liệumộtphéptáchcólàmấtthôngtinhaykhôngđốivớimộttậpcácphụthuộ chàmchotrước
đượckiểmtrathôngquathuậttoánsau:
4 6
Thuậttoán.Kiểmtraphéptáchkhôngmấtmátthôngtin.
Vào:LượcđồquanhệR ={A1,A2,…,AN},tậpphụthuộchàmFtrênRvà mộtphéptáchρ=
{R1,R2,…,Rk}trênR.
Ra:Khẳngđịnhphéptáchcómấtmátthôngtinhaykhông? Phươngpháp:
-Xâydựngmộtbảngncột, khàng;cộtj tươngứngvới thuộctínhAj vàhàng itươngứngvới
lượcđồconRi.Tạivịtríhàngi,cộtj,nếuAjthuộcRithìtađiềnkíhiệuajvàođó, ngượclạitađiền
-XétlầnlượccácphụthuộchàmtỏngFvàápdụngcácphụthuộchàmnàych obảngvừađược
xâydựng.Giảsử chúngtaxét phụthuộchàmX → Y∈ F.Nếu tồntạihai hàng màtấtcả cáccột
tươngứngvớicácthuộctínhcủaXcógiátrịnhư nhauthìtalàmchocáccộtứngv ớicácthuộctính
củaYcũngcógiátrịnhưnhautronghaihàngnàytheonguyêntácsau:Nếucómộ tkíhiệuajtrong
cáccộtứngvớicácthuộctínhcủaYthìđồngnhấtcáckíhiệulàaj.Nếukhôngđồn gnhấtbằngmột
trongcáckíhiệubij.
-Tiếptụcápdụngcác phụthuộchàmchobảng(kể cảviệclặplại cácphụthu ộchàmđãđược
ápdụng)cho tớikhikhôngthểáp dụngđượcnữa (khôngthểthayđổiđược giátrị nàotrongbảng
nữa).
-Nếutrongbảngcómộthànggồmcáckíhiệua1,a2,…,anthìphéptáchlà khôngmấtmátthông
tin.Ngượclạithìphéptáchlàkhôngbảotoànthôngtin.
Địnhlý. Cho ρ= {R1,R2}làmột phéptách trênR vàF làtậpphụ thuộchàm trênR thìphép
táchnàylàkhôngmấtmátthôngtinnếuR1∩R2→R1\R2hoặcR1∩R2→R2\R
1
Chúý:cácphụthuộchàmtrênkhôngnhấtthiếtthuộcF,chỉcầnthuộcF+.
6.4.2.Phéptáchbảotoànphụthuộc
Táchquanhệ:LượcđồquanhệđơnR={A1,A2,...,An}đượctáchthànhmộttập hợpcáclượcđồ
quanhệD={R1,R2,...,Rm}.Mộtcáchhìnhthức,tacóđiềukiệnbảotoànthuộctín h:Ri=R.
Tínhkhông đầy đủ của các dạngchuẩn: Mục đíchcủa chúng ta là mỗi quan hệ r iêngrẽ Ri trong
phéptáchDlàởdạngchuẩnBCNFhoặc3NF.Tuynhiên, điềuđókhôngđủđểđ ảmbảomộtthiết
kếCSDLtốt.Bêncạnhviệcxemxéttừngquanhệriêngrẽ,chúngtacầnxemxétto ànbộphéptách.
ViệcmỗiphụthuộchàmX→YtrongFhoặcđượcxuấthiệntrựctiếptrongmộttr ongcáclượcđồ
quanhệRitrongphéptáchDhoặccóthểđượcsuydiễntừcácphụthuộchàmcót rongRilàrấtcó
lợi.Tagọiđólàđiềukiệnbảotoànphụthuộc.
Địnhlý:LuônluôntìmđượcmộtphéptáchbảotoànphụthuộcDđốivớiFsaocho mỗiquanhệRi
trongDlà3NF
4 7
Thuậttoán:Tạo mộtphéptáchbảo toànphụthuộc D ={R1,R2,...,Rm} củamộtq uanhệR dựa
trênmột tậpphụthuộc hàmFsao chomỗi Ri trongDlà ở3NF. Thuật toánnàyc hỉđảm bảotính
chấtbảotoànphụthuộc,khôngđảmbảotínhchấtnốikhôngmấtmát. Input:MộtquanhệRvàmộttậpphụthuộchàmFtrêncácthuộctínhcủaR. 1.TìmphủtốithiểuGcủaF.
2.VớimỗivếtráiXcủamộtphụthuộchàmxuấthiệntrong G,hãytạomộtlượcđồtrongDvớicácthuộctính
{XU{A1}U{A2}U... U{Ak}}trongđóX→A1,X→A2,...,X→Akchỉlàcác phụthuộchàm
trongGvớiXlàvếtrái(Xlàkhóacủaquanhệnày).
3. Đặt cácthuộc tínhcòn lại (nhữngthuộc tính chưađược đặt vào quanhệ nào) vàomột quanhệ
đơnđểđảmbảotínhchấtbảotoànthuộctính.