Nhập tất cả các quan hệ cĩ cùng 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 56 - 74)

3. Các bước chuyển đổi từ mơ hình thực thể kết hợp

3.4.Nhập tất cả các quan hệ cĩ cùng khĩa

Sau khi thực hiện chuyển đổi, cĩ thể cĩmột sốquan hệ cĩcùng khĩa, khi đĩ thực hiện

việcnhậptấtcảcácquan hệcĩcùngkhĩa lạithànhmộtquanhệ.

Trang 39/109

Chương 4

Ngơn Ngữ Đại Số Quan Hệ

Ngơn ngữ đại số quan hệ là ngơn ngữ phi thủ tục. Nĩ bao gồm tập hợp các phép tốn

đượcápdụngtrêncácthểhiện củaquan hệ,kếtquả củamộtcâu truyvấnlà m ột thểhiện

của quanhệ. Ngơnngữđại sốquan hệcĩưuđiểm trongviệcthể hiệnkếhoạch thựchiện

câutruyvấnvàcáckỹthuậttốiưuhĩacâutruyvấn.

1. Cácphép tốncơsở

Các phép tốn cơ bản được áp dụng trên tập các bộ giá trị của các quan hệ, được hình

thànhtừlýthuyếttậphợptốnhọc:hợphayhội(union),hiệu(minus),giao(int ersection),

tích đề các (cartesian product operation), chia (division), bù (complement). Q uan hệ kết

quả của các phép tốn hợp, hiệu, trừ cĩ cùng tên thuộc tính với quan hệ đầu tiên (quy

ước).

Giảthiết: R(A1,A2,...,An)và S(B1,B2,...,Bn )

Tínhkhảhợp

Quanhệ R(A1,A2,...,An) và S(B1,B2,...,Bn) đượcgọilàkhảhợpkhi:

SốbậccủaRvàSlàbằngnha u,nghĩalàcùngsốlượngt

huộctính.

Miền giátrịcủathuộctínhphảitươngthích MGT(Ai)= MGT(Bi ),với1

in

1.1.1. Phéphợp(union)

Hợp (hay cịn gọi làhội) của hai quan hệkhả hợpR vàS, ký hiệu RS,là quan hệQ

đượcđịnhnghĩanhưsau:

Q= RS= { |tRtS} Vídụ: Trang 40/109 t A B a1 b1 a2 b1 A B a1 b2 a2 b3 A B a1 b2 a2 b3 A B A1 b1 a1 b2 a2 b1 A B a1 b1 a1 b2 a2 b1 A B a1 b1 a1 b2 a2 b1 a2 b3

R S

Nĩicáchkhác,hợpcủahaiquanhệR vàSlàmột quanhệcĩcùng ngơivớiqu anhệRvà

S, với cácbộ giátrịbằng gộpcác bộcủa cảR vàS, nhữngbộgiá trịtrùng nh auchỉgiữ

lại1 bộ.Trongvídụtrênbộ{a1,b2}xuấthiện trongcảRvàS,dođĩchỉxuất hiện1lần

trong RS (adsbygoogle = window.adsbygoogle || []).push({});

1.1.2. Phéptrừ(minus)

Phép trừ(haycịngọilàhiệu)của haiquanhệkhảhợpR và S,k ý hiệu RS ,làquan hệ

Qđ ượcđịnh nghĩanhưsau:

Q= RS= { |tRtS}

RS

Nĩicáchkhác,hợpcủahaiquanhệR vàSlàmột quanhệcĩcùng ngơivớiqu anhệRvà

S,vớicácbộgiátrịlàcácbộcủacảRsaukhiđãloạibỏcácbộcĩmặttrongS.

1.1.3. Phép giao(intersect)

Giao củahaiquan hệkhả hợpR vàS,kýhiệu RS ,làquan hệQđượcđịnh nghĩanhư sau: Q= RS= { |tRtS} Trang 41/109 RS t Vídụ: R S t C D c1 d2 c2 d3 A B a1 b2 A B a1 b1 a1 b2 a2 b1 A B a1 b2 a2 b3 A B a1 b1 a1 b2 a2 b1 A B C D a1 b1 c1 d2 a1 b1 c2 d3 a1 b2 c1 d2 a1 b2 c2 d3 a2 b1 c1 d2 a2 b1 c2 d3

RS

Nĩi cách khác,giao của haiquan hệ R vàS làmột quan hệcĩcùng ngơi với quan hệR

vàS,vớicácbộgiátrịlàcácbộgiốngnhau trongcảRvàS.

1.1.4. Phép tíchđềcác(CartesianProductOperation)

Giảthiết: R(A1,A2,...,An )và S(B1,B2,...,Bm)

Phéptíchđềcáccủahaiquan hệcủahaiquanhệRvàS,kýhiệu RxS,làquan hệQđược

địnhnghĩanhưsau:

Q= RxS ={tq|tRqS}

Vậy tíchđềcáccủa haiquan hệR vàSlà một quanhệgồm (n+m)ngơi với n thuộctính

đầulàmộtbộcủaRvàmthuộctínhsaulàmộtbộthuộcS.

1.1.5. Phép chia(division)

Vídụ:

R S

Vídụ:

Trang 42/109

Giả thiết: R(A1,A2,...,An )và S(B1,B2,...,Bm) ( n>m,S≠ ∅), cĩ m thuộctính chung . Khi

đĩphépchiatrên2 quanhệRv àS,kýhiệu RS ,làquanh ệQcĩ(n-m)ngơiđượcđịnh

nghĩanhưsau:

Q= RS= { |∀uS,(t,u)∈R}

RS

Nĩicách khác, phép chia củaquan hệR cho S đưara tấtcảcácbộ trongquan hệ R,sao (adsbygoogle = window.adsbygoogle || []).push({});

chokhớpvới tấtcảcácbộtrongquan hệS

1.2. Cácphéptốnquanhệ

Phần nàytrình bày cácphép tốntrên quan hệvàví dụminhhọadựatrên lượ c đồcơ sở

dữliệuQuảnlýđềán:

NHANVIEN (MaNV, HoNV,tenNV,NgaySinh,DiaChi,Phai,Luong, MaNQL,

Phong)

Tân từ:Mỗinhân viêncĩMãnhân viên(MaNV)duynhấtđểphânbiệtvớicác nhân viên

khác,cĩhọtên(HoNV,TenNV),ngàysinh(NgaySinh),địachỉ(DiaChi),phái Nam hoặc

Nữ(Phai), mứclương(Luong),ngườiquản lýtrựctiếp(MaNQL) vàthuộcvề một phịng

ban(Phong)

PHONGBAN(MaPhong,TenPhong,TruongPhong,NgayNhanChuc)

A B a1 b1 a2 b1 C D C1 d1 C2 d3 A B C D a1 b1 c1 d1 a1 b1 c2 d3 a2 b1 c2 d3 a2 b1 c1 d1 a3 b1 c1 d3 t Vídụ1: R S

Tân từ:Mỗi một phịng bancĩ một mãphịng duy nhất (MaPhong) đểphân b iệt với các

phịng bankhác, cĩtên phịng(TenPhong), ngườitrưởngphịng (TruongPhong ), vàngày

nhận chứccủatrưởngphịng(NgayNhanChuc) DIADIEMPHONG(MaPhong, DiaDiem)

Trang 43/109

Tân từ: Mỗi một phịng ban (MaPhong) cĩ thể cĩ nhiều địa điểm làm việc khác nhau

(DiaDiem)

DEAN (MaDA,TenDA,DdiemDA,Phong)

Tân từ: Mỗi một đề án cĩ một mã đề án duy nhất (MaDA) để phân biệt với các đề án

khác, cĩ tên đềán (TenDA), địađiểm thựchiện (DdiemDA), vàdo một phịn g ban chủ

trìđềánđĩ(Phong)

PHANCONG(MaNV, MaDA ,ThoiGian)

Tân từ: Mỗi mộtnhân viên (MaNV) đượcphân cơng tham giađềán(MaDA) dưới dạng

tham giasốgiờ trên1tuần(ThoiGian)

THANNHAN(MaTN,HoTN,TenTN,Phai,NgaySinh)

Tân từ:MỗithânnhâncĩMãthânnhân (MaTN)duynhấtđểphânbiệtvới các thân nhân

khác,cĩhọtên(HoTN,TenTN),phái(Phai)ngàysinh(NgaySinh) NVIEN_TNHAN(MaNV, MaTN,QuanHe)

Tân từ: Mỗi nhân viên (MaNV) cĩ thể cĩ nhiều thân nhân (MaTN), được diễ n giải bởi

quan hệ(QuanHe)nhưvợ,chồng,con,anhem… (adsbygoogle = window.adsbygoogle || []).push({});

1.2.1. Phép chọn(selection)

Cho phép chọn ra nhữngbộ trong R thỏa mãnbiểu thức điềukiện chọn P cho trước. Ký

hiệulà ⌠P(R) vớiđịnhnghĩa: ⌠P(R)= { |tRP(t)}

với R làquan hệđượcchọn, P làbiểuthức logicchứa cácphép sosánh (≠,≥,

≤,=,.. ),các

phéptốnlogic(∧,∨,←)dạng:

<Thuộctính><phépsosánh><Thuộctính>hay<Hằngsố>

Nhưvậykếtquảcủaphép chọnlàmột quanhệcĩcùngdanh sáchthuộctínhv ớiquan hệ

R. Vídụ:

Chọnnhữngnhânviêncĩlương>=500000 ⌠Luong≥500000(NHANVIEN)

Chobiếtnhữngnhânviênthuộcphịngsố5vàcĩlương>=500000 Trang 44/109

Luong≥500000∧Phong=5(NHANVIEN)

1.2.2. Phép chiếu(projection)

Cho phép tríchchọn ra nhữngcột(thuộc tính) trongR chỉra trongdanh sácht huộctính.

Kýhiệulà A1,A2,...,Ak(R) với A1,A2,..,An làdanhsáchcácthuộctínhcầnchọn vàRlà quan

hệcầntríchchọn.

Nhậnthấy rằng số lượng cácbộ kết quả luơn nhỏ hơn hoặc bằng sốlượng cá c bộ trong

R.Cácbộtrùngnhausẽloạiđivàchỉgiữlạibộ.

Vídụ:

Cho biếtmãnhânviên,họtêncủatấtcảcácnhânviên

MaNV,HoNV,TenNV (NHANVIEN)

Cho biết mã nhân viên,họ tên,phịng làmviệc vàmức lương củatất cảcác nhân

viên

Cho biếtcácđềáncùngvớicácphịngphụtráchđềánđĩ

MaDA,TenDA,Phong (DEAN)

1.2.3. Phép gán(assignment)

Khi gặp những truy vấn phức tạp, phép gán cho phép diễn tả một cách rõ ràn g hơn câu

truy vấn.Khi đĩ, câu truy vấn chínhlà một chuỗi các phép gán theo sau đĩ l à một biểu

thứccĩgiátrịnhưlàkếtquảcủacâutruyvấn. Kýhiệu:

Việc gán được thực hiện cho một biến quan hệ tạm vàđược sử dụng cho các biểu thức (adsbygoogle = window.adsbygoogle || []).push({});

theosau.

1.2.4. Phép đổitên:

Vì cho phép đặt tên nên cĩ thể tham chiếutới kết quả của biểu thức đại số q uan hệ,và

chophépthamchiếutớimộtquanhệbằng nhiềutên Cácphépđổitênsau:

Trang 45/109

Đổi tênquanhệvàtênthuộctính:Chobiểuthứcđạisốquan hệE cĩn thuộctính,

biểu thức 〉(A1,A,,...,An)(E)trảvềkếtquảbiểuthứcE dướitênvàcáctênc ủathuộc

tínhđổithành A1,A2,...,An

Đổi tên quan hệ: Chobiểu thức đạisố quan hệ E, biểu thức 〉(E)trả về kếtquả

biểuthứcEdướitên

Đổi tên thuộc tính: Cho biểu thức đại số quan hệ E cĩ n thuộc tính, biểu thức

〉(A1,A,,...,An)(E)trả về kết quả biểu thức E với các tên của thuộc tính

đổi thành

A1,A2,...,An

Kết hợp các phép tốn đạisố quan hệvới nhau đểtạo ra một quan hệ kết qu ả theo yêu

cầu.

Cĩnhiềucáchđểthểhiệnmộttruyvấnchotrước.

Vídụ:Chobiếtmãnhân viên,họtêncùnglươngcủanhânviênlàmviệctrongp hịngsố4

Cách1: MaNV,HoNV,TenNV,Luong (⌠Phong=4(NHANVIEN))

Cách2:

NVIEN_P4←⌠Phong=4(NHANV

IEN)

KQMaNV,HoNV,TenNV,Luong(NVI

EN_P4)

Cách3:

NVIEN_P4←⌠Phong=4(NHANVIEN)

KQ(MaNV,HoNV,TenNV,LuongNV)← MaNV,HoNV,TenNV,Luong (NVIEN_

P4)

Trongđĩcĩsử dụngphépgánvàphépđặtlạitên.

2. Cácphép tốnkhác (adsbygoogle = window.adsbygoogle || []).push({});

2.1. Phépkếthaiquanhệ

Giả thiết: R(A1,A2,...,An)và S(B1,B2,...,Bm), việc ghép bộ t=(a1,a2,...,

an)∈R vào

v=(b1,b2,...,bm)∈Sđượcđịnhnghĩanhưsau:

AR+và BS+ làhaithuộctínhcĩthểsosánhđược.

Trang46/109

Gọilàmộttrongcácphépsosánh {<,>,=,≥,≤,≠}

Khi đĩ, phép kết nốihai quan hệ R vàS trên cácthuộc tính A,B với phép sosánh  A B C a1 1 1 a2 2 1 a3 2 2 C D E 1 d1 e1 2 d2 e2 3 d3 e3 A B C D E a1 1 1 d1 e1 a2 2 1 d1 e1 a3 2 2 d2 e2 A B C C D E a1 1 1 1 d1 E1 a2 2 1 1 d1 E1 A2 2 1 2 D2 E2 A3 2 2 1 d1 E1 a3 2 2 2 d2 E2

đượcđịnhnghĩa: AB

R S= {v= (t,u)|tR,uS,t.Au.B}

Cĩthểnhậnthấyrằngphépkếtnốiđượcthựchiệnqua2bước:(1)tíchđềcách aiquanhệ

RvàS,(2)chọncácbộthỏađiềukiệnAB.

Nếu là phép tốnsosánh bằng nhau đượcgọi làphép kếtnốibằng(equi join) .Nếu các

thuộc tính so sánh là giống tên nhau thì trong kết quả của phép nốisẽ loại đi một cột

(thuộc tính), khi đĩ phép kết được gọi là phép kết tự nhiên (natural join) và về mặt ký

hiệubỏđiAB.Cáctrườnghợpcịnlạiđượcgọilàphépkếtnốitheta(join)

Trang 47/109

Vídụ:

R S RR.B≥S.CS

2.2. Phépkếtnốinội(innerjoin)

Thực chất củaphép kết nốinội làphép kếtnốibằng đã nêut rên.Tuy nhiên, ngay cảkhi

haithuộctínhcĩcùngtênthìkếtquảvẫngiữlại2tênthuộct ínhđĩ.

R.A=SS

2.3. Phépkếtnốitrái(left join)

Phép kết nối trái hai quan hệ R và S trên các thuộc tính

A v à B với phép so sánh bằng

được định nghĩa là tất cả các bộ v đạt được bằng cách

xếp bộ giá trị của R và S cạnh

nhau,nếucĩgiátrịgiốngnhau trênhaithuộctínhkếtnối

; và cácbộvđạtđượcnhờcách (adsbygoogle = window.adsbygoogle || []).push({});

đặt b ộ R với cácbộ nullcủa S, nếu khơngtìm đượcgiá trịtư

ơng ứng củathuộc tính kết

nốitrênquanhệS.

R.A=S.B

R S= {v=(t,u)| (tR,uS:t.Au.B)∨ (tR,u=unull :t.AS[B])} VớiS[B]làtậptấtcảcácgiátrịcủathuộctínhBcủaS

Vídụ: Trang 48/109 A B C a1 B 1 c1 a2 B 2 c1 a3 B 3 c2 a5 B 5 c5 a7 B 7 c7 A D E a1 d1 e1 a2 d2 e2 a4 d4 e4 a6 d6 e6 a7 d7 e7 A B C A D E a1 b1 c1 a1 d1 E 1 a2 b2 c1 a2 d2 E 2 a7 b7 c7 a7 d7 E 7 Vídụ: R S RA D E a1 d1 e1 a2 d2 e2 a4 d4 e4 a6 d6 e6 a7 d7 e7 A B C a1 b1 c1 a2 b2 c1 a3 b3 c2 a5 b5 c5 a7 b7 c7 A B C a1 b1 c1 a2 b2 c1 a3 b3 c2 a5 b5 c5 a7 b7 c7 A D E a1 d1 e1 a2 d2 e2 a4 d4 e4 a6 d6 e6 a7 d7 e7 A B C A D E a1 b1 c1 a1 d1 e1 a2 b2 c1 a2 d2 e2

a3 b3 c2 null null null a5 b5 c5 null null null

a7 b7 c7 a7 d7 e7

A B C A D E

a1 b1 c1 a1 d1 e1

a2 b2 c1 a2 d2 e2

null null Null a4 d4 e4 null null Null a6 d6 e6

Ý nghĩacủaphép kếtnối nàylàxác định đượccácbộgiá trịcủaquan hệbênt rái nhưng

khơngcĩbộgiátrịtươngứngtrongquan hệbênphải.

2.4. Phépkếtnốiphải(rightjoin)

Phép kếtnối phải haiquan hệR vàS trên các thuộctính A vàB với phép so sánh bằng

được định nghĩa là tất cả các bộ v đạt được bằng cách xếp bộ giá trị của R và S cạnh

nhau, nếucĩgiátrịgiốngnhautrênhaithuộctínhkếtnối;vàcácbộv đạtđược nhờcách

đặt bộnull củaR với các bộcủa S,nếu khơngtìm đượcgiátrịtương ứng của thuộc tính

kếtnốitrênquan hệR.

R.A=S.B

R S= {v= (t,u)| (tR,uS:t.Au.B)∨ (t=tnull,uS,:u.BR[A])} VớiR[A]làtậptấtcảcácgiátrịcủathuộctínhAcủaR

Trang 49/109

R S RR.A=S.AS

Vídụ:

Ýnghĩacủaphép kếtnốinàylà xácđịnhđượccácbộgiátrịcủaquanhệbênp hải nhưng

khơng cĩbộgiátrịtươngứngtrong quanhệbêntrái.

Chú ý rằng trong một số ngơnngữ truy vấn CSDL,người ta gọi haiphép kết nối trái và

phải chung lạilà phép kết nốingồi (outerjoin) vì chophép giữlại tấtcảcác bộ củahai

quan hệkhơngtìmđượcbộgiátrịgiốngnhautrêncácthuộctínhkếtnối. (adsbygoogle = window.adsbygoogle || []).push({});

2.5. Hàmkếthợpvàgomnhĩm

Dùngđểtínhtốncácgiátrịmangtínhchấttổnghợptrongđạisốquanhệ.Tro ngđĩ:

Hàmkếthợp:đầuvàolàmột tậpgiátrịvàtrảvềmộtgiátrịđơn Avg():giátrịtrungbình

Min():giátrịnhỏnhất Max():giátrịlớnnhất Sum():tínhtổng

Count():đếmsốmẫu tin

Gomnhĩm:cơngthứcnhư

sau: G1,G2,..G

N

F1(A1),F2(A2),...,Fn(An)(E),với:

Elàbiểuthứcđạisốquanhệ

Gilàtênthuộctínhgom nhĩm(cĩthểkhơngcĩ) Filàhàmgomnhĩm

Ailàtênthuộctínhtínhtốntronghàmgomnhĩm Vídụ:

Chobiếtsốnhânviêntrongcơngtyvàmứclươngtrungbình

COUNT(MaNV),AVG(Luong)(NHANVIEN)

Chobiếtsốlượngnhânviênvàlươngtrungbìnhcủamỗiphịngban

Ph ong

2.6. Cácphéptốncậpnhậttrênquanhệ

Cácthaotácđượcviếtthơngquaphéptốngán.Cụthểnhưsau: Trang 50/109

2.6.1. Thêm

Phépthêm: rrE,vớirlàmộtquanhệvàElàmộtbiểuthứcđạisốquanh ệ.

Thơng thường, đưa ra bộ cần chèn một cách tường minh hoặc viết một câu tr uyvấn mà

kếtquảtruyvấnchínhlàmộttậpcácbộcầnchèn. Vídụ:Chènmộtbộtườngminh

DEANDEAN∪{'DA01','Phổcậptinhọc','ĐứcTrọng',4}

2.6.2. Xĩa

Phép xố: : rrE,vớir là một quan hệvàE là một biểuthức đạisốquan hệ. Chú ý

rằngphépxĩathựchiệnxĩa mộthoặcnhiềubộmàkhơngthểxĩađigiátrịcủa cácthuộc

tính. Vídụ:

Xĩatấtcảcácphâncơngcơngtácthamgiađềáncủanhân viênmang mãsốNV01

PHANCONGPHANCONG− (⌠MaNV='NV01'(NHANVIEN ))

Xĩatấtcảcácđềándophịngmangtên‘QuảnLý’chủtrì (adsbygoogle = window.adsbygoogle || []).push({});

r1←(⌠TenPhong='QuanLý'(PHON

GBAN

r2MaDA,TenDA,DDiemDA,Phong

(r1) DEANDEANr2 MaPhong=Pho ng DEAN)) 2.6.3. Sửa Phépsửa: rF1,F2,...,Fn(r),với:

Filàmột biểu thức, gồm hằng vàthuộc tínhcủa r đểđưa ra giá trịmới cho thuộc

tínhnày.

Mỗi Ficĩ giátrị trảvề là giá trịmới chothuộc tính thứi của r,thuộc tính này cĩ

thểđượcgiữnguyênhoặccậpnhậtvớigiátrịmới.

Phép sửa cĩ thể đượcviết thơng qua phép xĩa vàthêm. Khi đĩ, phép xĩa sẽ xĩa đi các

bộchứagiátrịcũvàphépthêmsẽthêmnhữngbộchứagiátrịmới. Vídụ:

Cộngthêmlươngmỗinhânviênvớisốtiềnlà120000

NHANVIEN←( MaNV,HoNV,TenNV,NgaySinh,DiaChi,Phai,Luong+120000,MaNQL,Phong(NHANVI EN))

Trang 51/109

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 56 - 74)