Vận dụng trang 68 Tin học 11: Trong kì thi tốt nghiệp trung học phổ thông, học sinh được đánh số báo danh, có thể thi một số môn, được chia vào các phòng thi được đánh số, sau khi chấm sẽ có điểm thi với các môn đăng kì dự thi. Em hãy đề xuất một số bảng dữ liệu và các trường làm khoá chính và khoá ngoài cho các bảng đó.
Lời giải:
Dựa trên yêu cầu của bài toán, ta có thể đề xuất các bảng dữ liệu và các trường làm khoá chính và khoá ngoài như sau:
- Bảng HocSinh:
- Trường: Mã số báo danh, Họ tên, Ngày sinh, Địa chỉ
- Khoá chính: Mã số báo danh
- Khoá ngoài: Không có
- Bảng MonHoc:
- Trường: Tên môn học, Mã môn học
- Khoá chính: Mã môn học
- Khoá ngoài: Không có
- Bảng PhongThi:
- Trường: Mã phòng thi, Tên phòng thi
- Khoá chính: Mã phòng thi
- Khoá ngoài: Không có
- Bảng ThiSinh_MonHoc:
- Trường: Mã số báo danh, Mã môn học
- Khoá chính: Mã số báo danh, Mã môn học
- Khoá ngoài: Mã số báo danh tham chiếu đến bảng HocSinh, Mã môn học tham chiếu đến bảng MonHoc
- Bảng KetQuaThi:
- Trường: Mã số báo danh, Mã môn học, Mã phòng thi, Điểm thi
- Khoá chính: Mã số báo danh, Mã môn học, Mã phòng thi
- Khoá ngoài:
- Mã số báo danh tham chiếu đến bảng HocSinh
- Mã môn học tham chiếu đến bảng MonHoc
- Mã phòng thi tham chiếu đến bảng PhongThi
Lưu ý rằng, trong bảng ThiSinh_MonHoc, ta cần sử dụng một tập hợp các trường (Mã số báo danh, Mã môn học) để tạo thành khoá chính, bởi vì một thí sinh có thể đăng kí thi nhiều môn học khác nhau. Còn trong bảng KetQuaThi, ta cần sử dụng một tập hợp các trường (Mã số báo danh, Mã môn học, Mã phòng thi) để tạo thành khoá chính, bởi vì một thí sinh có thể thi cùng một môn học ở nhiều phòng thi khác nhau.