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
≤i≤ n
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 R∪S,là quan hệQ
đượcđịnhnghĩanhưsau:
Q= R∪S= { |t∈R∨t∈S} 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 R∪S
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 R−S ,làquan hệ
Qđ ượcđịnh nghĩanhưsau:
Q= R− S= { |t∈R∧t∉S}
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ớ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 R∩S ,làquan hệQđượcđịnh nghĩanhư sau: Q= R∩S= { |t∈R∧t∈S} Trang 41/109 R∪S 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
R∩S
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|t∈R∧q∈S}
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= { |∀u∈S,(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
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…
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)= { |t∈R∧P(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
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ênvà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)
KQ← MaNV,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
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:
A∈R+và B∈S+ làhaithuộctínhcĩthểsosánhđược.
Trang46/109
Gọilà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: AB
R S= {v= (t,u)|t∈R,u∈S,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ệnAB.
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ỏđiAB.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
đặ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)| (t∈R,u∈S:t.Au.B)∨ (t∈R,u=unull :t.A∉S[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)| (t∈R,u∈S:t.Au.B)∨ (t=tnull,u∈S,:u.B∉R[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.
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: r←r∪E,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
DEAN ←DEAN∪{'DA01','Phổcậptinhọc','ĐứcTrọng',4}
2.6.2. Xĩa
Phép xố: : r←r− E,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
PHANCONG ←PHANCONG− (⌠MaNV='NV01'(NHANVIEN ))
Xĩatấtcảcácđềándophịngmangtên‘QuảnLý’chủtrì
r1←(⌠TenPhong='QuanLý'(PHON
GBAN
r2← MaDA,TenDA,DDiemDA,Phong
(r1) DEAN ←DEAN−r2 MaPhong=Pho ng DEAN)) 2.6.3. Sửa Phépsửa: r← F1,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