Ví dụ 10: Giả sử có truy vấn sau: Dựa vào bảng SinhVien, tính số lượng sinh viên và tổng học bổng của từng khoa. Kết quả như ở bảng dưới:
Cách thức thực hiện như trên được gọi là phép nhóm.
MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH
5202 Lê Cường 21/5/1 1 Nam 200 KT 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT 520 Ngô Hòa 16/8/1 0 Nam 200 CN 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN 5308 Phạm Trang 12/7/1 0 Nữ 800 CN
MaKhoa SoSV TongHB
KT 2 1.000 CN 3 1.400 Thuộc tính dùng để tách nhóm các bộ Count là hàm đếm số MaSV (số bộ) trong từng nhóm
MaKHG SoSV: Count(MaSV), TongHB: Sum(HocBong) (SinhVien)
2 3 Tách nhóm theo mã khoa Đếm số SV trong nhóm
2
Cú pháp:
Thuộc-tính-nhóm G Các-hàm-gộp (QuanHe)
Hàm Count được được gọi là hàm gộp (aggregate function). Danh sách các hàm gộp được liệt kê bên dưới
Tên hàm Mục đích
Count Đếm số bộ
Sum Tính tổng các giá trị Avg Tính giá trị trung bình Max Tìm giá trị lớn nhất
Min Tìm giá trị nhỏ nhất
Ví dụ 11: Tính học bổng cao nhất, thấp nhất, và trung bình của các sinh viên theo từng khoa
MaKH G Max(HocBong), Min(HocBong), Avg(HocBong) (SinhVien)
MaKhoa Max Min Avg
KT 800 200 500
CNTT 800 200 466
Ví dụ 12: mở rộng ví dụ , tính số sinh viên của từng Khoa, liệt kê các thuộc tính: MaKhoa, TenKhoa, SoSV.
Để có thêm cột TenKhoa, cần thực hiện phép kết giữa bảng SinhVien và bảng Khoa, sau đó thực hiện phép nhóm như bình thường, tuy nhiên cột TenKhoa phải được đưa vào làm thuộc tính nhóm chung với MaKhoa
MaKhoa, TenKhoa G SoSV: Count(MaSV) (SinhVien ⋈MaKH = MaKhoa Khoa)
MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH MaKhoa TenKhoa
5202 Lê Cường 21/5/1 1 Nam 200 KT KT Kinh tế 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT KT Kinh tế
520 Ngô Hòa 16/8/1 0 Nam 200 CN CN Công nghệ Thông tin 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN CN Công nghệ Thông tin 5308 Phạm Trang 12/7/1 0 Nữ 800 CN CN Công nghệ Thông tin
MaKhoa TenKhoa SoSV
KT Kinh tế 2
CN Công nghệ Thông tin 3
Thuộc tính nhóm gồm MaKhoa và TenKhoa
2
Ví dụ 1 : Cho biết sĩ số của từng lớp học. Liệt kê: MaLop, TenMH, SiSo
MaLop, TenMH G SiSo: Count(MaSV) (LopHoc ⋈ MonHoc ⋈ KetQua)
MaLop TenMH SiSo
01 Tin học cơ sở 2 02 Kế toán tài chính 2 03 Tin học cơ sở 1 04 Cấu trúc dữ liệu 1
Ví dụ 14: Dựa vào bảng KetQua và bảng MonHoc, tính điểm trung bình học kỳ 1 năm 2 của các sinh viên theo quy tắc.
∑ ∑
tam NamHoc=2010 AND HocKy= 1 (KetQua ⋈ LopHoc ⋈ MonHoc) Kết quả của tam:
MaSV MaLop Diem MaMH HocKy NamHoc GiaoVien TenMH SoTinChi
5202 01 4 306 1 2010 Tuấn Tin học cơ sở 2 5202 02 7 403 1 2010 Nga Kế toán tài chính 3 5202 04 207 1 2010 Nam Cấu trúc dữ liệu 3 5308 01 3 306 1 2010 Tuấn Tin học cơ sở 2 5308 02 403 1 2010 Nga Kế toán tài chính 3
MaSV G DiemTB: Sum(Diem*SoTinChi)/Sum(SoTinChi) (tam)
Kết quả:
MaSV DiemTB
5302 7.0 5308 6.6
2
3.7.Bài tập
1) Cho cơ sở dữ liệu về BanHang như bên dưới:
Hãy cho biết biểu thức đại số quan hệ để thực hiện các câu truy vấn sau và cho biết nội dung kết quả của từng câu truy vấn:
a) Liệt kê tên các mặt hàng có đơn giá lớn hơn 10.000 (MaMH, TenMH, DonGia) b) Cho biết tên khách hàng ứng với từng hóa đơn (MaHD, NgayHD, TenKH) c) Hãy cho biết tên các khách hàng đã mua mặt hàng ‘Sữa chua Vinamilk’ d) Liệt kê tên các mặt hàng bán được trong ngày 12/2/2010
e) Tính thành tiền của từng hóa đơn (MaHD, NgayHD, TenKH, ThanhTien)
f) Cho biết tên các mặt hàng mà khách hàng ‘Nguyễn Trang’ đã mua, với tổng số lượng và trị giá là bao nhiêu.
g) Tính doanh thu bán hàng theo từng ngày (NgayHD, DoanhThu)
h) Tính doanh thu bán hàng theo từng ngày của từng mặt hàng (NgayHD, TenMatHang, DoanhThu)
KhachHang MaKH HoTen DiaChi
A001 Nguyễn Trang 12 Hồng Bàng B002 Lê Cường 60 Trần Phú C003 Mai Nguyễn 22 Bạch Đằng
MatHang MaMH TenMH DonViTinh DonGia
S03 Sữa chua Vinamilk Lốc 4.000 B02 Bánh Choco-Pie Hộp 15.000 K01 Kem Monte-Rosa Ký 20.000
HoaDon MaHD NgayHD MaKH
001 12/2/2010 A001 002 12/2/2010 B002 003 20/4/2011 B002 004 25/7/2011 A001
MatHangBan MaHD MaMH SoLuong
001 S03 2 001 B02 5 002 K01 6 002 S03 8 003 S03 10 004 B02 7
2 2) Cho cơ sở dữ liệu về quản lý các dự án của một công ty như sau:
Hãy cho biết khóa chính, mối liên hệ và ràng buộc khóa ngoại giữa các quan hệ trong cơ sở dữ liệu trên.
Thực hiện các câu truy vấn sau bằng biểu thức đại số quan hệ và cho biết nội dung kết quả của từng câu truy vấn:
a) Liệt kê các phòng ban và tên trưởng phòng của từng phòng ban (họ tên đầy đủ). b) Tìm các nhân viên lương ít hơn . . ở ‘Phòng Kinh doanh’ hoặc ít hơn
. . ở ‘Phòng Kế toán’.
c) Liệt kê các nhân viên và cho biết tên trưởng phòng của từng nhân viên đó. d) Hãy cho biết các phòng ban nào có thực hiện dự án tại ‘Nha Trang’. e) Tính mức lương trung bình của từng phòng ban.
f) Trong các dự án thực hiện tại Nha Trang, tính tổng số giờ nhân viên của từng dự án.
g) Với mỗi giờ làm việc cho dự án, một nhân viên sẽ được thưởng 1% tiền lương. Tính số tiền thưởng của từng nhân viên.
h) Tính số tiền thưởng của từng nhân viên theo từng dự án.
PhongBan MaPB TenPB TruongPhong
KD Phòng Kinh doanh N01 KT Phòng Kế toán V02
NhanVien MaNV HoNV TenNV Luong MaPB
N01 Hoài Nam 3.000.000 KD V02 Bình Phương 4.000.000 KT N03 Mỹ Hòa 5.000.000 KD V04 Phương Anh 5.000.000 KT
DuAn MaDA TenDA DiaDiem NgayBD MaPB
D1 Hồ Con Rùa Sài Gòn 27/3/2011 KD D2 Chùa Tây Phương Hà Nội 10/6/2012 KD D3 Chùa Linh Sơn Nha Trang 16/8/2011 KD D4 Dinh Bảo Đại Nha Trang 22/1/2010 KT
PhanCong MaDA MaNV SoGio
D1 N01 2 D1 N03 5 D2 N01 6 D2 V02 8 D3 V02 10 D4 V04 7
Phần II
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MICROSOFT ACCESS
CHƯƠNG 4. GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
MICROSOFT ACCESS 4.1.Giới thiệu Microsoft Access
MS Access là một Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS - Relational Database Management System), là một phần mềm trong bộ ứng dụng Microsoft Office chạy trên môi trường Windows của hãng phần mềm Microsoft.
MS Access có giao diện thân thiện, dễ sử dụng, hiệu năng cao, cho phép xử lý dữ liệu và kết xuất vào các biểu mẫu, báo cáo theo dạng thức chuyên nghiệp rất phù hợp cho các bài toán quản lý vừa và nhỏ.
Microsoft Access còn cung cấp nhiều công cụ phát triển đầy năng lực để nâng cao hiệu suất công việc. Bằng cách dùng các Wizard của MS Access và các lệnh có sẵn (macro) người sử dụng có thể dễ dàng tự động hóa công việc mà không cần lập trình.
4.2.Khởi động MS Access
Start All Programs Microsoft Office Microsoft Office Access
4.3.Tạo cơ sở dữ liệu mới
Một cơ sở dữ liệu Access được lưu trên đĩa dưới dạng một tập tin. Để tạo một CSDL mới thì chọn menu File New Blank Database
Ở hộp thoại tiếp theo, chọn nơi lưu trữ và tên tập tin cơ sở dữ liệu
Sau khi chọn nơi lưu trữ và tên tập tin thì nhấn vào nút để tạo cơ sở dữ liệu mới.
4.4.Mở một CSDL đã có trong máy tính
Sử dụng một trong các cách sau
Vào menu File Open
Chọn thư mục và double-click vào tập tin CSDL.
4.5.Các đối tượng chính của một CSDL Access
Access là một hệ quản trị theo mô hình cơ sở dữ liệu quan hệ, vì vậy vì vậy Access có các đối tượng để thể hiện các khái niệm quan hệ, lược đồ quan hệ và truy vấn:
Bảng (Table) : thể hiện khái niệm quan hệ trong cơ sở dữ liệu. Bảng có hai chế độ: design view - lược đồ quan hệ và data view - quan hệ. Trong bảng gồm nhiều dòng - bộ và cột – thuộc tính
Truy vấn (Query): Để thực hiện các truy vấn và một số thao tác thêm, xóa, sửa trên các bảng.
Các thành phần tiện ích khác:
Biểu mẫu (Form): Giao diện do người dùng tự tạo cho phép làm việc với dữ liệu, chủ yếu được sử dụng trong việc nhập và hiển thị dữ liệu.
Báo cáo (Report) : Kết quả của quá trình khai thác dữ liệu được tổ chức và định dạng để tạo thành bản in.
Pages: Tương tự như Form nhưng hoạt động trên nền Web.
Macro : Tập hợp các lệnh nhằm tự động hóa các thao tác.
Module: Cho phép lập trình thao tác trên các bảng và truy vấn. Nơi lưu tập tin cơ sở dữ liệu
4.6.Các toán tử sử dụng trong MS Access
Toán tử Ý nghĩa
( ) Kết nhóm biểu thức
Not Phủ định mệnh đề
And Kết hợp mệnh đề: tất cả mệnh đề thành phần đúng thì cho kết quả
đúng, nếu có ít nhất 1 mệnh đề thành phần sai thì cho kết quả sai.
Or Kết hợp mệnh đề: tất cả mệnh đề thành phần sai thì cho kết quả sai,
nếu có ít nhất 1 mệnh đề thành phần đúng thì cho kết quả đúng.
Xor 2 mệnh đề có giá trị trái ngược nhau thì cho kết quả đúng
Epv 2 mệnh đề có giá trị trái ngược nhau thì cho kết quả sai
^ Luỹ thừa (5^3=75) + - * / Cộng, Trừ, Nhân, Chia
\ Phép chia lấy phần nguyên Mod Phép chia lấy phần dư <, >, = Nhỏ hơn, Lớn hơn, Bằng
<=, >= Nhỏ hơn hoặc bằng, Lớn hơn hoặc bằng
<> Không bằng
Is So sánh 2 đối tượng
In Thuộc, trong tập hợp hoặc miền giá trị (dùng trong các câu truy vấn)
Between ...
And ... Trong khoảng từ…đến…
Like Giống: * (tổ hợp kí tự bất kỳ),
? ( ký tự bất kỳ),
# (Một ký số bất kỳ)
Ví dụ: like "A*", like "Access????", like 1#00
& Ghép chuỗi
+ Ghép chuỗi hoặc cộng số
Toán tử Ý nghĩa Toán tử Ý nghĩa
True Giá trị đúng "…" hoặc '…' Giá trị chuỗi, ví dụ "ACCESS"
False Giá trị sai […] Giá trị tham số, ví dụ [tham so]
Null Giá trị rỗng #...# Giá trị thời gian, ví dụ 2 2
Date Ngày hiện hành
[Color]
Màu, ví dụ
Now Ngày giờ hiện
hành [white] : màu trắng
4.7.Một số hàm sử dụng trong MS Access
1) Các hàm về chuỗi
Hàm Kết quả
Ten LIKE 'N*' Tên bắt đầu bằng chữ N
Ten LIKE '*a*' Tên có chứa chữ a
Len(Ten) 3 (nếu Ten = 'Mai')
5 (nếu Ten = 'Nguyen')
Left(Ten, 2) 'Ma'
Right(TenSV,2) 'ai' (nếu TenSV = 'Mai')
Mid(TenSV,2,3) 'guy' (nếu TenSV = 'Nguyen')
2) Các hàm về ngày tháng
Hàm Kết quả
Now() Ngày giờ hiện tại
Month(#8/12/2011#)
Day(#5/27/2011#) 2
Year(Now()) 2
Year(Now()) – Year(NgaySinh) Tính số tuổi của sinh viên
Hour(#06:30#)
Minute(#13: 2
DatePart('q', Tính quý 2 3) Hàm IIF
Cú pháp: IIF(điều-kiện, A, B)
(với điều-kiện là biểu thức logic. A, B là các biểu thức bất kỳ)
Ý nghĩa: nếu điều-kiện đúng thì kết quả của biểu thức IIF là biểu thức A, nếu điều-kiện sai thì kết quả của biểu thức IIF là biểu thức B.
Ví dụ: IIF(Diem>=5, 'Đạt', 'Không đạt')
Vậy nếu Diem = 6, 7, 8 thì kết quả của IIF là 'Đạt'. Nếu Diem = 2, 4 thì kết quả của IIF là 'Không đạt'.
4.8.Bài tập
Hãy thực hiện các thao tác sau trên máy tính: 1) Khởi động Access
2) Tạo một cơ sở dữ liệu mang tên bạn và lưu vào ổ đĩa C hoặc D
3) Trong cơ sở dữ liệu vừa tạo, quan sát các mục Table, Query, Form, Report, Macro và Module
4) Đóng cơ sở dữ liệu và đóng Access
5) Khởi động lại Access, mở lại cơ sở dữ liệu vừa tạo (lưu ý: dùng menu File -> Open, không được dùng menu File -> New)
CHƯƠNG 5. BẢNG (TABLE)
5.1.Các khái niệm
5.1.1.Bảng
Bảng là thành phần cơ bản và quan trọng nhất của CSDL Access, thể hiện khái niệm lược đồ quan hệ và quan hệ.
Một bảng dữ liệu của CSDL Access bao gồm các thành phần: tập hợp các trường dữ liệu (thuộc tính trong mô hình quan hệ), trường khoá chính, tập hợp các thuộc tính cần thiết cho mỗi trường dữ liệu, tập hợp các bản ghi (bộ).
Ví dụ:
Bảng dữ liệu trong trạng thái Datasheet (dùng để cập nhập, xem, sửa dữ liệu)
Bảng dữ liệu trong trạng thái Design view (dùng để thiết kế cấu trúc – lược đồ quan hệ)
Bản ghi (record) Trường dữ liệu (field)
Tên bảng
Các thuộc tính mô tả trường dữ liệu Trường khóa chính
5.1.2. Trường dữ liệu (field)
Trường dữ liệu, tương ứng với cột của bảng, mô tả từng đặc điểm riêng của đối tượng. Mỗi trường dữ liệu sẽ có một tên gọi, kiểu dữ liệu và tập hợp các tính chất mô tả trường dữ liệu đó.
Ví dụ: Trường MaKhoa có kiểu dữ liệu là Text, kích thước 2 ký tự, được hiển thị là chữ in hoa,…
5.1.3. Bản ghi (record)
Mỗi dòng dữ liệu của bảng được gọi một bản ghi.
Ví dụ: Bảng Khoa có 3 bản ghi là (“CN”, “Khoa Công nghệ thông tin”), (“KT”, “Khoa Kinh tế”), (“NN”, “Khoa Ngoại ngữ”)
5.1.4. Khóa chính (primary key)
Khóa chính của bảng là trường hoặc tập trường dùng để phân biệt các bản ghi trong cùng một bảng.
Ví dụ: Ở một trường đại học, mỗi sinh viên khi nhập học đều được cấp 1 mã sinh viên không giống nhau, do đó có bảng SinhVien được thiết kế như sau:
Như vậy trường MaSV chứa dữ liệu mã sinh viên sẽ là khóa chính của bảng
SINHVIEN vì mã sinh viên là duy nhất, các sinh viên có thể trùng họ tên, ngày sinh,…nhưng không thể có mã sinh viên giống nhau.
Ví dụ: Kết quả học tập của sinh viên bao gồm các dữ liệu sau: mã sinh viên, mã các lớp học sinh viên đó đã đăng ký và điểm kết quả của các lớp học đó. Trong CSDL của trường đó có bảng KetQua được thiết kế như sau
Như vậy 2 trường MaSV (chứa dữ liệu mã sinh viên) và MaLop (chứa mã lớp học mà sinh viên đó đăng ký) sẽ tạo thành khóa chính của bảng KetQua, không thể có 1 sinh viên đăng ký lớp học mà có 2 điểm kết quả khác nhau.
Chú ý: MS Access không chấp nhận các giá trị trùng nhau hay trống (null) trong trường khóa chính.
5.1.5.Mối liên hệ giữa các bảng (relationship)
Thể hiện khái niệm mối liên hệ giữa các quan hệ trong mô hình lý thuyết (xem phần Phần I2.3.2). Đi kèm với mối liên hệ là ràng buộc toàn vẹn về khóa ngoại.
Trong Access tồn tại 2 kiểu quan hệ: quan hệ - và quan hệ -∞ (một-nhiều)
a) Quan hệ 1-1
Mỗi bản ghi của bảng này sẽ không liên kết hoặc liên kết với duy nhất tới một bản ghi của bảng kia và ngược lại
Ví dụ: Mỗi số báo danh của thí sinh thi đại học chỉ có 1 số phách bài thi và số phách của mỗi bài thi chỉ thuộc về 1 số báo danh.
Mô tả dữ liệu 2 bảng như sau:
b) Quan hệ 1- ∞
Một bản ghi trong bảng A không kết hợp hoặc kết hợp với một hay nhiều bản ghi trong bảng B, nhưng ngược lại một bản ghi trong bảng B chỉ có thể kết hợp duy nhất với một bản ghi trong bảng A.
Ví dụ: một khoa của trường Đại học Nha Trang có nhiều sinh viên nhưng một sinh viên chỉ thuộc về duy nhất một khoa.
Mô tả dữ liệu 2 bảng như sau:
5.2.Xây dựng cấu trúc bảng
5.2.1. Sử dụng chế độ Design View để tạo bảng
Tab Tables Create Table in Design View hoặc Tab Tables
Sau đó ta được bảng thiết kế như sau:
Tên trường
Lựa chọn kiểu dữ liệu
Bảng thiết kế sau khi đã được nhập giá trị:
a) Tên trường
Tên trường có thể đặt tùy ý, tuy nhiên để dễ quản lý nên đặt ngắn gọn, dễ gợi nhớ, không chứa ký tự trắng và không dùng chữ tiếng Việt có dấu.
b) Kiểu dữ liệu (Data Type)
MS Access cung cấp một số kiểu dữ liệu cơ bản sau:
Text: kiểu chuỗi có độ dài tối đa 2 ký tự
Memo: kiểu chuỗi có độ dài tối đa . ký tự
Number: kiểu số
Date/Time: kiểu ngày (nếu cần có thể lưu thêm thông tin về giờ)
Currency: kiểu số có định dạng theo loại tiền tệ
AutoNumber: kiểu số nhưng tự động tăng do Microsoft Access cung cấp và quản lý, người dùng không thể cập nhật
Yes/No: kiểu Logic
OLE Object: kiểu đối tượng kết nhúng: Word, Excel,..
Hyperlink: kiểu chuỗi chỉ đường dẫn của một tập tin trên ổ cứng hay trên máy