(NB) Giáo trình Cơ sở dữ liệu hệ thống kiến thức chuyên ngành trang bị cho sinh viên nghề Lập trình máy tính, môn học góp phần cung cấp những nội dung liên quan đến việc xây dựng các ứng dụng về cơ sở dữ liệu. Nội dung của giáo trình gồm có: Tổng quan về cơ sở dữ liệu; Mô hình cơ sở dữ liệu quan hệ; Ngôn ngữ truy vấn dữ liệu; Ràng buộc toàn vẹn; Lý thuyết thiết kế cơ sở dữ liệu.
Trang 1B NÔNG NGHI P VÀ PHÁT TRI N NÔNG THÔNGỘ Ệ Ể
TRƯỜNG CAO Đ NG C GI I NINH BÌNHẲ Ơ Ớ
GIÁO TRÌNHMÔN H C: Ọ C S D LI UƠ Ở Ữ ỆNGH : Ề L P TRÌNH MÁY TÍNHẬTRÌNH Đ : CAO Đ NG NGHỘ Ẳ Ề
Ban hành kèm theo Quy t đ nh s : /QĐ… ngày…….tháng….năm ế ị ố
c a Tr ủ ườ ng Cao đ ng ngh C gi i Ninh Bình ẳ ề ơ ớ
Trang 2Ninh Bình, năm 2018
Trang 3TUYÊN B B N QUY NỐ Ả Ề
Tài li u này thu c lo i sách giáo trình nên các ngu n thông tin có thệ ộ ạ ồ ể
được phép dùng nguyên b n ho c trích dùng cho các m c đích v đào t o vàả ặ ụ ề ạ tham kh o.ả
M i m c đích khác mang tính l ch l c ho c s d ng v i m c đích kinhọ ụ ệ ạ ặ ử ụ ớ ụ doanh thi u lành m nh s b nghiêm c m.ế ạ ẽ ị ấ
Trang 4L I GI I THI UỜ Ớ Ệ
Giáo trình đư cợ nhóm tác giả biên soạn nhằm t oạ điều ki nệ thu nậ
l iợ cho sinh viên ti pế thu t tố ki nế thức liên quan đ nế môn học. Đây là tài li uệ tham kh o chínhả dành cho sinh viên ngành l p trình máy tính,ậ trư ngờ Cao đẳng C gi i Ninh Bìnhơ ớ h cọ t pậ và nghiên cứu môn h c C s d li u.ọ ơ ở ữ ệ
Trong h th ng ki n th c chuyên ngành trang b cho sinh viên ngh L pệ ố ế ứ ị ề ậ trình máy tính, môn h c góp ph n cung c p nh ng n i dung liên quan đ nọ ầ ấ ữ ộ ế
vi c xây d ng các ng d ng v c s d li u.ệ ự ứ ụ ề ơ ở ữ ệ
Các n i dung chính độ ược trình bày trong tài li u này g m các chệ ồ ương:
Chương 1: T ng quan v c s d li uổ ề ơ ở ữ ệ
Chương 2: Mô hình c s d li u quan hơ ở ữ ệ ệ
Chương 3: Ngôn ng truy v n d li uữ ấ ữ ệ
Chương 4: Ràng bu c toàn v nộ ẹ
Chương 5: Lý thuy t thi t k c s d li uế ế ế ơ ở ữ ệ
M c d u có r t nhi u c g ng, nh ng không tránh kh i nh ng khi mặ ầ ấ ề ố ắ ư ỏ ữ ế khuy t, r t mong nh n đế ấ ậ ược s đóng góp ý ki n c a đ c gi đ giáo trìnhự ế ủ ộ ả ể
Trang 5M C L CỤ Ụ
Trang 6TÀI LI U THAM KH OỆ Ả
[1]. Lê Ti n Vế ương, nh p môn c s d li u quan h , 2000ậ ơ ở ữ ệ ệ
[2]. Vũ Đ c Thi, C s d li u ki n th c và th c hành, Nhà xu t b n th ngứ ơ ở ữ ệ ế ứ ự ấ ả ố
kê 1997
[3] Nguy n An T , Giáo trình nh p môn c s d li u, ĐHKHTNễ ế ậ ơ ở ữ ệ ĐHQGTPHCM 1996
[5] Đ Trung Tu n, C s d li u, Nhà xu t b n giáo d c 1998ỗ ấ ơ ở ữ ệ ấ ả ụ
[6]. Nguy n Xuân Huy, lê Hoài B c, Bài t p c s d li u, Nhà xu t b nễ ắ ậ ơ ở ữ ệ ấ ả
th ng kê, 2003ố
Trang 7GIÁO TRÌNH MÔN H CỌ Tên môn h c: C s d li u ọ ơ ở ữ ệ
Mã s môn h c: MH 14ố ọ
V trí, tính ch t, ý nghĩa và vai trò c a môn h c:ị ấ ủ ọ
V trí: ị Là môn h c sau các môn h c lý thuy t c s ọ ọ ế ơ ở
Tính ch t: ấ Là môn h c chuyên môn ngh l p trình máy tínhọ ề ậ
Ý nghĩa và vai trò c a môn h c ch a đ ng nh ng ki n th c c b n v c sủ ọ ứ ự ữ ế ứ ơ ả ề ơ ở
d li u nh : mô hình c s d li u, đ i s quan h , ngôn ng truy v n SQL,ữ ệ ư ơ ở ữ ệ ạ ố ệ ữ ấ ràng bu c toàn v n, ; Là môn h c h tr cho mô đun H qu n tr c s dộ ẹ ọ ỗ ợ ệ ả ị ơ ở ữ
li u.ệ
M c tiên c a môn h cụ ủ ọ
Ki n th c:ế ứ
+ Trình bày được các khái ni m c b n trong c s d li u;ệ ơ ả ơ ở ữ ệ
+ Đ nh nghĩa đị ược khái ni m v quan h , thu c tính, các lo i khóa, ệ ề ệ ộ ạ
lược đ quan h , b giá tr và ph thu c hàm;ồ ệ ộ ị ụ ộ
+ Trình bày được các l nh c b n c a ngôn ng SQL: đ nh nghĩa dệ ơ ả ủ ữ ị ữ
+ Chu n hóa đẩ ượ ơ ở ữ ệc c s d li u
Năng l c t ch và trách nhi mự ự ủ ệ : Rèn luy n tính c n th n, chính xác khi thaoệ ẩ ậ tác v i c s d li u. ớ ơ ở ữ ệ
Khái ni m đệ ược các mô hình d li u m ng, phân c p, quan h , th c th liênữ ệ ạ ấ ệ ự ể
k t và mô hình hế ướng đ i tố ượng
Trang 81. M t s khái ni m c b n ộ ố ệ ơ ả
1.1. Đ nh nghĩa c s d li u ị ơ ở ữ ệ
Cơ sở dữ li uệ (CSDL) là m tộ hệ th ngố các thông tin có c uấ trúc
đượ l uc ư trữ trên các thi tế bị như băng t ,ừ đĩa t ,…ừ để có thể thoả mãn yêu
c uầ khai thác đ ngồ th iờ c aủ nhi uề ngườ sử d ng. CSDLi ụ g nắ li nề v iớ đ iạ
s ,ố logic toán và m tộ số lĩnh v cự khác
1.2. u đi m c a c s d li u Ư ể ủ ơ ở ữ ệ
Gi mả sự trùng l pặ thông tin xu ngố m cứ th pấ nh tấ và do đó b oả đ mả
đượ tính nh tc ấ quán và toàn v nẹ dữ li u.ệ
Đ mả b oả dữ li uệ có thể truy xu tấ theo nhi uề cách khác nhau
Khả năng chia sẻ thông tin cho nhi uề ngườ sử d ng.i ụ
1.3. Nh ng v n đ mà CSDL c n ph i gi i quy t ữ ấ ề ầ ả ả ế
Tính chủ quy n ề c a ủ dữ li u ệ
Tính chủ quy nề c aủ dữ li uệ đượ thể hi nc ệ ở phươ di nng ệ an toàn dữ
li u,ệ khả năng bi uể di nễ các m iố liên hệ ngữ nghĩa c aủ dữ li uệ và tính chính xác c aủ dữ li u.ệ Đi uề này có nghĩa là ngườ khai thác CSDL ph ii ả có nhi mệ
vụ c pặ nh tậ các thông tin m iớ nh tấ c aủ CSDL
Tính b o ả m t ậ và quy n ề khai thác thông tin c a ủ ng ườ sử d ng i ụ
Do có nhi uề ngườ đi ượ phép khai thác dữ li uc ệ m tộ cách đ ngồ th i,ờ nên c nầ thi tế ph iả có m tộ cơ chế b oả m tậ và phân quy nề h nạ khai thác CSDL. Các
hệ đi uề hành nhi uề ngườ sử d ngi ụ hay hệ đi uề hành m ngạ c cụ bộ đ uề có cung c pấ cơ chế này
Tranh ch p ấ dữ li u ệ
Nhi uề ngườ đi ượ phép truy nh pc ậ cùng m tộ lúc vào tài nguyên dữ li uệ
c aủ CSDL v iớ nh ngữ m cụ đích khác nhau, do đó c nầ thi tế ph iả có m tộ cơ chế uư tiên khi truy nh pậ dữ li u.ệ Cơ chế uư tiên có thể đượ th cc ự hi nệ
b ngằ vi cệ c pấ quy nề uư tiên cho t ngừ ngườ khai thác.i
Đ m ả b o ả an toàn dữ li u ệ khi có sự cố
Vi cệ qu nả lý dữ li uệ t pậ trung có thể làm tăng khả năng m tấ mát ho cặ sai
l chệ thông tin khi có sự cố như m tấ đi nệ đ tộ xu t,ấ hay m tộ ph nầ đĩa l uư trữ CSDL bị h ,…ư m tộ số hệ đi uề hành m ngạ có cung c pấ d chị vụ sao l uư nh
ả đĩa c ng,ứ tự đ ngộ ki mể tra và kh cắ ph cụ l iỗ khi có sự c ố Tuy nhiên,
Trang 9bên c nhạ d chị vụ c aủ hệ đi uề hành, để đ mả b oả CSDL luôn nổ đ nh,ị m tộ CSDL nh tấ thi tế ph iả có m tộ cơ chế khôi ph cụ dữ li uệ khi có các sự cố b tấ ngờ x yả ra.
1.4. Các đ i t ố ượ ng s d ng CSDL ử ụ
Nh ngữ ngườ sử d ngi ụ CSDL không chuyên về lĩnh v cự tin h c ọ vàCSDL
Các chuyên viên CSDL bi tế khai thác CSDL Nh ngữ ngườ này có th xâyi ể
d ngự các ngứ d ngụ khác nhau, ph cụ vụ cho các m cụ đích khác nhau trên CSDL
Nh ngữ ngườ qu ni ả trị CSDL, đó là nh ngữ ngườ hi ui ể bi tế về tin h c,ọ về các hệ qu nả trị CSDL và hệ th ngố máy tính. Họ là ngườ tổ ch ci ứ CSDL, do
đó họ ph iả n mắ rõ các v nấ đề kỹ thu tậ về CSDL để có thể ph cụ h iồ CSDL khi có sự c ố Họ là nh ngữ ngườ c pi ấ quy nề h nạ khai thác CSDL, do
v yậ họ có thể gi iả quy tế đượ các v nc ấ đề tranh ch pấ dữ li uệ n uế có
1.5. H qu n tr c s d li u ệ ả ị ơ ở ữ ệ
Để gi iả quy tế t tố nh ngữ v nấ đề mà cách tổ ch cứ CSDL đ tặ ra như đã nói ở trên, c nầ thi tế ph iả có nh ngữ ph nầ m mề chuyên dùng để khai thác chúng.
Nh ngữ ph nầ m mề này đượ g ic ọ là các hệ qu nả trị CSDL. Các hệ qu nả trị CSDL có nhi mệ vụ hỗ trợ cho các nhà phân tích thi tế kế CSDL cũng như nh ngữ ngườ khai thác CSDL. Hi ni ệ nay trên thị trườ ph nng ầ m mề
đã có nh ngữ hệ qu nả trị CSDL hỗ trợ đượ nhi uc ề ti nệ ích nh :ư MS Access, Visual Foxpro, SQL Server Oracle, …
M iỗ hệ qu nả trị CSDL đ uề đượ cài đ tc ặ d aự trên m tộ mô hình dữ li uệ cụ
th ể Dù là d aự trên mô hình dữ li uệ nào, m tộ hệ qu nả trị CSDL cũng ph iả
h iộ đủ các y uế tố sau:
Ngôn ngữ giao ti p ế gi a ữ ng ườ i sử d ng ụ và CSDL, bao g mồ :
+ Ngôn ngữ mô tả dữ li u: ệ Để cho phép khai báo c uấ trúc c aủ CSDL, khai báo các m iố liên hệ c aủ dữ li uệ và các quy t cắ qu nả lý áp đ tặ lên các
dữ li uệ đó
+ Ngôn ngữ thao tác dữ li u: ệ Cho phép ngườ sử d ngi ụ có thể c pậ nh tậ
dữ li uệ (thêm/s a/xoá)ử
+ Ngôn ngữ truy v n ấ dữ li u: ệ Cho phép ngườ khai thác sử d ngi ụ đ ể truy
v nấ các thông tin c nầ thi tế trong CSDL
Trang 10+ Ngôn ngữ qu n ả lý dữ li u: ệ Cho phép nh ngữ ngườ qu ni ả trị hệ th ngố thay đ iổ c uấ trúc c aủ các b ngả dữ li u,ệ khai báo b oả m tậ thông tin và c pấ quy nề h nạ khai thác CSDL cho ngườ sử d ng.,…i ụ
Từ đi n ể dữ li u: ệ
Dùng để mô tả các ánh xạ liên k t,ế ghi nh nậ các thành ph nầ c uấ trúc c aủ CSDL, các chươ trình ngng ứ d ng,ụ m tậ mã, quy nề h nạ sử d ng,…ụ
Cơ chế gi i ả quy t ế v n ấ đề tranh ch p ấ dữ li u: ệ
M iỗ hệ qu nả trị CSDL cũng có thể cài đ tặ m tộ cơ chế riêng để gi iả quy tế các v nấ đề này. M tộ số bi nệ pháp sau đây thườ đng ượ sử d ng:c ụ thứ nh t:ấ
c pấ quy nề uư tiên cho t ngừ ngườ sử d ng;i ụ thứ hai: Đánh d uấ yêu c uầ truy
xu tấ dữ li u,ệ phân chia th iờ gian, ngườ nào có yêu c ui ầ trướ thì có quy nc ề truy xu tấ dữ li uệ trước,…
Hệ qu n ả trị CSDL cũng ph i ả có cơ chế sao l u ư (backup) và ph c ụ h i ồ
(restore) dữ li u ệ khi có sự cố x y ả ra.
Đi uề này có thể th cự hi nệ sau m tộ th iờ gian nh tấ đ nhị hệ qu nả trị CSDL sẽ
tự đ ngộ t oạ ra m tộ b nả sao CSDL, cách này h iơ t nố kém, nh tấ là đ iố v iớ CSDL l n.ớ
Hệ qu n ả trị CSDL ph i ả cung c p ấ m t ộ giao di n ệ thân thi n, ệ dễ s ử d ng ụ
1.6. Các ng d ng c a c s d li u ứ ụ ủ ơ ở ữ ệ
Hi nệ nay, h uầ như CSDL g nắ li nề v iớ m iọ ngứ d ngụ c aủ tin h c;ọ ch ngẳ
h nạ như vi cệ qu nả lý hệ th ngố thông tin trong các cơ quan nhà nướ vi cc, ệ
l uư trữ và xử lý thông tin trong các doanh nghi p,ệ trong các lĩnh v cự nghiên c uứ
khoa h c,ọ trong công tác gi ngả d y,ạ cũng như trong vi cệ tổ ch cứ thông tin
đa phươ ti n,…ng ệ
2. Các mô hình c s d li u ơ ở ữ ệ
Mô hình dữ li uệ là sự tr uừ tượ hoá môi trng ườ th c.ng ự M iỗ lo iạ mô hình dữ li uệ đ cặ tr ngư cho m tộ cách ti pế c nậ dữ li uệ khác nhau c aủ nh ngữ nhà phân tích thi tế kế CSDL. M iỗ lo iạ mô hình dữ li uệ đ uề có nh ngữ uư
đi mể và nh ngữ m tặ h nạ chế c aủ nó, nh ngư v nẫ có nh ngữ mô hình dữ
li uệ n iổ tr iộ và đượ nhi uc ề ngườ quan tâm nghiên c u.i ứ
Sau đây chúng ta sẽ đi mể qua l chị sử phát tri nể c aủ các mô hình dữ li u.ệVào nh ngữ năm sáu mươ , thế hệ đ ui ầ tiên c aủ CSDL ra đ iờ dướ d ngi ạ
mô hình th cự thể k tế h p,ợ mô hình m ngạ và mô hình phân c p.ấ
Trang 11Vào nh ngữ năm b yả mươ , thế hệ thứ hai c ai ủ CSDL ra đ i.ờ Đó là mô hình dữ li uệ quan hệ do EF. Codd phát minh. Mô hình này có c uấ trúc logic ch tặ ch ẽ Đây là mô hình đã và đang đượ sử d ngc ụ r ngộ kh pắ trong công tác qu nả lý trên ph mạ vi toàn c u.ầ Vi cệ nghiên c uứ mô hình dữ li uệ quan hệ nh mằ vào lý thuy tế chu nẩ hoá các quan hệ và là m tộ công cụ quan tr ngọ trong vi cệ phân tích thi tế kế các hệ CSDL hi nệ nay. M cụ đích
c aủ nghiên c uứ này nh mằ bỏ đi các ph nầ tử không bình thườ c ang ủ quan
hệ khi th cự hi nệ các phép c pậ nh t,ậ lo iạ bỏ các ph nầ tử dư th a.ừ
Sang th pậ kỷ tám m ươi, mô hình CSDL thứ ba ra đ i,ờ đó là mô hình cơ
sở dữ li uệ hướ đ ing ố tượng, mô hình cơ sở dữ li uệ phân tán, mô hình cơ
m tộ trong nh ngữ mô hình ở d ngạ đó là mô hình th cự thể k tế h pợ (sau đó
m iớ dùng m tộ số quy t cắ để chuy nể hệ th ngố từ mô hình này về mô hình
dữ li uệ quan hệ – các quy t cắ này sẽ đượ nói đ nc ế trong m cụ 2 c a chủ ươ ng2)
Các đ cặ đi mể riêng c aủ th cự thể g iọ là các thu c ộ tính.
Ch ngẳ h nạ các thu cộ tính c aủ sinh viên Nguy nễ Văn Thành là:mã số sinh viên, gi iớ tính, ngày sinh, hộ kh uẩ thườ trú, l png ớ đang theo h c,ọ …
Trang 12(Trong giáo trình này, tên thu cộ tính đượ vi tc ế b ngằ chữ in hoa)
Tươ tự trong ngng ứ d ngụ qu nả lý đi mể c aủ sinh viên (sẽ đượ trình bày cngay sau đây) ta có các lo iạ th cự thể như Monhoc, Lop, Khoa,…
(Trong giáo trình này, tên c aủ lo iạ th cự thể đượ in hoa ký tự đ uc ầ tiên, các
dướ li ni ề nét. N uế m tộ hệ th ngố có nhi uề lo iạ th cự th ,ể để đ nơ gi nả hoá
mô hình, ngườ ta có thể chỉ nêu tên các lo ii ạ th cự th ;ể còn các thu cộ tính
c aủ lo iạ th cự thể đượ li tc ệ kê riêng
Ví dụ 1.1:
Bài toán qu nả lý đi mể c aủ sinh viên đượ phát bi uc ể sơ bộ như sau:
M iỗ sinh viên c nầ qu nả lý các thông tin nh :ư họ và tên (HOTENSV),ngày tháng năm sinh(NGAYSINH), gi iớ tính (NU), n iơ sinh(N ISINH),Ơ hộ kh uẩ
Trang 13thườ trú (TINH). M ing ỗ sinh viên đượ c pc ấ m tộ mã số sinh viên duy
nh tấ (MASV) để phân bi tệ v iớ m iọ sinh viên khác c aủ trường, m iỗ sinh viên chỉ thu cộ về m tộ l pớ nào đó. M iỗ l pớ h cọ có m tộ mã số l pớ (MALOP)duy
nh tấ để phân bi tệ v iớ t tấ cả các l pớ h cọ khác trong trường: có m tộ tên g iọ (TENLOP) c aủ l p,ớ m iỗ l pớ chỉ thu cộ về m tộ khoa. M iỗ khoa có m tộ tên
g iọ (TENKHOA) và m tộ mã số duy nh tấ (MAKHOA) để phân bi tệ v iớ các khoa khác M iỗ môn h cọ có m tộ tên g iọ (TENMH) cụ th ,ể đượ h cc ọ trong m tộ số đ nơ vị h cọ trình (DONVIHT) )và ng ứ v iớ môn h cọ là m tộ
mã s duyố nh tấ (MAMH) để phân bi tệ v iớ các môn h cọ khác. M iỗ gi ngả viên c nầ qu nả lý các thông tin: họ và tên(HOTENGV), c pấ h cọ vị (HOCVI), thu cộ m tộ chuyên ngành (CHUYENNGANH) và đượ gán cho m tc ộ mã số duy nh tấ g iọ là mã gi ngả viên(MAGV) để phân bi tệ v iớ các gi ngả viên khác. M iỗ gi ngả viên có thể d yạ nhi uề môn ở nhi uề khoa, nh ngư chỉ thu cộ về sự qu nả lý hành chính c aủ m tộ khoa. M iỗ sinh viên v iớ m tộ môn
h cọ đượ phép thi t ic ố đa 3 l n,ầ m iỗ l nầ thi (LANTHI), đi mể thi (DIEMTHI). M iỗ môn h cọ ở m iỗ l pớ h cọ chỉ phân công cho m tộ gi ngả viên d yạ (t tấ nhiên là m tộ gi ngả viên thì có thể d yạ nhi uề môn ở m tộ l p).ớ
V iớ bài toán trên thì các lo iạ th cự thể c nầ qu nả lý nh : ư Sinhviên, Mônh c,ọ Khoa, L p,ớ Gi ngviên.ả
Ví dụ v iớ lo iạ th cự thể Sinhviên thì c nầ qu nả lý các thu cộ tính nh :ư MASV,HOTENSV, NGAYSINH,… và ta có thể bi uể di nễ như sau:
Trang 14g nắ k tế v iớ các lo iạ th cự thể (ho cặ m iố k tế h p)ợ liên quan, tên m iố k tế
h pợ thườ là: thu c,ng ộ g m ồ , ch a, ứ
Ch ng h n gi a hai lo i th c th L p và Khoa có m i k t h p “thu c” nh ẳ ạ ữ ạ ự ể ớ ố ế ợ ộ ư sau:
B nả số c aủ m tộ nhánh R trong m iố k tế h pợ thể hi nệ số lượ các th cng ự thể thu cộ th cự thể ở nhánh “bên kia” có liên hệ v iớ m tộ th cự thể c aủ nhánh R
M iỗ b nả số là m tộ c pặ số (min,max), chỉ số lượ t ing ố thi uể và số lượ ng
t iố đa c aủ th cự thể khi tham gia vào m iố k tế h pợ đó
Ví d :ụ
Có nghĩa là: “m iỗ sinh viên thu cộ m tộ và chỉ m tộ l pớ nên b nả số bên nhánh Sinhviên là (1,1), m iỗ l pớ có 1 đ nế n sinh viên nên b nả số bên nhánh Lop là (1,n)”
Trong m tộ số trườ h png ợ đ cặ bi t,ệ m iố k tế h pợ có thể có các thu cộ tính đi kèm và do đó chúng thườ đng ượ đ tc ặ tên ý v iớ nghĩa đ yầ đủ h n.ơ
Ví dụ gi aữ hai lo iạ th cự thể Monhoc và Sinhvien có m iố k tế h pợ ketqua
v iớ ý nghĩa: “m iỗ sinh viên ngứ v iớ m iỗ l nầ thi c aủ m iỗ môn h cọ có m tộ
k tế quả đi mể thi duy nh t”.ấ
Khoá c aủ m iố k tế h p:ợ là h pợ c aủ các khoá c aủ các lo iạ th cự thể liên quan.
Ch ngẳ h nạ như thu cộ tính MAGV là khoá c aủ lo iạ th cự thể Giangvien, MALOP là thu cộ tính khoá c aủ lo iạ th cự thể Lop, MAMH là thu cộ tính khoá
c aủ lo iạ th cự thể Monhoc, do đó m i ố k tế h pợ phancong (gi aữ các
Trang 15lo iạ th cự thể Giangvien,Lop,Monhoc) có khoá là {MAGV,MAMH,MALOP} phancong là m iố k tế h pợ 3 ngôi.
(Trong giáo trình này, tên c aủ m iố k tế h pợ đượ vi tc ế toàn b ngằ chữ thường).
Vi cệ thành l pậ mô hình th cự thể k tế h pợ cho m tộ ngứ d ngụ tin h cọ có thể
ti nế hành theo các bướ sau:c
b1.Xác đ nhị danh sách các lo iạ th cự thể
b2.Xác đ nhị các m iố k tế h pợ gi aữ các lo iạ th cự thể để phác th oả mô hình
c a ủ lo iạ th cự thể ) cho m iỗ bài toán qu nả lý sau:
1. QU NẢ LÝ SỐ L ƯỢNG NGÀY CÔNG C AỦ CÁC NHÂN VIÊN
Để qu nả lý vi cệ phân công các nhân viên tham gia vào xây d ngự các công trình. Công ty xây d ngự ABC tổ ch cứ qu nả lý như sau:
Trang 16Cùng lúc công ty có thể tham gia xây d ngự nhi uề công trình, m iỗ công trình có
m tộ mã số công trình duy nh tấ (MACT), m iỗ mã số công trình xác đ nhị các thông tin nh :ư Tên g iọ công trình (TENCT), đ aị đi m(ĐIAĐIEM),ể ngày công trình đượ c pc ấ gi yấ phép xây d ngự (NGAYCAPGP), ngày kh iở công (NGAYKC), ngày hoàn thành (NGAYHT)
M iỗ nhân viên c aủ công ty ABC có m tộ mã số nhân viên(MANV) duy nh t,ấ
m tộ mã số nhân viên xác đ nhị các thông tin nh :ư Họ tên (HOTEN), ngày sinh(NGSINH), phái (PHAI), đ aị chỉ (ĐIACHI),phòng ban, …
Công ty phân công các nhân viên tham gia vào các công trình, m iỗ công trình
có thể đượ phân cho nhi uc ề nhân viên và m iỗ nhân viên cùng lúc cũng có thể tham gia vào nhi uề công trình. V iớ m iỗ công trình m tộ nhân viên có m tộ
số lượ ngày công (SLNGAYCONG) đã tham gia vào công trình đó.ng
Công ty có nhi uề phòng ban(Phòng kế toán, phòng kinh doanh, phòng kỹ thu t,ậ phòng t ổ ch c,ứ phòng chuyên môn, Phòng ph cụ v ,…).ụ M iỗ phòng ban
có m tộ mã s ố phòng ban(MAPB) duy nh t,ấ m tộ phòng ban ngứ v iớ m tộ tên phòng ban(TENPB)
2. QU NẢ LÝ VI CỆ MƯỢN/TRẢ SÁCH Ở M T Ộ THƯ VI N Ệ
M tộ thư vi nệ tổ ch cứ vi cệ cho mượ sách như sau:n
M iỗ quy nể sách đượ đánh m tc ộ mã sách (MASH) dùng để phân bi tệ v iớ các quy nể sách khác (giả sử n uế m tộ tác ph mẩ có nhi uề b nả gi ngố nhau
ho cặ có nhi uề t pậ thì cũng xem là có mã sách khác nhau), m iỗ mã sách xác
đ nhị các thông tin khác như : tên sách (TENSACH), tên tác giả (TACGIA), nhà
Trang 17xu tấ b nả (NHAXB), năm xu tấ b nả (NAMXB).
M iỗ đ cộ giả đượ thư vi nc ệ c pấ cho m tộ thẻ thư vi n,ệ trong đó có ghi rõ
mã đ cộ giả (MAĐG), cùng v iớ các thông tin khác như : họ tên (HOTEN), ngày sinh (NGAYSINH), đ aị chỉ (ĐIACHI), nghề nghi p(NGHENGHIEP).ệ
Cứ m iỗ lượ mt ượ sách, đ cn ộ giả ph iả đăng ký các quy nể sách c nầ mượ nvào m tộ phi uế mượ m i phi un, ỗ ế mượ có m tn ộ số phi u mế ượn (SOPM) khác nhau, m iỗ phi u mế ượn xác đ nhị các thông tin nh :ư ngày mượ sách n(NGAYMUON), mã đ cộ gi ả Các các quy nể sách trong cùng m tộ phi uế
mượ không nh tn ấ thi tế ph iả trả trong m tộ l n.ầ M iỗ quy nể sách có thể thu cộ nhi uề phi uế mượ khác nhau (t tn ấ nhiên là t iạ các th iờ đi mể khác nhau)
3. QU NẢ LÝ L CHỊ D YẠ C AỦ GIÁO VIÊN
Để qu nả lý l chị d yạ c aủ các giáo viên và l chị h cọ c aủ các l p,ớ m tộ trườ tổ ng
ch cứ như sau:
M iỗ giáo viên có m tộ mã s ố giáo viên (MAGV) duy nh t,ấ m iỗ MAGV xác
đ nhị các thông tin nh :ư họ và tên giáo viên (HOTEN), số đi nệ tho iạ (DTGV).
M iỗ giáo viên có thể d yạ nhi uề môn cho nhi uề khoa nh ngư chỉ thu cộ sự
qu nả lý hành chánh c aủ m tộ khoa nào đó
M iỗ môn h cọ có m tộ mã số môn h cọ (MAMH) duy nh t,ấ m iỗ môn h cọ xác
đ nhị tên môn h c(TENMH).ọ ngỨ v iớ m iỗ l pớ thì m iỗ môn h cọ chỉ đượ phân ccho m tộ giáo viên
M iỗ phòng h cọ có m tộ số phòng h cọ (PHONG) duy nh t,ấ m iỗ phòng có m tộ
Trang 18ch cứ năng (CHUCNANG); ch ngẳ h nạ như phòng lý thuy t,ế phòng th cự hành máy tính, phòng nghe nhìn, xưở th cng ự t pậ cơ khí,…
M iỗ khoa có m tộ mã khoa (MAKHOA) duy nh t,ấ m iỗ khoa xác đ nhị các thông tin nh :ư tên khoa (TENKHOA), đi nệ tho iạ khoa(DTKHOA)
M iỗ l pớ có m tộ mã l p ớ (MALOP) duy nh t,ấ m iỗ l p có ớ m tộ tên l pớ (TENLOP), sĩ số l pớ (SISO). M iỗ l pớ có thể h cọ nhi uề môn c aủ nhi uề khoa
nh ngư chỉ thu cộ sự qu nả lý hành chính c aủ m tộ khoa nào đó
Hàng tu n,ầ m iỗ giáo viên ph iả l pậ l chị báo gi ngả cho bi tế giáo viên đó sẽ d yạ
nh ngữ l pớ nào, ngày nào (NGAYDAY), môn gì?, t iạ phòng nào, từ ti tế nào (TUTIET) đ nế ti tế nào (ĐENTIET),t aự đề bài d yạ (BAIDAY), nh ngữ ghi chú (GHICHU) về các ti tế d yạ này, đây là giờ d yạ lý thuy tế (LYTHUYET) hay th cự hành giả sử n uế LYTHUYET=1 thì đó là giờ d yạ
th cự hành và n uế LYTHUYET=2 thì đó là giờ lý thuy t,ế m tộ ngày có 16 ti t,ế sáng từ ti tế 1 đ nế ti tế 6, chi uề từ ti tế 7 đ nế ti tế 12, t iố từ ti tế 13 đ nế 16
M tộ số yêu c uầ c aủ hệ th ngố này nh :: L pư ậ l chị d yạ trong tu nầ c aủ các giáo viên. T ngổ số d yạ c aủ các giáo viên theo t ngừ môn cho t ngừ l p,ớ …
4. QU NẢ LÝ H CỌ VIÊN Ở M T Ộ TRUNG TÂM TIN H CỌ
Trung tâm tin h cọ KTCT thườ xuyên mở các l png ớ tin h cọ ng nắ h nạ và dài
h n.ạ M iỗ l pớ ng nắ h nạ có m tộ ho cặ nhi uề môn h cọ (ch ngẳ h nạ như l pớ Tin h cọ văn phòng thì có các môn : Word, Power Point, Excel, còn l pớ l pậ trình Pascal thì chỉ h cọ m tộ môn Pascal). Các l pớ dài h nạ (ch ngẳ h nạ như l pớ
kỹ thu tậ viên đồ hoạ đa truy nề thông, l pớ kỹ thu tậ viên l pậ trình, l pớ kỹ
Trang 19thu tậ viên ph nầ c ngứ và m ng,…ạ ) thì có thể h cọ nhi uề h cọ ph nầ và m iỗ h cọ
ph nầ có thể có nhi uề môn h c.ọ
M iỗ h cọ viên có m tộ mã h cọ viên(MAHV) duy nh tấ và chỉ thu cộ về m tộ
l pớ duy nh tấ (n uế h cọ viên cùng lúc h cọ nhi uề l pớ thì ngứ v iớ m iỗ l p,ớ
h cọ viên đó có m tộ MAHV khác nhau). M iỗ h cọ viên xác đ nhị họ tên (HOTEN), ngày sinh (NGAYSINH),n iơ sinh (NOISINH), phái nam hay nữ (PHAI), nghề nghi pệ (NGHENGHIEP) nghề nghi pệ là SINH VIÊN, GIÁO VIÊN, KỸ S ,Ư H CỌ SINH, BUÔN BÁN,…
Trung tâm KTCT có nhi uề l p,ớ m iỗ l pớ có m tộ mã l pớ duy nh tấ (MALOP),
m iỗ l pớ xác đ nhị các thông tin: tên l pớ (TENLOP), th iờ khoá bi u,ể ngày khai gi ngả (NGAYKG), h cọ phí (HOCPHI)
Chú ý r ngằ t iạ m tộ th iờ đi m,ể trung tâm có thể mở nhi uề l pớ cho cùng m tộ
chươ trình h c.ng ọ V i ớ các l pớ dài h nạ thì ngày khai gi ngả đượ xem là ngày c
b tắ đ uầ c aủ m iỗ h cọ ph nầ và H CỌ PHÍ là h cọ phí c aủ m iỗ h cọ ph n,ầ v iớ
l pớ ng nắ h nạ thì H CỌ PHÍ là h cọ phí c aủ toàn khoá h cọ đó
Trung tâm có nhi uề môn h c,ọ m i môn h cỗ ọ có mã môn h c (MAMH)ọ duy
nh t,ấ m iỗ môn h cọ xác đ nhị tên môn h c(TENMH),ọ số ti tế lý thuy tế (SOTIETLT), số ti tế th cự hành (SOTIETTH)
M iỗ h cọ viên ngứ v iớ m iỗ môn h cọ có m tộ đi mể thi(DIEMTHI) duy nh t.ấ
M iỗ l nầ đóng h cọ phí, h cọ viên sẽ đượ trung tâm giao cho m tc ộ phi uế biên lai thu ti n,ề m iỗ biên lai có m tộ số biên lai duy nh tấ để qu nả lý
M tộ số yêu c uầ c aủ hệ th ngố này nh ::L pư ậ danh sách nh ngữ h cọ viên khai
Trang 20gi ngả khoá ngày nào đó. L pậ danh sách các h cọ viên c aủ m tộ l pớ ? Cho bi tế
số lượ h cng ọ viên c aủ m iỗ l pớ khai gi ngả khoá ngày nào đó ?
5. QU NẢ LÝ COI THI TUY NỂ SINH
M tộ h iộ đ ngồ coi thi tuy nể sinh có nhi uề đi mể thi, m iỗ đi mể thi đượ đ tc ặ t iạ
m tộ trườ nào đó. Các đi mng ể thi (7
DIEMTHISO) đượ đánh số là đi mc ể thi số 1, đi mể thi số 2, đi mể thi số 3,…
M iỗ đi mể thi xác đ nhị đ aị chỉ (DIACHIDIEMTHI). Ví d :ụ đi mể thi số 1, đ tặ
t iạ trườ PTTH Nguy nng ễ Thị Minh Khai, đi mể thi số 2 đ tặ t iạ trườ PTTH ngBùi Thị Xuân,…
M iỗ thí sinh có m tộ số báo danh (SOBD) duy nh t,ấ m iỗ số báo danh xác đ nhị các thông tin: họ và tên (HOTEN), ngày sinh (NGAYSINH), phái (PHAI), hộ
kh uẩ thườ trú (TINH), đ ing ố tượ dự thi (DOITUONG), ngành đăng ký thi, ngkhu v cự c aủ thí sinh (KHUVUC), số hi uệ phòng thi. Ví d :ụ thí sinh Vũ M nhạ
Cường, có số báo danh là 02978, sinh ngày 12/12/1984, phái nam, hộ kh uẩ
thườ trú t ing ạ Chợ G oạ Ti nề Giang, thu cộ khu v cự 1, đ iố tượ là 5B, ngđăng ký dự thi vào ngành có mã ngành là 01, thi t iạ phòng thi 0178, đi mể thi số 1
Trang 21(GHICHU) ghi thêm các thông tin c n thi tầ ế nh phòngư thi đó n mằ t iạ dãy nhà nào. Ví dụ phòng thi 0060 n mằ ở dãy nhà H l uầ 2 đi mể thi số 1 trườ ngPTTH Bùi Thị Xuân.
M iỗ môn thi có m tộ mã môn thi duy nh tấ (MAMT), m iỗ mã môn thi bi tế các thông tin như : tên môn thi (TENMT), ngày thi (NGAYTHI), bu iổ thi (BUOITHI), th i gianờ làm bài thi đượ tính b ngc ằ phút (PHUT). Th iờ gian làm bài thi c aủ các môn t iố thi uể là 90 phút và t iố đa là 180 phút (tuỳ theo kỳ tuy nể sinh công nhân, trung c p,ấ cao đ ngẳ hay đ iạ h c)ọ
M iỗ ngành có m tộ mã ngành, ch ngẳ h nạ ngành Công Nghệ Thông Tin có mã ngành là 01, ngành Công Nghệ Hoá Th cự Ph mẩ có mã ngành là 10,…
M iỗ đ nơ vị có cán bộ tham gia vào kỳ thi có m tộ mã đ nơ vị duy nh tấ (MADONVI), mã đ nơ vị xác đ nhị tên đ nơ vị (TENDONVI). N uế là cán b ,ộ công nhân viên c aủ trườ thì đ nng ơ vị là khoa/phòng qu nả lý cán bộ đó, n uế là giáo viên từ các trườ khác thì ghi rõ tên đ nng ơ vị đó. Ch ngẳ h nạ cán bộ Nguy nễ Thanh Liêm đ nơ vị Khoa Công Nghệ Thông Tin, cán bộ coi thi Nguy nễ Thị Tuy tế Mai, đ nơ vị trườ PTTH Ngôi Sao Qu nng ậ 1,…
M iỗ cán bộ coi thi chỉ làm vi cệ t iạ m tộ đi mể thi nào đó. M iỗ cán bộ có m tộ
mã số duy nh tấ (MACANBO), m iỗ MACANBO xác đ nhị các thông tin khác như : họ và tên (HOTENCB),
đ nơ vị công tác, ch cứ vụ (CHUCVU) đượ phân công t ic ạ đi mể thi, ch ngẳ h nạ
ch cứ vụ là đi mể trưởng, đi mể phó, giám sát, thư ký, cán bộ coi thi, ph cụ v ,ụ
… Ví dụ cán bộ Nguyen Van Thanh đ nơ vị Khoa Công Nghệ Thông Tin, làm
Trang 22nhi mệ vụ thi t iạ đi mể thi số 1, ch cứ vụ là giám sát phòng thi.
Chương 2: Mô hình c s d li u quan hơ ở ữ ệ ệ
Mô hình dữ li uệ quan hệ (Ralational Data Model) g iọ t tắ là mô hình quan
h ,ệ do EF.Codd đề xu tấ năm 1970. N nề t ngả lý thuy tế c aủ nó là khái
ni mệ lý thuy tế t pậ h pợ trên các quan h ,ệ t cứ là t pậ c aủ các bộ giá tr ị
Mô hình dữ li uệ quan hệ là mô hình đượ nghiên c uc ứ nhi uề nh t,ấ và
th cự ti nễ đã cho th yấ r ngằ nó có cơ sở lý thuy tế v ngữ ch cắ nh t.ấ Mô hình
dữ li uệ này cùng v iớ mô hình th cứ thể k tế h pợ đang đượ sử d ngc ụ r ngộ rãi trong vi cệ phân tích và thi tế kế CSDL hi nệ nay
Sau đây là các khái ni mệ c aủ mô hình dữ li uệ quan h ệ
1.1. Thu cTính(attribte) ộ
Thu cộ tính là các đ cặ đi mể riêng c aủ m tộ đ iố tượ (đ ing ố t ượ đ ng ượ c
hi uể như là m tộ lo iạ th cự thể ở mô hình th cự thể k tế h p),ợ m iỗ thu cộ tính có m tộ tên g i ọ và ph iả thu cộ về m tộ ki u ể dữ li u ệ nh tấ đ nh.ị
Ki uể dữ li u ệ (data type)
Các thu cộ tính đượ phân bi tc ệ qua tên g iọ và ph iả thu cộ m tộ ki uể dữ
li uệ nh tấ đ nhị (s ,ố chu i,ỗ ngày tháng, logic, hình nh,…).ả Ki uể dữ li uệ ở đây có thể là ki uể vô hướ ho cng ặ là ki uể có c uấ trúc. N uế thu cộ tính có
ki uể dữ li uệ là vô hướ thì nó đng ượ g ic ọ là thu cộ tính đ nơ hay thu cộ tính nguyên t ,ố n uế thu cộ tính có ki uể dữ li uệ có c uấ trúc thì ta nói r ngằ nó không ph iả là thu cộ tính nguyên t Ch ngố ẳ h nạ v iớ sinh viên Nguy nễ Văn
Trang 23Thành thì các thu cộ tính họ và tên, mã số sinh viên thu cộ ki uể chu i,ỗ thu cộ tính ngày sinh thu cộ ki uể ngày tháng, hộ kh uẩ thườ trú ki ung ể chu i,ỗ thu cộ tính hình nhả ki uể hình nh,…ả
Mi nề giá trị (domain of values)
Thông thườ m ing ỗ thu cộ tính chỉ ch nọ l yấ giá trị trong m tộ t pậ con c aủ
ki uể dữ li uệ và t pậ h pợ con đó g iọ là mi nề giá trị c aủ thu cộ tính đó. Ch ngẳ
h nạ thu cộ tính NỮ có mi nề giá trị là {nam,n },ữ thu cộ tính màu da có mi nề giá trị là{da tr ng,ắ da vàng, da đen, da đ },ỏ thu cộ tính đi mể thi là các số thu cộ t pậ {0; 1; 2;…,10]
L uư ý r ngằ n uế không l uư ý đ nế ngữ nghĩa thì tên c aủ các thu cộ tính
thườ đng ượ ký hi uc ệ b ngằ các chữ cái in hoa đ uầ tiên trong b ngả chữ cái
la tinh: A,B,C,D,… Nh ngữ chữ cái in hoa X,Y,Z,W,… thườ dùng thay ngcho m tộ nhóm nhi uề thu cộ tính. Đôi khi còn dùng các ký hi uệ chữ cái v iớ các chỉ số A
1,A2,…,An để chỉ các thu cộ tính trong trườ h png ợ t ngổ quát hay mu nố đề c pậ đ nế số lượ các thu cng ộ tính. Tên thu cộ tính ph iả đượ c
đ tặ m tộ cách g iợ nh ,ớ không nên đ tặ tên thu cộ tính quá dài (vì như thế sẽ làm cho vi cệ vi tế các câu l nhệ truy v nấ trở nên v tấ vả h n),ơ nh ngư cũng không nên đ tặ tên thu cộ tính quá ng nắ (vì nó sẽ không cho th yấ ngữ nghĩa
c aủ thu cộ tính), đ cặ bi tệ không đ tặ trùng tên hai thu cộ tính mang ngữ nghĩa khác nhau thu cộ hai đ iố tượ khác nhau.ng
Trong nhi uề hệ qu nả trị cơ sở dữ li u,ệ ngườ ta thi ườ đ ang ư thêm vào
mi nề giá trị c aủ các thu cộ tính m tộ giá trị đ cặ bi tệ g iọ là giá trị r ngỗ
(NULL). Tuỳ theo ngữ c nhả mà giá trị này có thể đ cặ tr ngư cho m tộ giá trị không thể xác đ nhị đượ ho cc ặ m tộ giá trị ch aư đượ xác đ nhc ị ở vào th iờ
đi mể nh pậ tin nh ngư có thể đượ xác đ nhc ị vào m tộ th iờ đi mể khác
1.2. L ượ c đ quan h (Relation schema) ồ ệ
Ch ngẳ h nạ lượ đồ quan hệ Sinhviên v ic ớ các thu cộ tính như đã đượ li tc ệ
kê trong ví dụ 1.1 đượ vi tc ế như sau:
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH, MALOP)
Thườ thì khi thành l png ậ m tộ lượ đồ quan h ,c ệ ngườ thi ti ế kế g nắ cho nó
Trang 24m tộ ý nghĩa nh tấ đ nh,ị g iọ là tân từ c a ủ l ượ đồ quan hệ c ch ngẳ h nạ tân từ
c aủ lượ đồ quan hệ Sinhvien là: ”M ic ỗ sinh viên có m iỗ MASV duy nh t.ấ
M i ỗ MASV xác đ nhị các thu cộ tính còn l iạ c aủ sinh viên đó như HOTENSV,NU, NGAYSINH, NOISINH,TINH,MALOP”
Khi phát bi uể tân từ cho m tộ lượ đồ quan h ,c ệ ngườ thi ti ế kế c nầ ph iả
mô tả đ yầ đủ ý nghĩa để ngườ khác tránh hi ui ể nh m.ầ D aự vào tân từ này, ngườ ta xác đ nhi ị đượ t pc ậ khoá, siêu khoá c aủ lượ đồ quan hệ (sẽ c
đượ trình bày trong nh ngc ữ m cụ kế ti p). Nhi uế ề lượ đồ quan hệ cùng n mc ằ trong m tộ hệ th ngố thông tin đượ g ic ọ là m tộ l ượ đồ cơ sở dữ li u. c ệ Khái
ni mệ lượ đồ quan hệ ngc ứ v iớ khái ni mệ lo iạ th cự thể ở mô hình th cự thể
k tế h p.ợ
1.3. Quan h (Relation) ệ
Sự thể hi nệ c aủ lượ đồ quan hệ ở m tc ộ th iờ đi mể nào đó đượ g ic ọ là
quan hệ, rõ ràng là trên m tộ lượ đồ quan hệ có thể xác đ nhc ị nhi uề quan
h ệ Thườ ta dùng các ký hi ung ệ như R,S,Q để chỉ các lượ đồ quan h ,c ệ còn quan hệ thườ đng ượ dùng b ic ở các ký hi uệ là r, s,q,… Về tr cự quan thì quan hệ (hay b ngả quan h )ệ như là m tộ b ngả hai chi uề g mồ các dòng và các c t. ộ M tộ quan hệ có n thu cộ tính đượ g ic ọ là quan hệ n ngôi. Để chỉ quan
hệ r xác đ nhị trên lượ đồ quan hệ Q ta có thể vi tc ế r(Q)
1.4. B (Tuple) ộ
M iỗ bộ là nh ngữ thông tin về m tộ đ iố tượ thu cng ộ m tộ quan h ,ệ bộ cũng còn đượ g ic ọ là m uẫ tin. Thườ ngng ườ ta dùng các chữ cái thi ườ ng(như t,µ,…) để bi uể di nễ b ộ trong quan h ,ệ ch ngẳ h nạ để nói t là m tộ bộ
c aủ quan hệ r thì ta vi tế t €r
1.5. Siêu khoá Khoá chính
S là siêu khoá (super key) c aủ Q n uế v iớ r là quan hệ b tấ kỳ trên Q, t
1,t2 là hai bộ b tấ kỳ thu cộ r thì t
1.S ≠ t2.S.
M tộ lượ đồ quan hệ có thể có m tc ộ ho cặ nhi uề siêu khoá
Ch ngẳ h nạ lượ đ c ồ quan h ệ Sinhvien ở trên có các siêu khoá là:
{MASV,HOTENSV},{MASV,HOTENSV,NU},{MASV,HOTENSV,NU,
TINH},…
Siêu khoá không ch aứ m tộ siêu khoá nào khác đượ g ic ọ là khoá chỉ đ nh ị ,
trong trườ h png ợ lượ đồ quan hệ có nhi uc ề khoá chỉ đ nhị (hay khoá n i),ộ thì khoá đượ ch nc ọ để cài đ tặ g iọ là khoá chính (trong các ph nầ sau khoá chính đượ g ic ọ t tắ là khoá). Ch ngẳ h nạ v iớ lượ đồ quan hệ Sinhvien trên c
Trang 25{MASV}. Thườ các thu cng ộ tính khoá đượ g chc ạ dướ theo ki ui ể li nề nét
M tộ thu cộ tính đượ g ic ọ là thu cộ tính khoá ngo iạ n uế nó không là thu cộ tính khoá c aủ m tộ lượ đồ quan hệ này nh ngc ư l iạ là thu cộ tính khoá c aủ
m tộ lượ đồ quan hệ khác, ch ngc ẳ h nạ như MALOP là khoá ngo iạ c aủ lượ c
đồ quan hệ Sinhvien. Thườ các thu cng ộ tính khoá ngo iạ đượ g chc ạ dướ itheo ki uể không li nề nét
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, TINH, MALOP)
Lop(MALOP,TENLOP,MAKHOA)
Ý nghĩa th cự tế c aủ khoá là dùng để nh nậ di nệ m tộ bộ trong m tộ quan
h ,ệ nghĩa là, khi c nầ tìm m tộ bộ t nào đó, ta chỉ c nầ bi tế giá trị c aủ thành
ph nầ khoá c aủ t là đủ để dò tìm và hoàn toàn xác đ nhị đượ nó trong quan c
h ệ
Trong th cự tế đ iố v iớ các lo iạ th cự thể t nồ t iạ khách quan (ví d :ụ Sinh viên, Gi ngả viên, Nhân viên, Hàng hoá,…) ngườ thi ti ế kế cơ sở dữ li uệ
thườ gán thêm cho các lng ượ đồ quan hệ này m tc ộ thu cộ tính giả g iọ là mã
số để làm khoá (ví d :ụ mã số sinh viên, mã số gi ngả viên, mã số nhân viên,
mã số hàng hoá,…). Trong khi đó các lượ đồ quan hệ bi uc ể di nễ cho sự
tr uừ tượ hoá thng ườ có khoá là m tng ộ tổ h pợ c aủ hai hay nhi uề thu cộ tính
c aủ nó
M tộ số hệ qu nả trị cơ sở dữ li uệ hi nệ nay có tự đ ngộ ki mể tra tính duy
nh tấ trên khoá chính. T cứ là n uế thêm m tộ bộ m iớ q2 có giá trị khoá chính trùng v iớ giá trị khoá chính c aủ m tộ bộ q1 nào đó đã có trong quan
hệ thì hệ th ngố sẽ báo l iỗ và yêu c uầ nh pậ l iạ m tộ giá trị khác
Ngườ ta cũng quy i ướ r ng:c ằ
Trong m tộ bộ c aủ quan hệ các thu cộ tính khoá không ch aứ giá trị r ng.ỗ
Không đượ phép s ac ử đ iổ giá trị thu cộ tính khoá c aủ m tộ bộ q. N uế
mu nố s aử đ iổ giá trị thu cộ tính khoá c aủ m tộ bộ q, ngườ sử d ngi ụ ph iả huỷ
bỏ bộ q và sau đó thêm m tộ bộ q’ v iớ giá trị khoá đã đượ s ac ử đ i.ổ
2. Chuy n t mô hình th c th k t h p sang mô hình d li u quan hể ừ ừ ể ế ợ ữ ệ ệ
Sau đây là m tộ số quy t cắ đượ sử d ngc ụ trong vi cệ chuy nể đ iổ mô hình
th cự thể k tế h pợ sang mô hình dữ li uệ quan h ệ
Quy t cắ 1:
Chuy nể đ iổ m iỗ lo iạ th cự thể thành m tộ lượ đồ quan h ,c ệ các thu cộ tính
c aủ lo iạ th cự thể thành các thu cộ tính c aủ lượ đồ quan h ,c ệ thu cộ tính khoá c aủ lo iạ th cự thể là thu cộ tính khoá c aủ lượ đồ quan h c ệ
Trang 26Ch ngẳ h nạ lo iạ th cự thể Sinhvien ở ví dụ 1.2 khi áp d ngụ quy t cắ 1 thì sẽ
đượ chuy nc ể thành lượ đồ quan hệ Sinhvien như sau:c
và B
Ch ngẳ h nạ m iố k tế h pợ Phancong gi aữ ba lo iạ th cự thể Giangvien, Monhoc
và Lop đượ chuy nc ể thành lượ đồ quan hệ Phancong và có t pc ậ khoá là {MAGV,MAMH,MALOP} như sau:
Trang 27Phancong(MALOP,MAMH,MAGV)
3. Các phép toán đ i s trên các quan hạ ố ệ
3.1. Phép h p (Union) ợ
Ta nói hai quan hệ r
1 và r2 là tươ thích n ung ế chúng đượ đ nhc ị nghĩa trên cùng m tộ lượ đồ quan h c ệ
Cho hai quan hệ tươ thích rng
Trang 28Cho lượ đồ quan hệ Q(Ac
1,A2, ,An ). r1 và r2 là hai quan hệ tươ thích ngtrên Q
Giao c aủ hai quan hệ r
1 và r2 ký hi uệ là r1 * r2 là m tộ quan hệ trên Q g mồ các ph nầ tử v aừ thu cộ r
Cho hai quan hệ tươ thích rng
1 và r2 có t pậ thu cộ tính Q(A1,A2, ,An ).
Trang 303.6. Phép chi u( Projection) ế
Cho lượ đồ quan hệ Q(Ac
1,A2, ,An), r là quan hệ trên Q và X Q
+.Phép chi uế c aủ r lên t pậ thu cộ tính X, ký hi uệ là r[X] (ho cặ r.X) sẽ t oạ thành lượ đồ quan hệ r’, trong đó t pc ậ thu cộ tính c aủ r’ chính là X và quan
hệ r’ đượ trích từ r b ngc ằ cách chỉ l yấ các thu cộ tính có trong X
Phép chi uế chính là phép rút trích dữ li uệ theo c t.ộ Ch ngẳ h nạ v iớ r
1 ở
ví dụ 2.2 thì khi đó ta có quan hệ con c aủ r
1 chi uế lên X={A,C} là: r1[X]
3.7. Phép ch n (Selection) ọ
Cho lượ đồ quan hệ Q(Ac
1,A2, ,An), r là m tộ quan hệ trên lượ đồ quan c
hệ Q. X là m tộ t pậ con c aủ Q+ và E là m tộ m nhệ đề logic đượ phát bi uc ể trên t pậ X. Ph nầ tử t r thoả mãn đi uề ki nệ E ký hi uệ là t(E). Phép ch nọ từ quan hệ r theo đi uề ki nệ E (ký hi uệ là r : E )sẽ t oạ thành m tộ quan hệ
m iớ ký hi uệ là r(E), trong đó r(E) = {t: t r và t(E)}
Phép ch nọ chính là phép rút trích dữ li uệ theo dòng. Ch ngẳ h nạ v iớ r
2 ở ví
dụ 2.3 và đi uề ki nệ E là: “F >= 6” thì k tế quả r
2(E) hay r2: “F >= 6” có n iộ
Trang 313.8. Phép k t θ ế
Cho hai lượ đồ quan h c ệ Q
1 và Q2 như sau Q1(A1,A2, ,An)Q
2(B1,B2, ,Bm)
r và s l nầ lượ là hai quan hệ trên Qt
1 và Q2.A
i và Bj l nầ lượ là thu ct ộ tính c aủ Q1 , Q2 sao cho MGT(AI)= MGT(BJ).
12Ai t12.Bj }
A
i là thu cộ tính B, Bj là thu cộ tính F và là phép so sánh “>=”. Ta đượ k tc ế quả là quan hệ sau:
Trang 323.9. Phép k t t nhiên ế ự
N uế đượ sử d ngc ụ trong phép k tế trên là phép so sánh b ngằ (=) thì g iọ là
phép k t ế b ng ằ H nơ n aữ n uế A
I Bj thì phép k tế b ngằ này đượ g ic ọ là
phép k t ế tự nhiên. Phép k tế tự nhiên là phép k tế thườ dùng nh tng ấ trong
2. L pậ danh sách sinh viên nữ và có mã khoa là “CNTT”, danh sách c nầ MASV, HOTENSV
3. L pậ b ngả đi mể thi l nầ 1 c aủ t tấ cả các môn cho sinh viên l pớ CDTH2A, danh sách c nầ MASV, HOTENSV, TENMH, DIEMTHI
4. L pậ phi uế đi mể thi l nầ 1 các môn cho sinh viên có MASV=”00CDTH189”. danh sách c nầ MAMH,TENMH, DONVIHT, DIEMTHI
Gi i:ả
1. Sinhvien: MALOP=”CDTH2A” [MASV,HOTENSV]
MALOP
2. (Sinhvien|><| Lop: NU and MAKHOA=”CNTT”) [MASV,HOTENSV]
Trang 33Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA)
Ketqua(MASV, MAMH, LANTHI, DIEMTHI)
Phancong(MALOP,MAMH,MAGV)
Th cự hi nệ các yêu c uầ sau b ngằ ngôn ngữ đ iạ số quan h :ệ
a. L pậ danh sách nh ngữ sinh viên có hộ kh uẩ thườ trú ở t nhng ỉ “LONG AN”, danh sách c nầ các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP
b. L pậ danh sách các sinh viên c aủ l pớ có MALOP là CDTH2A, danh sách c nầ các thông tin: MASV, HOTENSV, NGAYSINH, TINH
c. L pậ danh sách các gi ngả viên có c pấ h cọ vị là THAC SY c aủ khoa có MAKHOA là “CNTT”, danh sách c n:ầ MAGV,HOTENGV,
CHUYENNGANH
Trang 34d. L pậ b ngả đi mể thi l nầ 1 môn h cọ “869” cho t tấ cả sinh viên thu cộ hai
Trang 35Chương 3: Ngôn ng truy v n d li uữ ấ ữ ệ
Mã chương: MH14C03
Gi i thi u: ớ ệ Trong chương này chúng ta s nghiên c u v l nh truy v n d ẽ ứ ề ệ ấ ữ
li u SELECT FROM WHERE GROUP BY HAVING ORDER ệBY
M iỗ hệ qu nả trị CSDL đ uề ph iả có ngôn ngữ giao ti pế gi aữ ngườ sử i
d ngụ v iớ cơ sở dữ li u.ệ Ngôn ngữ giao ti pế CSDL g mồ các lo iạ sau:
khai báo c uấ trúc các b ngả c aủ CSDL, khai báo các m iố liên hệ c aủ dữ
v nấ các thông tin c nầ thi tế trong CSDL
Ngôn ng ữ qu n ả lý dữ li u ệ (Data Control Language DCL): Cho phép nh ngữ
ngườ qu ni ả trị hệ th ngố thay đ iổ c uấ trúc c aủ các b ngả dữ li u,ệ khai báo
b oả m tậ thông tin và c pấ quy nề khai thác CSDL cho ngườ sử d ng.i ụ
Nh ngữ năm 19751976, IBM l nầ đ uầ tiên đ aư ra hệ qu nả trị CSDL ki uể quan hệ mang tên SYSTEM–R v iớ ngôn ngữ giao ti pế CSDL là SEQUEL (Structured English Query Language). Năm 1976 ngôn ngữ SEQUEL đượ c
c iả ti nế thành SEQUEL2, kho ngả năm 19781979 SEQUEL2 đượ c ic ả ti nế
và đ iổ tên thành ngôn ngữ truy v nấ có c uấ trúc (Structured Query Language). Cu iố năm 1979 hệ qu nả trị CSDL đượ c ic ả ti nế thành SYSTEMR*. Năm 1986 vi nệ tiêu chu nẩ qu cố gia Mỹ (American National Standards Institute –ANSI) đã công nh nậ và chu nẩ hoá ngôn ngữ SQL và sau đó tổ ch cứ tiêu chu nẩ thế gi iớ (International Standards Organization
Trang 36ISO) cũng đã công nhân ngôn ngữ này. Đó là chu nẩ SQL86. t iớ này SQL
đã qua 3 l nầ chu nẩ hoá (1989,1992,1996) đ mể ở r ngộ các phép toán và tăng
cườ khả năng b ong ả m tậ và tính toàn v nẹ dữ li u.ệ
Trong chươ này chúng ta chỉ nghiên c ung ứ về ngôn ngữ SQL
Ngôn ngữ truy v nấ SQL có t pậ l nhệ khá phong phú để thao tác trên cơ sở
dữ li u.ệ Ch ngẳ h nạ l nhệ create để t oạ các b ngả quan h ,ệ l nhệ update để
c pậ nh tậ dữ li u,ệ l nhệ delete để xoá dữ li u,ệ l nhệ insert để thêm dữ
li u,…ệ Trong chươ này, chúng tôi chỉ trình bày v ing ớ b nạ đ cọ câu l nhệ quan tr ngọ nh tấ c aủ SQL đó là câu l nhệ h iỏ tìm ki mế dữ li uệ SELECT.
K tế quả c aủ l nhệ select là m tộ quan h ,ệ quan hệ k tế quả này có thể k tế
xu tấ ra màn hình, máy in, ho cặ là trên các thi tế bị l uư trữ thông tin khác.
Để đ nơ gi nả trong cách trình bày, ta xem quan hệ để th cự hi nệ câu truy
v nấ là quan hệ ngu nồ và quan hệ k tế quả c aủ truy v nấ là quan hệ đích
M iỗ câu l nhệ SQL có thể đượ vi tc ế trên nhi uề dòng và k tế thúc l nhệ b iở
d uấ ch mấ ph yẩ (;), tuy nhiên từ khoá, tên hàm, tên thu cộ tính, tên b ng,ả tên
đ iố tượ thì không đng ượ phép vi tc ế tách xu ngố hàng. Trong v nậ d ngụ th cự
t ,ế từ khoá, tên thu cộ tính, tên b ng,ả tên đ iố tượ đng ượ vi tc ế in hoa hay chữ thườ là như nhau.ng
Cú pháp t ngổ quát c aủ câu l nhệ select như sau:
Select distinct /*/danh sách thu cộ tính/ <bi uể th c>, ứ
from <danh sách các quan h >ệ
where <bi uể th cứ đi uề ki n>ệ
group by <danh sách thu cộ tính> having <đi uề ki nệ nhóm>order by <danh sách các thu cộ tính [desc]>
Trong đó: <bi uể th c>ứ (expression) là sự k tế h pợ m tộ cách h pợ lệ gi aữ các thu cộ tính, các toán tử và các hàm. Sau đây sẽ là các toán tử và hàm thông
d ngụ nh t.ấ (c nầ chú ý r ngằ cách sử d ngụ các toán tử và các hàm này còn tuỳ thu cộ vào câu l nhệ SELECT c aủ ngôn ngữ đượ sử d ng).c ụ
Trang 37year(bi uể th cứ ngày): Trả về năm c aủ bi uể th cứ ngày
len(bi uể th cứ chu i): ỗ Trả về chi uề dài c aủ chu iỗ
Các hàm tính toán theo nhóm
sum <thu cộ tính>tính t ngổ giá trị c aủ các bộ theo thu cộ tính đã chỉ ra
max<thu cộ tính>:cho bi tế giá trị l nớ nh tấ c aủ các bộ theo thu cộ tính đã ch ỉra
min<thu cộ tính>:cho bi tế giá trị nhỏ nh tấ c aủ các bộ theo thu cộ tính đã ch ỉra
avg<thu cộ tính>:Cho bi tế giá trị trung bình c aủ các bộ theo thu cộ tính đã ch ỉra
Chỉ đ mế nh ngữ bộ mà giá trị c aủ thu cộ tính là khác NULL. h nơ n a,ữ
nh ngữ bộ mà giá trị trùng nhau trên thu cộ tính chỉ đượ đ mc ế là m tộ (đ iạ
di nệ cho cả nhóm)
Sau đây ta s l nẽ ầ lượ tìm hi ut ể kỹ h nơ các m nhệ đ ề c aủ câu l nhệSELECT
Để minh h aọ cho các ví dụ trong chươ này, chúng ta sẽ dùng l ing ạ lược
đồ cơ sở dữ li uệ đã đượ đề c pc ậ trong chươ 2.ng
Trang 382. Tìm thông tin t các c t c a b ng – m nh đ Select ừ ộ ủ ả ệ ề
select distinct /*/danh sách thu cộ tính/ <bi uể th c>, ứ from
M nhệ đề from:
Nh ngữ quan hệ liên quan đ nế câu truy v nấ đượ li tc ệ kê sau m nhệ đề from, các quan hệ này cách nhau b iở d uấ ph y,ẩ thứ tự c aủ các quan hệ
đượ chỉ ra ở đây là không quan tr ng.c ọ
C nầ chú ý r ngằ khi m nhệ đề From chỉ ra từ hai quan hệ trở lên, n uế có
m tộ thu cộ tính ở m nhệ đề select là thu cộ tính c aủ nhi uề h nơ m tộ quan hệ thì c nầ ph iả chỉ rõ thu cộ tính đó thu cộ về quan hệ nào theo cú pháp
tênquanh tênthu ctính ệ ộ (sinh viên thườ m cng ắ l iỗ này khi th cự hành v iớ câu l nhệ truy v nấ SQL)
(Do sinh viên khi h cọ môn này ch aư h cọ SQL server, nên n uế khi th cự hành bài t pậ chươ này v ing ớ Access thì cu iố m iỗ dòng không có d uấ
Khi c nầ l yấ thông tin về t tấ cả các c tộ c aủ b ng,ả chúng ta có thể sử d ngụ
d uấ sao (*) thay cho vi cệ li tệ kê các tên c tộ c aủ b ng.ả N uế áp d ngụ cách
vi tế này thì câu l nhệ trên tươ đng ươ v ing ớ câu l nhệ sau:
Trang 39L pậ danh sách bao g mồ các thông tin về gi ngả viên như mã số gi ngả viên, họ và tên gi ngả viên, h cọ v ,ị chuyên ngành.
SELECT MAGV,HOTENGV,HOCVI, CHUYENNGANH
FROM giangvien;
Câu l nhệ tìm ki mế thông tin từ các c tộ c aủ b ngả ở trên là cài đ tặ c aủ
MAGV,HOTENGV,HOCVI,CHUYENNGANH c aủ quan hệ Giangvien
N uế chúng ta mu nố đ tặ tên khác cho tên c aủ các c tộ c aủ b ngả (còn g iọ là
bí danh ALIAS), vi cệ này đượ th cc ự hi nệ b ngằ cách thêm từ khóa AS và theo sau là m tộ tên m i.ớ N uế tên có ch aứ các ký tự đ cặ bi tệ và/ho cặ kho ngả tr ngắ thì vi tế tên đó trong c pặ d uấ ngo cặ vuông ( [ ] )
Ch ngẳ h nạ ví dụ 3.2 có thể vi tế l iạ là:
SELECT MAGV AS [MÃ SỐ GI NGẢ VIÊN] ,HOTENGV AS [HỌ VÀ
TÊN] HOCVI [TRÌNH Đ ]Ộ CHUYENNGANH AS [ CHUYÊN NGÀNH]FROM Giangvien;
Câu l nhệ SELECT không chỉ th cự hi nệ vi cệ trích thông tin từ các c tộ đ nơ lẽ
c aủ b ngả mà còn có thể th cự hi nệ các tính toán theo công th cứ hay bi uể
th cứ b tấ kỳ d aự trên giá trị c aủ các c tộ trên t ngừ b nả ghi c aủ b ng.ả
Từ khóa DISTINCT nh mằ lo iạ bỏ b tớ các bộ trùng nhau trong b ngả k tế quả c aủ l nhệ truy v nấ (chỉ giữ l iạ m tộ bộ đ iạ di nệ cho các bộ gi ngố nhau)
Ví dụ 3.3:
Hãy cho bi tế các gi ngả viên c aủ trườ thu cng ộ nh ngữ chuyên ngành nào?
WHERE <bi uể th cứ đi uề ki n>ệ
Trong đó <bi uể th cứ đi uề ki n>ệ có giá trị là ho cặ đúng (true) ho cặ sai (false). Đây là sự cài đ tặ c aủ phép ch nọ trong ngôn ngữ đ iạ số quan h ệ
N uế đi uề ki nệ này chỉ liên quan đ nế m tộ quan hệ thì g iọ là đi u ề ki n ệ
ch n ọ , n uế đi uề ki nệ liên quan đ nế từ hai quan hệ trở lên thì g iọ là đi u ề ki n ệ
k t ế Các đi uề ki nệ ch nọ và đi uề ki nệ k tế có thể ph iố h pợ v iớ nhau b iở
Trang 40các toán tử logic (and,or,not) để t oạ nên nh ngữ bi uể th cứ logic ph cứ t pạ
h n.ơ C nầ chú ý r ngằ thứ tự c aủ các đi uề ki nệ ở đây là quan tr ng:ọ N uế có thể thì nên th cự hi nệ đi u ề ki n ệ ch n ọ trướ khi th cc ự hi nệ đi u ề ki n ệ k t ế
(đây là v nấ đề t iố uư hoá câu truy v n,ấ chúng tôi không đi sâu về v nấ đề này[3])
SELECT masv,diemthi FROM ketqua
WHERE diemthi between 6 and 8 and mamh=”csdl”
Toán tử so sánh tươ đ ing ố : like
M uẫ so sánh trong phép toán like là m tộ giá trị ki uể text, đó là m tộ dãy ký tự
b tấ k ,ỳ trong đó có hai ký tự có ý nghĩa đ cặ bi tệ sau đây: