Up5me
Trang chủ > Câu hỏi lẻ > gBEZmtDl4boq

Đề bài

Cho một cơ sở dữ liệu (viết tắt là CSDL) có tên thuvien dùng để quản lí việc mượn - trả sách của một trường trung học phổ thông. Cơ sở dữ liệu gồm 3 bảng với cấu trúc như sau:

bandoc (idBandoc, hoten, ngaysinh, lop, namhoc)

sach (idSach, tensach, namxb, sotrang)

giaodich (idBandoc, idSach, ngaymuon, ngaytra)

Trong đó, bảng bandoc lưu các thông tin về bạn đọc (id bạn đọc, họ tên, ngày sinh, lớp, năm học), bảng sach lưu thông tin về cuốn sách có trong thư viện (id cuốn sách, tên cuốn sách, năm xuất bản, số trang), bảng giaodich lưu thông tin về các giao dịch mượn sách (id bạn đọc, id cuốn sách, ngày mượn, ngày trả).

Một số bạn học sinh đưa ra các ý kiến về việc khai thác cơ sở dữ liệu trên như sau: (Các phát biểu đúng hay sai?)

1. Một bạn đọc (chưa có thông tin trong CSDL) đến thư viện mượn sách "Tin học 12" (đã có thông tin trong CSDL). Nên nhập thông tin của bạn đọc đó vào bảng bandoc trước, sau đó mới nhập thông tin giao dịch mượn sách vào bảng giaodich sau.
2. Để trích xuất ra danh sách tên các cuốn sách mà bạn đọc có idBandoc bằng 4 chưa trả cho thư viện, ta cần truy xuất dữ liệu từ cả 3 bảng trên.
3. Khoá chính của bảng giaodich là idBandoc.
4. Nhà trường yêu cầu bổ sung thông tin về tình trạng cuốn sách trước và sau khi cho mượn thì các thông tin này lưu vào bảng giaodich và bảng sach.
Đáp án đúng: 1Đ, 2S, 3S, 4Đ

Xem lời giải

Phương pháp giải

Lời giải chi tiết

Phân tích và đánh giá các phát biểu:

1. Đúng: Để mượn sách, thông tin về bạn đọc cần được lưu vào bảng bandoc trước khi thực hiện các giao dịch mượn sách và lưu thông tin vào bảng giaodich. Điều này đảm bảo tính toàn vẹn dữ liệu, do idBandoc trong bảng giaodich là khóa ngoài tham chiếu đến idBandoc trong bảng bandoc.

2. Sai: Để trích xuất danh sách các cuốn sách mà bạn đọc ID 4 chưa trả, chỉ cần truy cập bảng giaodich và bảng sach. Cụ thể, ta cần tìm các bản ghi trong bảng giaodichidBandoc là 4 và ngaytra là NULL. Sau đó, từ các idSach này, truy xuất tensach từ bảng sach. Không cần truy xuất bảng bandoc vì đã biết ID bạn đọc.

3. Sai: Khóa chính của bảng giaodich nên là cặp khóa (idBandoc, idSach) hoặc thêm một khóa phụ (như id giao dịch) để đảm bảo tính duy nhất của mỗi giao dịch mượn - trả sách (vì một bạn đọc có thể mượn cùng một cuốn sách nhiều lần).

4. Đúng: Tình trạng cuốn sách trước và sau khi cho mượn nên được lưu vào bảng giaodich (để biết tình trạng cuốn sách tại thời điểm mượn và trả) và bảng sach (để lưu tình trạng hiện tại của sách). Cách làm này giúp quản lí đầy đủ trạng thái của sách qua mỗi giao dịch.

Chú ý khi giải

Lưu ý khi giải:

  • Luôn xác định rõ vai trò và quan hệ giữa các bảng trong CSDL khi phân tích các câu hỏi về truy xuất dữ liệu.
  • Khi nói đến khóa chính, hãy đảm bảo khóa đó là duy nhất cho mỗi bản ghi trong bảng và đảm bảo rằng không có sự trùng lặp.
  • Phân tích xem thông tin cần được lưu trữ ở đâu để duy trì cấu trúc dữ liệu hợp lý, tránh dư thừa và đảm bảo mối liên kết giữa các bảng.