Cho CSDL quản lý Thư viện gồm các bảng: Sách (Mã sách, Tên sách, Loại sách, Đơn giá), Người đọc (Số thẻ, Họ tên, Ngày sinh, Lớp), Mượn sách (Mã sách, Số thẻ, Ngày mượn, Số lượng).
a. Hãy xác định các khóa của bảng Người đọc
b. Hãy xác định khóa chính và khóa ngoài cho mỗi bảng?
Quảng cáo
2 câu trả lời 723
a. Xác định các khóa của bảng "Người đọc"
Trong bảng "Người đọc" với các trường: Số thẻ, Họ tên, Ngày sinh, Lớp, ta có thể xác định các khóa của bảng này như sau:
Khóa chính (Primary Key):
Số thẻ: Đây là trường có giá trị duy nhất đối với mỗi người đọc, vì mỗi người đọc sẽ có một số thẻ riêng biệt. Đây là trường duy nhất có thể nhận dạng một người đọc một cách duy nhất trong bảng "Người đọc".
Các khóa ứng viên (Candidate Key):
Ngoài Số thẻ, có thể có các ứng viên khác, nhưng để đảm bảo tính duy nhất và hợp lý, ta thường xem xét sự kết hợp của các trường như Họ tên và Ngày sinh. Tuy nhiên, trong thực tế, sự kết hợp này có thể không duy nhất trong một thư viện, vì có thể có nhiều người có tên giống nhau và ngày sinh trùng nhau. Vì vậy, Số thẻ vẫn là khóa chính hợp lý nhất.
Khóa phụ (Foreign Key):
Trong bảng này, Số thẻ có thể là khóa phụ trong các bảng khác (ví dụ, bảng "Mượn sách") để liên kết với thông tin người đọc. Nhưng trong bảng "Người đọc", Số thẻ là khóa chính.
b. Xác định khóa chính và khóa ngoài cho mỗi bảng
1. Bảng "Sách"
Khóa chính (Primary Key):
Mã sách: Đây là trường duy nhất có thể xác định một cuốn sách trong thư viện. Mỗi cuốn sách sẽ có mã duy nhất, không trùng lặp.
Khóa ngoài (Foreign Key):
Trong bảng "Sách", không có khóa ngoài vì bảng này không liên kết trực tiếp với bất kỳ bảng nào khác.
2. Bảng "Người đọc"
Khóa chính (Primary Key):
Số thẻ: Đây là trường duy nhất có thể xác định mỗi người đọc. Mỗi người đọc sẽ có một số thẻ duy nhất, không trùng lặp.
Khóa ngoài (Foreign Key):
Trong bảng "Người đọc", không có khóa ngoài vì bảng này không liên kết với bảng nào khác.
3. Bảng "Mượn sách"
Khóa chính (Primary Key):
Không có khóa chính đơn trong bảng này, vì bảng này là một bảng liên kết (junction table) giữa bảng "Sách" và bảng "Người đọc". Do đó, ta sẽ sử dụng kết hợp giữa các trường:
Mã sách và Số thẻ sẽ tạo thành khóa chính cho bảng "Mượn sách", vì mỗi người đọc chỉ có thể mượn một cuốn sách trong một lần mượn.
Khóa ngoài (Foreign Key):
Mã sách: Là khóa ngoài tham chiếu đến bảng "Sách", liên kết thông tin về sách mà người đọc mượn.
Số thẻ: Là khóa ngoài tham chiếu đến bảng "Người đọc", liên kết thông tin về người đọc mượn sách.
Tóm tắt các khóa trong các bảng:
Bảng Khóa chính Khóa ngoài
Sách Mã sách Không có
Người đọc Số thẻ Không có
Mượn sách Mã sách + Số thẻ Mã sách, Số thẻ
Như vậy, chúng ta đã xác định được khóa chính và khóa ngoài cho mỗi bảng trong CSDL quản lý thư viện.
a. Xác định các khóa của bảng Người đọc
Bảng Người đọc gồm các thuộc tính:
Số thẻ: Là mã duy nhất để nhận diện từng người đọc.
Họ tên: Không đảm bảo duy nhất vì có thể trùng lặp.
Ngày sinh: Không đảm bảo duy nhất.
Lớp: Cũng không duy nhất.
Khóa chính (Primary Key) của bảng Người đọc là Số thẻ, vì mỗi người đọc có một số thẻ duy nhất.
b. Xác định khóa chính và khóa ngoài cho mỗi bảng
Bảng Sách:
Khóa chính (Primary Key): Mã sách (vì mỗi quyển sách có mã riêng biệt).
Bảng Người đọc:
Khóa chính (Primary Key): Số thẻ (duy nhất cho mỗi người đọc).
Bảng Mượn sách:
Khóa chính (Primary Key): (Mã sách, Số thẻ, Ngày mượn) (bộ ba này đảm bảo duy nhất cho mỗi lần mượn sách).
Khóa ngoại (Foreign Key):Mã sách: Tham chiếu đến Mã sách trong bảng Sách.
Số thẻ: Tham chiếu đến Số thẻ trong bảng Người đọc.
Tóm lại:
Bảng Sách:
Khóa chính: Mã sách.
Bảng Người đọc:
Khóa chính: Số thẻ.
Bảng Mượn sách:
Khóa chính: (Mã sách, Số thẻ, Ngày mượn).
Khóa ngoại:Mã sách → Mã sách (bảng Sách).
Số thẻ → Số thẻ (bảng Người đọc).
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
86252
