Cho lược đồ cơ sở dữ liệu Quản lý thi tốt nghiệp tại một trường PTTH như sau:
PHONGTHI (SoPT, DiaChiPT, SucChua)
Tân từ: mỗi phòng thi có một số duy nhất để phân biệt với các phòng thi khác, địa chỉ
phòng thi, có sức chứa là bao nhiêu sinh viên (SucChua).
THISINH(SoBD, HoTen, NgaySinh, GioiTinh, DiaChi, SoPT)
Tân từ: mỗi thí sinh có một số báo danh duy nhất để phân biệt với các thí sinh khác
(SoBD), họ tên thí sinh, ngày sinh, giới tính (Nam/Nữ), địa chỉ. Mỗi thí sinh chỉ thi tại
một phòng thi (SoPT) cho tất cả các môn thi tốt nghiệp.
MONTHI(MaMT, TenMT, Buoi, NgayThi)
Tân từ: mỗi môn thi tốt nghiệp có một mã số duy nhất để phân biệt với các môn thi khác
(MaMT), tên môn thi (TenMT), thi vào buổi sáng hay chiều (Buoi), vào ngày thi nào
(NgayThi).
KETQUA(SoBD, MaMT,DiemThi,VangThi)
Tân từ: Mỗi thí sinh thi một môn sẽ có một kết quả thi cho môn đó. Điểm thi phải lớn
hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 10. Cột VangThi có giá trị là 1 nếu thí sinh vắng
thi, VangThi = 0 nếu thí sinh có dự thi.
Yêu cầu:
1. Hãy phát biểu một cách chặt chẽ RBTV “Tổng số thí sinh thi tại một phòng thi
phải nhỏ hơn hay bằng sức chứa (SucChua) của phòng thi đó.” (1 điểm).
Thực hiện các câu truy vấn sau bằng ngôn ngữ đại số quan hệ:
2. Với các thí sinh thi ở phòng ‘P07’ (SoPT = ‘P07’), hãy liệt kê số báo danh, họ tên
thí sinh, tên môn thi, điểm thi với tình trạng là có dự thi (VangThi = 0). (0.75
điểm).
2 trang |
Chia sẻ: candy98 | Lượt xem: 834 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bộ đề môn Cơ sở dữ liệu - Tổng hợp đề 6, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐỀ THI SỐ 6
Cho lược đồ cơ sở dữ liệu Quản lý thi tốt nghiệp tại một trường PTTH như sau:
PHONGTHI (SoPT, DiaChiPT, SucChua)
Tân từ: mỗi phòng thi có một số duy nhất để phân biệt với các phòng thi khác, địa chỉ
phòng thi, có sức chứa là bao nhiêu sinh viên (SucChua).
THISINH(SoBD, HoTen, NgaySinh, GioiTinh, DiaChi, SoPT)
Tân từ: mỗi thí sinh có một số báo danh duy nhất để phân biệt với các thí sinh khác
(SoBD), họ tên thí sinh, ngày sinh, giới tính (Nam/Nữ), địa chỉ. Mỗi thí sinh chỉ thi tại
một phòng thi (SoPT) cho tất cả các môn thi tốt nghiệp.
MONTHI(MaMT, TenMT, Buoi, NgayThi)
Tân từ: mỗi môn thi tốt nghiệp có một mã số duy nhất để phân biệt với các môn thi khác
(MaMT), tên môn thi (TenMT), thi vào buổi sáng hay chiều (Buoi), vào ngày thi nào
(NgayThi).
KETQUA(SoBD, MaMT,DiemThi,VangThi)
Tân từ: Mỗi thí sinh thi một môn sẽ có một kết quả thi cho môn đó. Điểm thi phải lớn
hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 10. Cột VangThi có giá trị là 1 nếu thí sinh vắng
thi, VangThi = 0 nếu thí sinh có dự thi.
Yêu cầu:
1. Hãy phát biểu một cách chặt chẽ RBTV “Tổng số thí sinh thi tại một phòng thi
phải nhỏ hơn hay bằng sức chứa (SucChua) của phòng thi đó.” (1 điểm).
Thực hiện các câu truy vấn sau bằng ngôn ngữ đại số quan hệ:
2. Với các thí sinh thi ở phòng ‘P07’ (SoPT = ‘P07’), hãy liệt kê số báo danh, họ tên
thí sinh, tên môn thi, điểm thi với tình trạng là có dự thi (VangThi = 0). (0.75
điểm).
Thực hiện các câu truy vấn sau bằng ngôn ngữ SQL:
3. Với các thí sinh thi ở phòng ‘P07’ (SoPT = ‘P07’) vào ngày ‘21/5/2006’, hãy liệt
kê số báo danh, họ tên thí sinh, tên môn thi, điểm thi với tình trạng là có dự thi
(VangThi = 0). Sắp thứ tự tăng dần theo số báo danh, tên môn thi. (1.25 điểm)
4. Cho biết phòng thi (SoPT) có số lượng thí sinh thi đông nhất (0.5 điểm).
ĐÁP ÁN
Câu 1: (1 điểm)
Nội dung:
Tổng số thí sinh thi tại một phòng thi phải nhỏ hơn hay bằng sức chứa (SucChua)
của phòng thi đó.
p PHONGTHI,
Count(ts THISINH ts.SoPT = p.SoPT) (ts.SoBD) p.SucChua
Cuối p
hoặc cách khác: Count(ts SINHVIEN ts.SoPT = p.SoPT) (*) p.SucChua
Bối cảnh: PHONGTHI, THISINH
Bảng tầm ảnh hưởng:
Thêm Xóa Sửa
PHONGTHI
- - +
(SucChua)
THISINH + + +
(SoPT)
Câu 2: (0.75 điểm)
( (THISINH: SoPT= 'P07') (KETQUA:VangThi=0) MONTHI) [SoBD,
HoTen, TenMT, DiemThi]
Câu 3: (1.25 điểm)
SELECT ts.SoBD, HoTen, TenMT, DiemThi
FROM THISINH ts, MONTHI m, KETQUA k
WHERE ts.SoBD = k.SoBD AND k.MaMT = m.MaMT
AND k.VangThi=0 AND ts.SoPT = 'P07' AND m.NgayThi = #21/5/2006#
ORDER BY ts.SoBD, TenMT ASC
Câu 4: (0.5 điểm)
SELECT ts.SoPT, count(ts.SoBD) as SoTSThi
FROM THISINH ts
GROUP BY ts.SoPT
HAVING count(ts.SoBD) all (SELECT count(SoBD) FROM THISINH GROUP
BY SoPT)
MaMT SoBD