430 likes | 624 Views
1. Mô hình quan hệ. Nội dung. Giới thiệu Khái niệm Phụ thuộc hàm Khoá của lược đồ quan hệ Lý thuết phân tách Chuẩn hoá lược đồ quan hệ Phụ thuộc đa trị và dạng chuẩn 4 Phụ thuộc kết nối và dạng chuẩn 5. Mục tiêu. Tổ chức của mô hình Các tính chất Các thao tác trên mô hình dữ liệu
E N D
Nội dung • Giớithiệu • Kháiniệm • Phụthuộchàm • Khoácủalượcđồquanhệ • Lýthuếtphântách • Chuẩnhoálượcđồquanhệ • Phụthuộcđatrịvàdạngchuẩn 4 • Phụthuộckếtnốivàdạngchuẩn 5
Mụctiêu • Tổchứccủamôhình • Cáctínhchất • Cácthaotáctrênmôhìnhdữliệu • Thiếtkếcácdữliệutheochuẩn
Giớithiệu • Môhìnhquanhệ do Coddđềxuấtnăm 1970. • Cókếtquảvềlýthuyếtkhátốt • Đến nay sửdụngrộngrãitrongcác HQTCSDL • Cũngcónhữnghạnchếnhấtđịnh
Kháiniệm • Cho U={A1, A2, …, An} làtậpcácthuộctínhtrêncácmiềntrịdom(A1), dom(A2), …, dom(An) • Một n-bộtrên U làmộtbộ t=(a1, a2, .., an), vớiaiDom(Ai), i=1,…,n. • Mộtquanhệtrên U làmộttậpcác n-bộ • Cáchkhác: mộtquanhệ r trên U làtập con củatíchĐềCác: dom(A1) ×dom(A2)×…×dom(An) • Mộtlượcđồquanhệtrên U làtậpcácthuộctínhvàcácràngbuộc. Kýhiệu R(U) hay R(A1, A2, …,An). • Vídụ: SinhVien(MaSV, HoTen, GioiTinh, NgaySinh)
Kýhiệu • Cho t làmộtbộtrên r, X, Y U. • t[X] làbộgồmnhữnggiátrịcủa t trêntậpthuộctính X. • XY làtậpcácthuộctínhcủa X hợp Y.
Phụthuộchàm(Functional dependency - FD) • Làmộtdạngphụthuộcdữliệutrênmôhìnhquanhệ • Cho X, Y U: • Quanhệ r thoảphụthuộchàm X xácđịnh Y, kíhiệu X->Y nếumọibộtrong r giốngnhautrên X thìcũnggiốngnhautrên Y. • Lượcđồ R(U) thoảphụthuộchàm X->Y nếumọithểhiệncủanóthoảphụthuộchàm X->Y. • Vídụ: R(MaNV, HoTen, ngach, bac, hsluong) thìthoảpth: ngach,bac->hsluong, MaNV->HoTen • Lượcđồ R thoảtậpcácpth F, kýhiệu R = (U,F).
Phụthuộcđượcsuydẫn logic • Cho R=(U,F). Mộtpth f đượcsuydẫn logic từ F nếu R thoảcácpthcủa F thì R cũngthoả f. • Kýhiệu F |= f • Tậptấtcảpthsuydẫn logic từ F: F* = { f : F |= f } • Vấnđề: làmsaoxácđịnh F*?
Hệtiênđề Armstrong [1974] • Mụcđíchđểsuydiễncácphụthuộchàm. • Hệtiênđề: • FD1 (phảnxạ): Nếu YX thì X->Y • FD2 (giatăng): Nếu X->Y thì XZ->YZ vớimọi ZU • FD3 (bắccầu): Nếy X->Y và Y->Z thì X->Z • Pth g đượcsuydiễntừ F nhờcáctiênđề, kýhiệu F|-g • Kýhiệu F+= { g : F |- g } • Vấnđề:cóthuậttoántính F+? và F+=F*?
Tínhxácđángvàđầyđủ • Địnhlý 1.1. Hệquytắcsuydiễncủa Armstrong là: • a) Xácđáng (sound), tức F+F* và • b) Đầyđủ (complete), tức F+ = F*. • Bàitập 1:Chứng minh tínhxácđángcủahệtiênđề Armstrong. • Bàitập 2:Chứng minh tínhđầyđủcủahệtiênđề Armstrong. • Bàitập3:Chứng minh cácquytắcsau: • FD4 (quytắchợp): Nếu X->Y và P->Q thì XP-> YQ • FD5 (quytắcgiảbắccầu): Nếu X->Y và WY->Z thì WX->Z • FD6 (quytắctách): Nếu X->Y thì X->Z vớimọi Z Y
Bàitoánthànhviên • Cho R = (U, F), f làmộtpthtrên U, quyếtđịnh f thuộc F+? • Baođóngtậpthuộctính: XF+ = { A : A U và X->A F+ } • Địnhlý 1.2. Cho lượcđồ R=(U, F) và f làmộtpthtrên U códạng X->Y. Khiđó f F+khivàchỉkhi Y X+. • Bàitập 4.Chứng minh địnhlý 1.2.
Thuậttoántìmbaođóngtậpthuộctính • Thuậttoán 1.1 • Vào: X U, F làtậpcácpth • Ra: X+ • Phươngpháp: NEWX:=X; Repeat OLDX:=NEWX; for each P->Q in F do if (PNEWX) then NEWX:=NEWX Q; Until NEWX=OLDX XPLUS:=NEWX; Return XPLUS;
Thuậttoántìmbaođóng… • Địnhlý 1.3. Thuậttoántìmbaođóngtậpthuộctínhlàđúngđắnvàcóđộphứctạpthờigianlà O(n.p. min(n,p)), với n=|U|, p=|F|. • Bàitập 5. Càiđặtthuậttoántìmbaođóngcủatậpthuộctính. • Bàitập 6. Chứng minh địnhlý 1.3
Khoácủalượcđồquanhệ • Cho R=(U,F), X U. X đượcgọilàkhoácủa R nếuthoảmãn 2 điềukiện: • X->U thuộc F+ • Khôngtồntại X’làtập con thựcsựcủa X mà X’->U thuộc F+. • Nếu X thoảđiềukiệnđầuthì X gọilàsiêukhoá. • Vídụ: Cho U={A,B,C,D,E}, F={AB->C, AD->BE, C->D} • 1 khoácủalượcđồquanhệlà: AB.
Thuậttoántìm 1 khoácủa LĐQH • Thuậttoán 1.2 • Vào: U, F • Ra: Khoá K • Phươngpháp: K:=U; For each A in U do if A (K\{A})+ then K:=K\{A}; Return K; Bàitập 7.Càiđặtthuậttoán 1.2 tìm 1 khoácủalượcđồquanhệ.
Tínhchấtcủakhoá • Gọi L, R tươngứnglàhợptấtcảcácvếtrái, phảitrongcácphụthuộchàmcủatập F. • Bàitập 8.Chứng minh cáctínhchấtsau. • Nếu (X\{A}) -> A F+ thì X khônglàkhoá • Nếu AL và X->Y F+thì X\{A}->Y\{A} F+. • Địnhlý 1.4 [H.Thuần, L.V.Bào] Nếu X làkhoáthì (U\R) X (U\R) (LR)
Chứng minh: a) Nếu X làkhoáthì (U\R) X X làkhoánên X+=U. Mặckháctheothuậttoántìmbaođóngthì: X+ X R U. VậyX R = U. Hay (U\R) X. b) Nếu X làkhoáthìX (U\R) (L R) Rõràng X U = (U\R) (L R) (R\L) Ta chứng minh X (R\L) = Giảsửcó A X, A R và A L. Vì X làkhoánên X->L Vì A L nên X\{A}->L Dễthấy L->R và R->A nênsuyra X\{A}->A (mâuthuẫn)
Tínhchấtcủakhoá • Hệquả 1.1. Nếu R\L= thìlượcđồcó 1 khoálà U. • Hệquả 1.2. Nếu R L = thìlượcđồcókhoáduynhấtlà U\R.
Thuậttoántìm 1 khoá • Thuậttoán 1.3 • X:=U\R; • Nếu X+ = U thìchuyển sang bước 5 • X:=(U\R) (L R); • Vớimỗi Ai(L R) thựchiệnX:=X\{Ai}; Nếu X+ ≠ U thì X:=X {Ai}; • Kếtluận X làkhoá Bàitập 9: Càiđặtthuậttoán 1.3 tìm 1 khoácủalượcđồquanhệ.
Tìmtấtcảcáckhoá Địnhlý 1.4 [Lucchesi, Osborn] Cho S=(U,F) làmộtlượcđồquanhệ. GọiKlàmộttậpkhácrỗngcáckhoácủa S. Điềukiệncầnvàđủđểhọ 2U\Kchứakhoácủa S làcómộtphầntử K K vàtồntạimộtphụthuộchàm (Li->Ri) F saocho T = Li(K\Ri) khôngchứamộtphầntửnàothuộcK.
Thuậttoán 1.5: Tìmtấtcảcáckhoá • Vào: S=(U, F) • Ra: tậpcáckhoácủa S • Phươngpháp: K:={Khoá(U,F,U)}; For each K in K do for each (Lj->Rj) in F do T:=Lj(K\Rj); test:=true; for each H in K do if T includes H then test:=false; if test then K:=K {Khoá(U,F,T)} Return K;
Địnhlý 1.5. Thuậttoán 1.5 làđúngđắnvàcóđộphứctạplà O(|F||K||U|(|K|+|U|).
Lýthuyếtphântách • Cho R làmộtlượcđồquanhệ. Mộtphântáchcủa R làviệcthaythếlượcđồ R bằngmộthọcáclượcđồ R1, R2, …, RmsaochoRi=R. • Kýhiệu(R1, R2,…,Rm) • Cho (R1, R2, …, Rm) làmộtphântáchcủa R(A1,A2,…An) và r làmộtthểhiệntrên R. • Gọi m(r) làánhxạđượcxácđịnhbởi m(r) = r1*r2*…*rm • Trongđóri= πRi(r), vớii=1,2,…,m.
Lýthuyếtphântách (tiếp) • Ta cócáctínhchấtsau: • r m(r) • Nếu s = m(r) thì πRi(s) = ri • m(m(r)) = m(r) • Bàitập 10. Chứng minh cáctínhchấttrên. • Phântáchkhôngmấtthông tin: Phântách (R1,…,Rm) củalượcđồquanhệ (R,F) nếuvớimọithểhiện r của R màthoả F thì r=m(r).
Thuậttoánkiểmtraphântách • Thuậttoán 1.6 • Vào: (R, F) và (R1, …,Rm) • Ra true nếuphântáchkhôngmấtthông tin vàngượclại • Phươngpháp: • Lậpbảng m hàng n cột, cácphầntửđượcxácđịnhnhưsau: pt(i,j) = ajnếuAjRi, bijnếungượclại. • Biếnđổibảng:Vớimỗi X->Y thuộc F nếucó 2 hànggiốngnhautrên X màkhácnhautrên Y thìlàmchogiốngnhau (ưutiêncho a)
Lặplạichođếnkhikhôngbiếnđổibảngđượcnữa 3. Nếubảngchứahàngtoànkýhiệu a thìphântáchkhôngmấtthông tin. Ngượclạiphântáchmấtthông tin. Vídụ: dùngthuậttoán 1.6 kiểmtravớilượcđồquanhệ ({A, B, C, D, E, F}, {A->C, B->C, C->D, DE->C, CE->A}) phépphântách (AD, AB, BE, CDE, AE) cómấtthông tin không? Bàitập 11:Chứng minh thuậttoán 1.6 đúngđắn Bàitập 12:Chứng minh địnhlýsau. Địnhlý 1.6. Cho lượcđồ (R,F). Khiđóphântách (R1, R2) làphântáchkhôngmấtthông tin nếuvàchỉnếu (R1R2) ->R1\R2 hay (R1 R2) ->R2\R1.
Lýthuyếtphântách (tiếp) • Cho (R, F) và Z R. Hìnhchiếucủa F lên Z, kýhiệu πZ(F) = {X->Y: (X->Y) F+và XY Z} • Phântách (R1, …, Rm) của (R, F) đượcgọilàbảotoàntập F nếu: (πRi(F))+ = F+ • Bàitập 12: Cho (R,F) vàphântách (R1,…,Rm) cókếtnốikhôngtổnthất. Vớimỗiigọi Fi= πRi(F) vàgiảsử (S1, …, Sk) làmộtphântáchcủaRicókếtnốikhôngtổnthấtvới Fi. CMR phântách (R1,..Ri-1, S1,…,Sk, Ri+1,..Rm) cókếtnốikhôngtổnthấtđốivới F. • Bàitập 13: Càiđặtthuậttoán 1.6
Lýthuyếtchuẩnhoá • Mụcđíchcủachuẩnhoá: • Tránhdưthừadữliệu • Tránhdịthườngkhicậpnhật • Cho lượcđồ (R, F), Ai làmộtthuộctính. Ai làthuộctínhkhoánếu Ai nằmtrong 1 khoánàođócủa R. • Phụthuộchàm X->A làpthđầyđủnếukhôngtồntại Y X mà Y->A • Địnhnghĩa 1: Lượcđồ (R, F) làởdạngchuẩn 1 (1NF) nếumiềntrịcủacácthuộctínhđềunguyêntố.
Lýthuyếtchuẩnhoá (tiếp) • Địnhnghĩa 2: Lượcđồ (R, F) làởdạngchuẩn 2 (2NF) nếu: • R ởdạngchuẩn 1NF • Mọithuộctínhkhôngkhoáđềuphụthuộchàmđầyđủvàomỗimộtkhoá. • Vídụ: • Lượcđồ ({A,B,C,D}, {A->B, B->C}) là 2NF. • Lượcđồ ({S,A,I,P}, {S->A, SI->P}) khônglà 2NF
Lýthuyếtchuẩnhoá (tiếp) • Địnhnghĩa 3: Lượcđồ (R,F) đượcgọilà 3NF nếupth X->A đúngtrên R và AX thì X phảilàsiêukhoá, hoặc A phảilàthuộctínhkhoá. • Vídụ: • Lượcđồ ({S,A,I,P},{S->A, SI->P}) khônglà 3NF • Lượcđồ ({C, S, Z},{CS->Z, Z->C}) có 2 khoá SC và SZ. Do đólà 3NF.
Lýthuyếtchuẩnhoá (tiếp) • Đinhnghĩa 4: Lượcđồ (R,F) làởdạngchuẩn Boyce Codd (BCNF) nếuphụthuộchàm X->A đúngtrên R thì X phảilàsiêukhoá. • Vídụ: • Lượcđồ ({A,C,D,E,I,B},{ACD→EBI,CE→AD}) BCNF • Lượcđồ ({A,B,C,D},{AB → C, D → B,C→ ABD}) đạtchuẩn 3NF nhưngkhông là BCNF
Lýthuyếtchuẩnhoá (tiếp) • Bàitập 14: Chứng minh mọilượcđồthoả 3NF cũngthoả 2NF • Bàitập15: Chứng minh mọilượcđồthoảBCNF cũngthoả3NF
Lýthuyếtchuẩnhoá (tiếp) • Cho F và G làhaitậppthtrên U. • F phủ G nếu G+ F+ • F tươngđương G nếu F+=G+. • Bàitập 16. Chứng minh F tươngđương G khivàchỉkhimọipthcủa F đềuthuộc G+vàmọiphụthuộchàmcủa G đềuthuộc F+. • Cho F, G làhaitậppthtrên U. F làphủtốithiểucủa G nếu: • F làphủcủa G • Mọipthcủa F códạng X->A • F khôngchứapthdưthừa: f F, (F\{f})+ F+ • Cácpthcủa F cóvếtráikhôngrútgọnđược.
Lýthuyếtphântách (tiếp) • Bàitập 17. Xâydựngthuậttoántìmphủtốithiểu. • Bàitập 18. Càiđặtthuậttoántìmphủtốithiểu.
Thuậttoánphântáchvề 3NF • Thuậttoán 1.7 • Vào: R, F (phủtốithiểu) • Ra: 1 phântáchcủa R bảotoàn F, cáclượcđồ con 3NF • Phươngpháp: Nếucónhữngthuộctínhkhôngxuấthiệnởbấtkỳpthnàocủa F thìtạomộtlượcđồ con gồmcácthuộctínhnàyvàbỏchúngkhỏi R. Nếucó 1 pththuộc F chứatấtcảcácthuộctínhthìdừng. Trườnghợpcònlạivớicácpthcódạng X->A1, X->A2, …, X->Akthìtáchthànhlượcđồ con XA1…Ak. Bàitập 18. Chứng minh thuậttoán 1.7 đúngđắn.
Thuậttoánphântáchvề BCNF • Thuậttoán1.8 • Vào: R, F • Ra: 1 phântáchcủa R bảotoàn F, cáclượcđồ con BCNF • Phươngpháp: Ban đầuphântáchgồm R Lặpkhicáclượcđồ con chưalà BCNF: + Nếulượcđồ con Richưalà BCNF thìtồntạipth X->A mà X khôngphảikhoávà AX. + TáchRithànhXA vàRi\XA. • Bàitập 19. Chứng minh thuậttoán 1.8 làđúngđắn.
Phụthuộcđatrị • Địnhnghĩa: Cho lượcđồ R=(U,F), X,YU, Z=U\XY. Lượcđồ R thoảphụthuộcđatrị X xácđịnh Y, kýhiệu X->->Y nếuvớimọiquanhệ r trên R, vớihaibộbấtkỳ t1, t2 r mà t1[X]=t2[X] thìtồntại t3 r saocho t3[X]=t1[X] và t3[Z]=t2[Z]. • Vídụ:
Phụthuộcđatrị (tiếp) • Hệtiênđềđốivớiphụthuộchàmvàphụthuộcđatrị: • FD1 (quy tắc phản xạ cho FD): Nếu X⊇Ythì X→Y • FD2 (quy tắc gia tăng cho FD): Nếu X →Y thì XZ → YZ • FD3 (quy tắc bắc cầu choFD): Nếu X→Y và Y→Z thì X→Z • MVD1 (quy tắc bù cho MVD): Nếu X →→Y thì X→→ (U-(X∪Y)) • MVD2 (quy tắc tăng cho MVD): NếuX→→Y và W⊇ Z thì WX→→YZ • MVD3 (quy tắc bắc cầu cho MVD): Nếu X→→ Y và Y→→ Z thì X→→ (Z – Y) • MVD4 (quy tắc tái tạo cho FD và MVD): Nếu X →Y thì X→→ Y • MVD5 (quy tắc bắc cầu cho FD và MVD): Nếu X→→ Y và Y→ Z thì X→→ (Z – Y)
Phụthuộcđatrị (tiếp) • Địnhlý 1.8: Hệtiênđề FD1-FD3 và MVD1-MVD5 làxácđángvàđầyđủ. • Bài tập 20. Chứng minh tính đúng đắn của các luật MVD1-MVD5. • Bài tập 21. Chứng minh các luật sau: • Nếu X->->Y thì X->->U-Y • Nếu X->->Y và X->->Z thì X->->Y Z • Nếu X->->Y và X->->Z thì X->->Y-Z
Phụthuộcđatrị (tiếp) • Địnhnghĩa: Cho lượcđồ R=(U,F) với F làtậpcácpthvàptdt. Lượcđồ R ởdạngchuẩn 4 (4NF) nếuvớimọiphụthuộcđatrịkhôngtầmthường X->->Y thoảtrên R thì X làsiêukhoá. • Vídụ: LượcđồNhanVien({TenNV, TenDuAn, TenCon}, {TenNV->->TenDuAn, TenNV->->TenCon}) khôngphảidạngchuẩn 4. • Bàitập 22. Chứng minh lượcđồ R đượcphântáchthành R1 và R2 làkhôngmấtthông tin khivàchỉkhi R1R2->->R1-R2 hoặcR1R2->->R2-R1.
Phụthuộcđatrị (tiếp) • Thuậttoán 1.9: Phântáchlượcđồvề 4NF • Vào: R=(U,F) • Ra: Phântách R thànhcáclượcđồ con thoả 4NF • D:={R}; • Khi có một lược đồ quan hệ Q trong D không ở 4NF, thực hiện: • Chọn một lược đồ quan hệ Q trong D không ở 4NF; • Tìm một phụ thuộc đa trị không tầm thường X→→Y trong Q vi phạm 4NF; • Thay thế Q trong D bằng hai lược đồ quan hệ (Q – Y) và (X ∪ Y);
Phụthuộckếtnối • Địnhnghĩa: Cho lượcđồ R=(U,F), X1, X2, ...,Xk U. Lượcđồ R thoảphụthuộckếtnối X1*X2*…*Xknếumọithểhiện r của R ta có: πR1(r)*πR2(r)*...*πRk(r) = r • PhụthuộckếtnốiX1*X2*...*Xklàtầmthườngnếucó Xi=U. • Địnhnghĩa: Lượcđồ R=(U,F), với F gồmcácpth, ptdtvàptknlàởdạngchuẩn 5 (5NF) nếumỗiphụthuộckếtnốikhôngtầmthườngX1*X2*...*Xkthì Xi làsiêukhoá, vớii=1,2,…,k.