Thuật tốn tìm khĩa

Một phần của tài liệu giáo trình cơ sở dữ liệu dành cho sinh viên ngành công nghệ thông tin (Trang 104 - 137)

2. Khĩa

2.2. Thuật tốn tìm khĩa

2.2.1. Thuậttốntìmmộtkhĩa

Sửdụngđồthịcĩhướngđểtìmkhĩanhưsau: Bước1:

Mỗinútcủađồthịlà tênmộtthuộctínhcủalượcđồquanhệR CungnốihaithuộctínhAvàBthểhiệnphụthuộchàmA B

Thuộc tính chỉ cĩcác mũi tênđi ra (nghĩa là chỉnằm trong vếtrái của phụ thuộc

hàm)đượcgọilànútgốc

Thuộctính chỉcĩcácmũitênđitới (nghĩalàchỉnằmtrongvếphảicủa phụthuộc

hàm)đượcgọilànútlá Bước2:

Xuấtphát từ tậpcácnútgốc (X),dựatrêntậpcácphụ thuộchàm F,tìm baođĩng

XF.

Nếu XF =Qthì X là khĩa, ngượclại bổ sung một thuộctính khơng thuộcnút lá

vàoXrồithựchiệntìmbaođĩngcủaX.Dừngkhitìmđượcmộtkhĩac ủaR.

Vídụ

Cholượcđồquan hệR(A,B,C,D,E,G,H)vàtậpphụthuộchàm F={B A,DA CE, D H,GH C,AC D}

TìmmộtkhĩacủaR.

PhânrãvếphảitacĩF={B A,DA C,DA E,D H,GH C,AC D}

Trang 82/109

Nhậnthấy từ đồthịtrên,nút B vàGlànútgốc.Khĩacủa R phảichứa thuộctí nhB hoặc

G,trongví dụnàychọnB.

BF = BA,Vì BFQnênB khơnglàkhĩa.Nhậnthấy Dlàthuộctínhởvếtráic ủabaphụ

thuộchàmtrongFnênbổsungthuộctínhDvàođểxétkhĩa.

BDF =BDACEH ,vì BDFQnênBDkhơnglàkhĩa.BổsungthuộctínhG.

BDGF = BDGACEH,vì BDGF =QnênBDGlàkhĩa.

2.2.2. Thuậttốntìmtấtcảcáckhĩa

+

+ +

+ +

Tập thuộctính nguồn,kýhiệu làN, làtậpchứa nhữngthuộctính chỉxuất hiện ở vếtrái,

khơngnằmbênvếtráivàvếphảicủamọiphụthuộchàm

Tập thuộctínhtrunggian,kýhiệu làTG,là tậpchứanhữngthuộctính vừaxuất hiệnởvế

trái,vừaxuấthiệnởvếphảitrongcácphụthuộchàm

Thuậttốn

Bước1:Tính tậpnguồnN.Nếu NF =Qthìchỉcĩ1khốlàN,ngượclạiquab ước2

Bước2:Tính tậptrunggianTG.TínhtậptấtcảcáctậpconXicủatậpTG. Bước3:TìmtậpSchứamọisiêukhĩaSi:

VớimỗiXi,nếu (NXi)F =Q thì Si =(NXi) Bước4:Loạicácsiêukhĩakhơngtốitiểu:

Si,SjS, nếu SiSjthì S =SSj

Trang 83/109

Vídụ.Cholượcđồquan hệR(A,B,C)vàtậpphụthuộchàm F={AB C, C A}

TìmmọikhĩacủaR.

Bước1:N={B}, NF =BQ

Bước2:TG={AC},tậpcáctậpcontrunggianlà CTG={∅,A,C,AC}

+ + N Xi NXi (NX i)+ (NXi)+ =Q+ ? B ∅ B B Sai B A BA BAC Đúng B C BC BCA Đúng B AC BAC BAC Đúng +

Bước4:Loạicácsiêukhĩakhơngtốitiểu:

Nhậnthấyrằng BABACnênloạisiêukhĩa BAC.Tậpcáckhĩacịnlạilà S =

{BA,BC}

Cảitiếnthuậttốn

Nhận thấy rằng ở bước3, khi xéttập một conXi, nếu (NXi) =Q, khiđĩ

NXi

một khố. Trong trường hợp này nếu xét tiếp các tập Xj:XiXj , thì hiển nhiên

(NXj) =Q,vàcuốicùngsiêukhố NXj cũngsẽbịloạiởbước4.

Hơnnữa,bướctínhtậpconđầutiênlàrỗngcũng khơngcầntính.

Do đĩ, khi tính bao đĩng của tập thuộctính, khơng tính Xi=∅và nếu (N

Xi) =Q,

thựchiệnloạibỏcáctính tốnchocáctrường hợp Xj:XiXj .Khiđĩkếtthúc thuậttốn

tạibước 3, khơngcần thực hiện bước4 vì tất cảcáckhố nhận được ởbước 3 đều là tối

tiểu.

3. Ràngbuộctồnvẹn

3.1. Ràngbuộctồnvẹn–cácyếutốcủaràngbuộctồnvẹn

Trang 84/109

Trong CSDL luơn tồn tại nhiều mối liên hệ giữa các thuộc tính, các bộ, các bảng với

nhau.Cácmốiliênhệnàylànhữngđiềukiệnbấtbiếnmàtấtcảcácbộcủanhữn gquanhệ

Bước3:

cĩliên quan đềuphảithỏa mãntạimọi thờiđiểm. Nhữngđiều kiệnbấtbiếnđ ĩ đượcgọi

làràngbuộctồnvẹn.

Ràng buộc tồn vẹn (Intergrity constraint) viết tắt tiếng việt là RBTV, là một điều kiện

được định nghĩa liên quan đến một hay nhiều quan hệ khác nhau. Các mối li ên hệ ràng

buộc lànhững điều kiện bấtbiến mà mọi thể hiện của quan hệ đều phải thỏa mãn trong

mọithờiđiểm.

Trongthựctế,RBTVlàcácquytắcquảnlý trongthếgiớithực.

Mục đích của RBTV là bảo đảm tính nhất quán của dữ liệu, bảo đảm rằng dữ liệu luơn

biểudiễnđúngngữnghĩatrongthựctế.

Vídụ:vớigiaodịchchuyểntiền,thựchiệnquacácbướcsau: Tạitàikhoảncủangườigởi:trừtiền

Tạitàikhoảncủangườinhận:thêmtiền

Nếucả haiviệctrên đềuthànhcơng thìhồn tấtgiaodịch, ngượclại quay luigiao

dịch.

Qua ví dụ trên,giao dịch thựchiện trừtiền vàtăng tiềntrong tàikhoảncủang ười gởi và

người nhận, nếu khơng thì khơng thực hiện gì cả. Việc thực hiện giao dịch cầ n phải bảo

đảmtínhđúngcủadữ liệu.

MỗimộtRBTVcĩcácyếutốsau:

Bốicảnh

Bối cảnh là một hay nhiều quan hệ cần phải sử dụng để kiểm tra RBTV. Ha y nĩi cách

khác bối cảnh củaRBTV lànhữngquan hệ cĩkhảnăng bị vi phạmRBTVkhi thực hiện

cácthaotáccậpnhậtdữliệu(thêm,xĩa,sửacácbộ)

Biểudiễn:điềukiệnhaynộidung

Điềukiện được kiểmtra trênmọi thay đổicủa thểhiện củacác quan hệcơ sở. Điềukiện

của một RBTV cĩ thể được biểu diễn bằng nhiều cách khác nhau, chẳng hạn như ngơn

Khi một RBTVbị vi phạm, cĩthể xử lýbằng cách thơngbáo choNSDbiết R BTVđãbị

vi phạmnhư thế nào,hoặc từ chối thực hiện thao tác cập nhật dữ liệu và thơn g báo cho NSDbiếtthaotác cậpnhậtbịtừchối trêncácquanhệnà ovàtạicácbướcn ào. Trang 85/109 Tầmảnhhưởng

Trong quá trình phân tích thiết kế CSDL, cần thiết phải lập bảng tầm ảnh hưởng cho

RBTV nhằm xác định thời điểm cần kiểm tra RBTV, và khi kiểm tra cần kiể m tra trên

quanhệnào.

Dấu + thể hiện thao tác cĩ thể gây ra vi phạm RBTV. Trong trường hợp + (A) cho biết

thao tácsửacĩthểgâyvi phạmtrên thuộctínhA. Dấu- thểhiện thaotáckhơn g vi phạm

RBTV.

3.2. Cácloạiràngbuộctồnvẹn

Trong quá trình phân tích thiết kế CSDL, yêu cầu cần thiết là phải tìm đ ược những

TênRBTV Thêm Xĩa Sửa

R1 + - +(A)

R2 + - +(B)

… … … …

Rn - - +

BảngtầmảnhhưởngcủamộtRBTVcĩdạngsau:

RBTV tiềm ẩn trong CSDL. Việc phân loại RBTV cho phép người phân tích tìm kiếm

đầy đủ,tránh bỏsĩtnhững RBTV.Các loại RBTVđược phân thànhhaidạng chínhnhư

sau:

RBTVcĩbốicảnhlàmộtquanhệ RBTVcĩbốicảnhlànhiềuquan hệ

3.2.1. Ràngbuộctồnvẹncĩbốicảnhlàmộtquanhệ

RBTV cĩ bối cảnh là một quan hệ được chia thành ba loại: RBTV miền giá trị, RBTV

liênbộvàRBTVliênthuộctính

3.2.1.1. Ràngbuộctồnvẹnmiềngiátrị

Quyđịnhrõvềmiềngiátrịcủamộtthuộctính.

Vídụ.Thờigianphâncơngthamgiađềáncủamộtnhânviênkhơngquá40h/t uần

Bốicảnh:quan hệPHANCONG

Trang 86/109

Biểudiễn: ∀pcPHANCONG(pc.ThoiGian≤ 40)

Vídụ. Điểmcủamơnhọcphảilà thangđiểm10

Bốicảnh:quanhệKETQUA(MaMH, MaLop, MaKH,Diem) Biểudiễn: ∀kqKETQUA(kq.Diem≥0∧kq.Diem≤ 10)

RB3 Thêm Xĩa Sửa

MUONSACH + - +(NgayMuon,NgayHenTra,NgayThucTra)

RB1 Thêm Xĩa Sửa

PHANCONG + - +(ThoiGian)

RB2 Thêm Xĩa Sửa

KETQUA + - +(Diem)

3.2.1.2.

Ràngbuộctồn vẹnli ênthuộctính

Quyđịnh cácràngbuộcgiữacácthuộctínhkhácnhautrongcùngmộtquan hệ

Vídụ.Ngàytrảsáchphảilàbằnghoặcsaungàymượnsách

Bối cảnh:quan hệMUONSACH(MaSach, MaDocGia,NgayMuon, NgayHenTra,

NgayThucTra) Biểu

diễn:

msMUONSACH(ms.NgayMuonms.NgayHenTrams.NgayMuon

ms.NgayThucTra)

Quy định sự tồntại của một hoặc nhiều bộphụ thuộc vào sự tồn tạicủa m ột hoặc nhiều

bộkháctrongcùngquanhệ.

RBTVkhĩa chínhlàRBTV liênbộ

Trang 87/109

Vídụ.Mỗiđềántrong cơngtycĩmộtmãduynhấtđểphânbiệtvớicácđềánkhác Bốicảnh:quan hệDEAN

Điềukiện: ∀da1,da2DEAN:da1da2⇒(da1.MaDAda2.MaDA) Bảngtầmảnhhưởng:

Bảngtầmảnhhưởng:

3.2.1.3. Ràngbuộctồnvẹnliênbộ

RB4 Thêm Xĩa Sửa

DEAN + - +(MaDA)

RB4 Thêm Xĩa Sửa

RBTVvềsốlượngcácbộtrongmộtquanhệ.

Vídụ.Mỗisinhviêntrongmộthọckỳđượcđăngkýkhơngquá8mơnhọc Bốicảnh:quan hệDANGKY(MaSV,MaMH)

Biểu diễn:

dk1DANGKY :count(dk2∈DANGKY |dk2.MaSV =dk1.MaS

V)≤8 ,

trongđĩcount()làhàmđếmsốbộcủamộtquan hệthỏađiềukiệntrong ngoặc().

RBTVcĩbốicảnhlànhiềuquan hệđượcchiathànhnămloại: RBTVthamchiếu

RBTVliênbộ-liênquanhệ

RBTVliênthuộctính-liênquanhệ RBTVdothuộctínhtổnghợp RBTVdochutrình

3.2.2.1. RBTVthamchiếu

Quy địnhgiátrịxuất hiệncủamột tậpthuộctính trongmột quanhệphải xuất hiệntrong

một tập thuộc tính trong một quan hệ khác. RBTV này cịn được gọi là R BTV tham

chiếu,RBTVphụthuộctồntạihayRBTVkhĩangoại. Trang 88/109

VídụRBTVtrên2quanhệ

Một nhân viên phải thuộc về một phịng trong cơng ty, nghĩa là tr ong quan hệ

Bảngtầmảnhhưởng:

Bảngtầmảnhhưởng:

3.2.2. Ràngbuộctồnvẹncĩbốicảnhlànhiềuquanhệ

RB6 Thêm Xĩa Sửa

NHANVIEN + - +(MaNV,MaNQL)

RB5 Thêm Xĩa Sửa

NHANVIEN + - +(Phong)

NHANVIEN, nếu một mã phịng (Phong) mà nhân viên trực thuộc xuất hiện, thì mã

phịng này phải xuất hiện trong quan hệ PHONGBAN, cụ thể làthuộc tính (MaPhong).

Nhưvậy:

Bốicảnh:NHANVIEN,PHONGBAN Biểu

diễn:

nvNHANVIEN((nv.Phong= NULL)∨ (∃pbPHONGBAN(nv.Phong

= pb.MaPhong)))

Ngườiquản lý(MaNQL)củamộtnhânviêncũngphải làmộtnhânviêntron g cơngty

Bốicảnh:NHANVIEN Điều

kiện:

nvNHANVIEN((nv.MaNQL= NULL)∨ (∃nv1NHANVIEN(nv.MaN

QL=nv1.MaNV)))

Giảsửr2cĩmộtkhĩangoại〈 thamchiếuđếnKtrongr1,khiđĩ: 〈(r2)⊆

K(r1)

Thêm

Khithêmmộtbột2vàor2thìphảibảođảmtồntạit1 trongr1saocho t1[K]=

t2[〈]

Bảngtầmảnhhưởng:

VídụRBTVtrên1quanhệ

Bảngtầmảnhhưởng:

Trang 89/109

Xĩa

Giả sử xĩa t1 khỏi r1. Khi đĩ cần xử lý các bộ trong r2 tham chiếu tới t1

, nghĩa là

s = ⌠〈=t1[K](r2) . Nếu s≠∅thì

Khơngthựchiệnhànhđộngxĩadữ liệu,hoặc Xĩa dâychuyền,nghĩalàxĩatấtcảcácbộtrongs

Sửa

Trườnghợpcậpnhậtt2trongr2

Cậpnhậtt2trongr2,sửakhĩangoại〈

Tương tựnhưtrườnghợpth

êmdữl iệu

Kiểmtra t2[〈]∈ K(r1)

Trườnghợpcậpnhậtt1trongr1

Cậpnhậtt1trongr1

Tươngtựnhưtrườnghợpxĩadữliệu Kiểmtra ⌠〈=t1[K](r2 )=∅

3.2.2.2. RBTVliênbộ-liênquanhệ

Quyđịnhvềtừngnhĩmcácbộcủanhiềuquanhệbốicảnhkhácnhau.

VídụMột hĩađơnbán hàngphải cĩít nhấtmột mặthàng, nghĩalàmột chiti ếthĩa đơn

bánhàngphảicĩítnhấtmộtmặthàng. Bốicảnh:HOADON, CTIETHD

RB7 Thêm Xĩa Sửa

HOADON + - +(MaHD)

CTIETHD - + +(MaHD)

Biểudiễn: ∀hdHOADON(∃cthdCTIETHD(hd.MaHD=cthd.MaHD))

Trang 90/109

3.2.2.3. RBTVliênthuộctính-liênquanhệ

Quyđịnhvềmốiliênhệgiữacácthuộctínhtrênnhiềuquan hệbốicảnhkhác nhau.

VídụGiả sử chophép thanhtốn tiền nhiềulầnvàthanh tốnsau khimua hàng,khi đĩ ngày t h anhtố n tiềnth e o một h ĩađơn m uahàn

gphảibằnghoặcsaungàymuahàng.

Bối cảnh: HOADON(MaHD, MaKH, NgayHD,

TriGia),

THANHTOAN(MaHD,NgayTToan,LanTToan,SoTienTT oan)

Biểudiễn:

hdHOADON(∀ttTHANHTOAN(hd.MaHD=tt.MahDhd.NgayHD

tt.NgayTToan))

Bảngtầmảnhhưởng:

RB9 Thêm Xĩa Sửa

SINHVIEN + - +(MaSV,DTB)

KETQUA + + +(MaSV,Diem)

RB8 Thêm Xĩa Sửa

HOADON + - +(MaHD,NgayHD)

3.2.2.4. RBTVdothuộctínhtổnghợp

Quyđịnhvềmốiliênhệgiữacácthuộctínhdosựcĩmặtcủathuộctínhtínht ốn.

VídụĐiểmtrungbìnhcủasinhviênbằngtrungbìnhcủacácmơnmàsinhvi êntheohọc

Bối cảnh: SINHVIEN(MaSV, HoSV, TenSV,

Khoa, DTB)

KETQUA(MaSV,MaMon,Diem) Biểudiễn:

svSINHVIEN(∃kqKETQUA(sv.MaSV =kq.MaSVsv.DTB= AVG(kq.

Diem)))

3.2.2.5. RBTVdochutrình

Trang 91/109

Xảy rakhicĩsự hiệndiện củachutrình.Đểnhậndiện chutrình,ngườitabiểu diễnl ược

Bảngtầmảnhhưởng:

Bảngtầmảnhhưởng:

Nútthểhiệnlượcđồ NHANVIEN

Nútthuộctínhkết

MaNV=MaNV

Cungnối giữa nút lượcđồ vànút thuộc

VídụMộtnhânviênchỉđượcphâncơngvàocácđềándophịngmìnhchủtrì Bốicảnh:NHANVIEN,DEAN,PHANCONG

Đồthịthểhiệnchutrìnhnhưsau:

MaNV=MaNV

PHANCONG NHANVIEN

MaDA=MaDA DEAN Phong=Phong

Biểu diễn:

pcPHANCONG(∃nvdaNV_DA(nvda.MaNV = pc.MaNVnvda.MaDA

= pc.MaDA))

với: NV_DANHANVIENPhong=MaPhong DEAN

Bảngtầmảnhhưởng:

RB10 Thêm Xĩa Sửa

Trang92/109

đồCSDLnhưsau:

NHANVIEN - + +(MaNV,Phong)

DEAN - + +(MaDA,Phong)

Bàitập1

Hãychứngminh3tínhchấtphânrã,kếthợpvàtựabắccầu.

Hãytìmhiểucáctínhchấtcủabaođĩngtậpthuộctính,phủtốithiểu

Bàitập2

Cholượcđồquan hệR(A,B,C,D,E,G)vàtậpphụthuộchàm F={A C ,A EG,B D,G E}

Tìm ABF,CGDF,AF

Bàitập3

Cholượcđồquan hệR(A,B,C,D,E,G)vàtậpphụthuộchàm F={B C,A EG,B A,G E}

Tìm ABF,CGDF,AF

Bàitập4

Cholượcđồquan hệR(A,B,C,D,E)vàtậpphụthuộchàm F={A C ,BC D,D E,E A}

Tìm ABF,BDF,DF

Bàitập5

Cholượcđồquan hệR(A,B,C,D,E)vàtậpphụthuộchàm F={B C,AC D,D G,AG E}

Chobiết ACE cĩthuộcF+khơng? Chobiết BDAD cĩthuộcF+khơng?

Trang 93/109

Vớicácbàitập7,8,9:

Tìmmộtkhĩa(theothuậttốntìm mộtkhĩa) Tìmmọikhĩa(theothuậttốn tìmmọikhĩa) Tìmphủtốithiểu

4. Bàitập

+ + +

+ + +

Bàitập7

CholượcđồquanhệR(A,B,C,D)vàtậpphụthuộchàm

F={AB CD,B C,C D}

Bàitập8

CholượcđồquanhệR {ABCDEFGHKLM}vàtậpphụthuộchàm

F={A B,C D,E F, G AHK,AH G,GLC M}

Bàitập9

CholượcđồquanhệR {ABCDEFGHKL}vàtậpphụthuộchàm

F={A B,AC D,F G,FK LEH,E FH}

Bàitập10

Với hai bài tốn tình huống là quản lý đề án và quản lý ngân hàng, ngoại tr ừ các ràng

buộc khố chính và khố ngoại, hãy tìm tất cả các RBTV theo yêu cầu: bối cảnh, biểu

diễn,tầmảnhhưởng.VớinhữngRBTVtìmđược,hãyphântheotừngloạiRBT V.

Trang 94/109

Dạng chuẩn chuẩn hĩa sở dữ liệ u

Chương này giới thiệu các dạng chuẩn, phân rã bảo tồn thơng tin, bảo tồn phụ thuộc

hàm, qua đĩ cũng trình bày cách phân rã bảo tồn bảo tồn thơng tin và bả o tồn phụ

thuộc.

1. Dạngchuẩncủalượcđồquanhệ

Đểdễdàngtrìnhbàycácdạngchuẩn,cầnnắmrõcáckháiniệm:

Thuộctính khố:

Cho lược đồquanhệ Q(A1,A2,...,An ), thuộctính B đượcgọi thuộc tínhkho

á nếuB

một thuộctínhthànhphần trongmột khố nào đĩcủaQ,ngược lạiB đượcg

ọilà thuộc

tínhkhơng khố

Vídụ:R(A,B,C,D),F={AB C,B D,BC A}

Một phần của tài liệu giáo trình cơ sở dữ liệu dành cho sinh viên ngành công nghệ thông tin (Trang 104 - 137)

Tải bản đầy đủ (DOCX)

(137 trang)
w