Sau đó thiết kế cấu trúc design các bảng sau Bảng SINHVIEN lưu thông tin về các sinh viên có cấu trúc như sau: Bảng MONHOC lưu thông tin về các môn học có cấu trúc như sau: TÊN TRƯỜNG KI
Trang 1BÀI TẬP THỰC HÀNH TẠO LẬP CSDL (SỐ 1) – H1.
I Mục đích, yêu cầu, kỹ năng - H2.
II Nội dung thực hành
Bài 1 H3 QL điểm
TÊN TRƯỜNG KIỂU
DỮ LIỆU
KÍCH THƯỚC
RÀNG BUỘC / MẪU ĐẦU NHẬP
GIẢI THÍCH
MASV Text 6 2 kí tự đầu là SV, 4 kí tự sau
là chữ số
Mã của sinh viên Mỗi sinh viên có một mã duy nhất
cả phần tên đệm
trường hợp sinh viên có tên kép như Tuấn Anh thì từ Tuấn được đưa vào phần họ
GIOITINH Text 3 Chỉ có 2 giá trị:
Nam, Nữ
Mô tả giới tính của sinh viên
lạc với sinh viên
viên
DOITUONG Text Bao gồm một trong các ký
hiệu sau:
TBLS: con thương binh, liệt
sĩ, con gia đình chính sách
DTVC: là sinh viên ở vùng cao hoặc là người dân tộc thiểu số
GDKK: con gia đình có hoàn cảnh khó khăn (hộ nghèo, mồ côi…)
KHAC: không thuộc các đối tượng trên
Phân loại sinh viên theo đối tượng Giá trị mặc định của trường này là KHAC
Trang 2Mở Access, tạo CSDL mới và lưu thành file QLD.MDB vào thư mục vừa tạo ở trên Sau đó thiết kế cấu trúc (design) các bảng sau
Bảng SINHVIEN lưu thông tin về các sinh viên có cấu trúc như sau:
Bảng MONHOC lưu thông tin về các môn học có cấu trúc như sau:
TÊN
TRƯỜNG
KIỂU DỮ LIỆU
KÍCH THƯỚC
RÀNG BUỘC /
NHẬP
GIẢI THÍCH
2 kí tự sau là số
Mã kí hiệu của môn học, mỗi môn học có một mã duy nhất
DVHT Number 2 Lớn hơn 0 Số đơn vị học trình
của môn học
HOCKY Number 1 Có giá trị từ 1 đến
8 Học kì mà môn họcđó được sắp xếp để
học
Trang 3Bảng KETQUA lưu thông tin về điểm kết quả học tập của sinh viên có cấu trúc như sau:
TÊN TRƯỜNG KIỂU DỮ
LIỆU
KÍCH THƯ ỚC
RÀNG BUỘC / MẪU ĐẦU NHẬP
GIẢI THÍCH
SINHVIEN
MONHOC DIEM Number 2 Là số nguyên, có giá trị từ 0
đến 10
Điểm kết quả học tập của sinh viên (Là điểm thi cao nhất trong tất cả các lần thi)
KQHOC Text 1 Có giá trị là một trong các
kí tự sau:
H: sinh viên đang học môn này và chưa có kết quả
Q: sinh viên đã học xong môn này và đã có kết quả đạt yêu cầu
C: sinh viên chưa học môn này bao giờ
L: sinh viên đã học môn này nhưng có kết quả không đạt yêu cầu nên sẽ phải học lại
Giá trị mặc định là H
Trang 4Hướng dẫn
Thiết kế bảng SINHVIEN
Sau khi chọn chức năng New Table, chuyển sang Design, ta thực hiện thiết kế cấu
trúc của bảng SINHVIEN như sau:
Trường MASV: ta gõ tên trường là MASV trong cột Field Name, chọn Data Type là Text Sau đó chuyển xuống bảng thuộc tính (tab General), thực hiện các
thiết lập:
Thuộc tính Giá trị Giải thích
Input Mask LL0000 Vì yêu cầu là mã sinh viên có dạng 2 kí
tự đầu là chữ, 4 kí tự sau là chữ số
viên Là thông tin sẽ hiện ở làm chú thích chocột Sau khi tạo xong, ta thiết lập MASV là khoá chính bằng cách chọn tên trường và bấm biểu tượng khoá trên thanh công cụ
Trường HO, TEN, NGAYSINH, DIENTHOAI, QUEQUAN: ta thực hiện việc đặt tên trường và chọn kiểu dữ liệu theo đúng yêu cầu
Trường GIOITINH: do yêu cầu là chỉ có 2 giá trị (Nam, Nữ) nên sau khi đặt tên
trường, chọn kiểu dữ liệu và kích thước, ta chọn tab Look Up rồi đặt Display Control là Combo Box Sau đó thiết lập như sau:
Row Source Type Value List Kiểu chọn trực tiếp trong
danh sách các giá trị Row Source Nam;Nữ Chỉ có 2 giá trị để chọn là
Nam và Nữ
Làm tương tự với trường DOITUONG với các thiết lập như sau:
Default Value KHÁC Giá trị mặc định của
trường
Display Control Combo Box
Row Source Type Value List Kiểu chọn trực tiếp trong
danh sách các giá trị Row Source TBLS;DTVC;GDKK;KHÁC Các giá trị được chọn
Trang 5Thiết kế bảng MONHOC
Trường MAMH: ta làm tương tự như các trường trong bảng SINHVIEN Chú ý
chọn Input Mask là LL00 và thiết lập MAMH làm khoá chính cho bảng.
Trường TENMH thiết kế như các trường khác, không có gì đặc biệt
Trường DVHT có điều kiện ràng buộc là phải lớn hơn 0 nên sau khi đặt tên
trường, chọn kiểu dữ liệu là Number, ta chuyển sang tab General và thiết lập:
này (thường số đơn vị học trình là 4)
Validation Rule [DVHT]>0 Vì yêu cầu DVHT phải lớn
hơn 0
Validation Text Số đơn vị học trình phải
lớn hơn 0
Là câu thông báo khi ràng buộc bị vi phạm để người nhập dữ liệu biết
Trường HOCKY là các số từ 1 đến 8 nên sau khi đặt tên trường và thiết lập kiểu
dữ liệu thì ta chuyển sang tab Look Up và thiết lập các thuộc tính
Display Control Combo Box Giá trị của trường được chọn
trong một danh sách các giá trị cho trước
Row Source Type Value List Danh sách giá trị được cung
cấp khi thiết kế Row Source 1;2;3;4;5;6;7;8 Liệt kê các giá trị được chọn
Trang 6Thiết kế bảng KETQUA
Thiết kế 2 trường MASV, MAMH tương tự như trong bảng SINHVIEN và MONHOC Thiết lập cặp 2 trường MASV, MAMH làm khoá chính cho bảng.
Để thiết lập ràng buộc MASV phải có trong bảng SINHVIEN ta chọn tab Look
Up và thiết lập các thuộc tính như sau:
Display Control Combo Box Giá trị của trường được chọn
trong một danh sách các giá trị cho trước
Row Source Type Table/Query Danh sách giá trị được lấy từ
một bảng hoặc một truy vấn Row Source SINHVIEN Các giá trị được chọn lấy từ
bảng SINHVIEN Tương tự ta thiết kế ràng buộc cho trường MAMH:
Display Control Combo Box Giá trị của trường được chọn
trong một danh sách các giá trị cho trước
Row Source Type Table/Query Danh sách giá trị được lấy từ
một bảng hoặc một truy vấn Row Source MONHOC Các giá trị được chọn lấy từ
bảng MONHOC Trường DIEM có điều kiện ràng buộc là số nguyên từ 0 đến 10 nên sau khi đặt tên
trường, chọn kiểu dữ liệu là Number (Long Integer), ta chuyển sang tab General
và thiết lập:
này
Validation Rule [DIEM]>=0 and
[DIEM]<=10 Điểm từ 0 đến 10 Validation Text Điểm phải nằm trong
khoảng từ 0 đến 10 Là câu thông báo khi ràngbuộc bị vi phạm để người
nhập dữ liệu biết
Trang 7Trường KQHOC được thiết lập các thuộc tính như sau:
này
Display Control Combo Box Giá trị của trường được chọn
trong một danh sách các giá trị cho trước
Row Source Type Value List Danh sách giá trị được cung
cấp khi thiết kế Row Source H;Q;C;L Liệt kê các giá trị được chọn
Trang 8Sau khi thiết kế các bảng xong, ta đặt liên kết giữa các bảng như sau:
Để thiết lập quan hệ như vậy, đầu tiên ta bấm nút chọn Relationship Sau đó Add
cả 3 bảng vào Để thiết lập quan hệ giữa 2 bảng MONHOC và KETQUA, ta bấm chuột vào trường MAMH của bảng MONHOC và kéo đến trường MAMH của bảng KETQUA, sau đó trong hộp thoại hiện ra ta kích chọn các check box:
Bấm nút Create để thiết lập quan hệ Sau đó làm tương tự với trường MAMH của
bảng SINHVIEN và trường MAMH của bảng KETQUA
Trang 9Bài 2 H3 QL nhân sự
Bài 3 H3 QL bán hàng.
Bài 4 H3 QL thư viện (không có mô tả cấu trúc bảng cụ thể). III Một số lưu ý
Trang 10BÀI TẬP THỰC HÀNH TRUY VẤN ĐƠN GIẢN (SỐ 2)
I Mục đích, yêu cầu, kỹ năng - H2.
II Nội dung thực hành
Bài 1 H3 QL điểm
Mở CSDL QLD.MDB đã tạo lập và xây dựng các truy vấn sau:
1 Cho biết họ tên và các thông tin khác về sinh viên có mã số SV0324.
2 Đưa ra danh sách các sinh viên có quê ở Hà nội
3 Đưa ra danh sách các sinh viên không có số điện thoại liên lạc.
4 Đưa ra danh sách các sinh viên được hưởng chính sách xã hội (con thương binh, liệt sĩ, người dân tộc vùng cao, gia đình khó khăn) Danh sách được sắp xếp tăng dần theo tên
5 Lập danh sách các môn học được học trong học kì 4
6 Lập danh sách các môn học được học trong năm thứ 2 (kì 3 và kì 4)
7 Đưa ra các sinh viên học môn “HỆ QUẢN TRỊ CSDL” có điểm kết quả học tập từ 8 trở lên Danh sách được sắp xếp giảm dần theo kết quả học tập
8 Lập danh sách kết quả học tập của sinh viên về một môn học nào đó nhập
từ bàn phím (truy vấn có tham số)
9 Lập danh sách các sinh viên đang học môn “TOÁN RỜI RẠC”
10 Lập danh sách các sinh viên phải học lại môn “HỆ QUẢN TRỊ CSDL”
Hướng dẫn
Câu 1 Cho biết họ tên và các thông tin khác về sinh viên có mã số SV0324?
Họ tên và các thông tin khác của sinh viên của sinh viên có mã số này đều nằm trong bảng SINHVIEN Do đó ta sẽ xây dựng một truy vấn trên bảng SINHVIEN
với điều kiện là mã sinh viên bằng SV0324.
Đầu tiên ta tạo truy vấn mới bằng thao tác bấm link Create query in Design View:
Trang 11Sau đó chọn bảng SINHVIEN đề xây dựng truy vấn:
Tiếp theo ta chọn các thông tin cần hiển thị và điều kiện truy vấn:
Lưu truy vấn với tên cau1 và bấm biểu tượng thực thi truy vấn và xem kết quả:
Trang 12Bấm vào biểu tượng chuyển đổi mode của truy vấn và chọn mode SQL View:
Ta sẽ quan sát câu lệnh SQL tương ứng của truy vấn trên như sau:
Kể từ nay trở đi, ta có thể viết truy vấn 2 kiểu: kiểu QBE trong Design view và kiểu SQL trong SQL view Trong một số trường hợp viết theo kiểu này đơn giản hơn viết theo kiểu kia, mặc dù 2 cách viết là tương đương và cho cùng một kết quả
Câu 2 Đưa ra danh sách các sinh viên có quê ở Hà Nội.
Tương tự như câu 1, ta thiết lập truy vấn với điều kiện cho trường QUEQUAN là
Hà Nội Ta có thể thiết kế trong Design view như sau:
Trang 13Hoặc viết câu lệnh trong SQL View:
SELECT * FROM SINHVIEN WHERE QUEQUAN="Hà Nội";
Chú ý là câu lệnh SQL phải có chấm phẩy ở cuối, và từ Hà Nội phải đặt trong cặp dấu “”
Câu 3 Đưa ra danh sách các sinh viên không có số điện thoại liên lạc.
Sinh viên không số điện thoại, tức là trường DIENTHOAI là rỗng Ta sẽ thiết lập
truy vấn và sử dụng điều kiện là Is Null với trường DIENTHOAI.
Ta cũng có thể viết trực tiếp câu lệnh SQL trong SQL View:
SELECT * FROM SINHVIEN WHERE DIENTHOAI Is Null;
Câu 4 Đưa ra danh sách các sinh viên được hưởng chính sách xã hội (con
thương binh, liệt sĩ, người dân tộc vùng cao, gia đình khó khăn) Danh sách được sắp xếp tăng dần theo tên.
Ta sẽ xây dựng truy vấn mà trường DOITUONG không phải là “KHÁC” Để sắp xếp tăng dần theo tên ta chọn các trường được đưa ra là HO, TEN, DOITUONG
và chọn Sort với TEN là Ascending.
Trang 14Nếu viết truy vấn bằng SQL thì ta sẽ dùng cấu trúc ORDER BY TEN để sắp xếp
tăng dần theo tên Câu lệnh SQL như sau:
SELECT * FROM SINHVIEN WHERE DOITUONG<>"KHÁC" ORDER BY TEN;
Chú ý:
1 Toán tử so sánh khác (không bằng) trong Access viết là <>
2 Trong Design view để hiển tất cả các trường, trong đó có một số trường cần sắp xếp thì ta phải chọn từng trường và chọn kiểu sort cho từng trường Còn
viết bằng SQL thì chỉ cần viết SELECT * rồi liệt kê các trường cần sort trong phần ORDER BY của câu lệnh.
Câu 5 Lập danh sách các môn học được học trong học kì 4.
Dễ thấy là ta sẽ truy vấn trên bảng MONHOC với điều kiện HOCKY=4
Thiết kế trong Design View như sau:
Nếu viết bằng SQL thì câu lệnh như sau:
SELECT * FROM MONHOC WHERE HOCKY=4;
Câu 6 Lập danh sách các môn học được học trong năm thứ 2 (kì 3 và kì 4).
Với truy vấn này ta làm tương tự câu 5, nhưng vì có 2 điều kiện nên thiết kế trong Design view như sau:
Trang 15Câu lệnh SQL tương đương là:
SELECT * FROM MONHOC WHERE HOCKY=3 OR HOCKY=4;
Câu 7 Đưa ra các sinh viên học môn “HỆ QUẢN TRỊ CSDL” có điểm kết
quả học tập từ 8 trở lên Danh sách được sắp xếp giảm dần theo kết quả học tập.
Với truy vấn này ta thấy rằng phải lấy dữ liệu ở cả 3 bảng: SINHVIEN (để có thông tin về tên sinh viên), MONHOC (để có tên môn học), KETQUA (để có kết quả học tập) Trường DIEM của bảng KETQUA phải đặt điều kiện là >= 8 và
được chọn Sort là Descending (giảm dần).
Câu lệnh SQL tương đương là:
SELECT HO, TEN, TENMH, DIEM
FROM SINHVIEN, MONHOC, KETQUA
WHERE TENMH="HỆ QUẢN TRỊ CSDL" AND DIEM>=8
Trang 16AND MONHOC.MAMH = KETQUA.MAMH AND SINHVIEN.MASV =
KETQUA.MASV
ORDER BY DIEM DESC;
Chú ý:
1 Nếu khi Add 3 bảng vào truy vấn mà Access không tự động tạo liên kết:
thì cần thiết kế lại Relationship như sau:
2 Lệnh SQL tương đương còn có thể viết dạng sau, sử dụng INNER JOIN để liên kết các bảng:
SELECT HO, TEN, TENMH, DIEM
FROM SINHVIEN INNER JOIN (MONHOC INNER JOIN KETQUA ON
MONHOC.MAMH = KETQUA.MAMH) ON SINHVIEN.MASV = KETQUA.MASV
WHERE TENMH="HỆ QUẢN TRỊ CSDL" AND DIEM>=8
ORDER BY DIEM DESC;
Câu 8 Lập danh sách kết quả học tập của sinh viên về một môn học nào đó
nhập từ bàn phím (truy vấn có tham số).
Với truy vấn có tham số này, ta sẽ đặt tham số trong phần điều kiện của trường TENMH (để người sử dụng nhập tên môn học cần xem kết quả) Các chi tiết khác (các bảng, các trường cần đưa ra thì) tương tự như câu 7
Trang 17Chú ý:
1 Khi thực thi truy vấn này, Access sẽ hiện ra một cửa sổ để ta nhập giá trị
cho tham số ten_mon_hoc, ta nhập vào đó tên môn học cần xem kết quả:
2 Tên tham số có dấu cách (và cả dấu tiếng Việt) nên ta phải đặt trong cặp dấu ngoặc [ ] Muốn Access hiển thị đúng cả dấu tiếng Việt thì ta phải chọn bảng mã font tiếng Việt là Unicode
Câu 9 Lập danh sách các sinh viên đang học môn “TOÁN RỜI RẠC”.
Trang 18Câu 10 Lập danh sách các sinh viên phải học lại môn “HỆ QUẢN TRỊ
CSDL”