Senior
Describe the model of the library. There are 3 entities: 'Author', 'Book', 'Reader'. Physically, there is only one book and it can only be with one reader. Create tables for the library considering this. A book can have multiple authors.
sobes.tech AI
Answer from AI
To describe a library model with entities "Author", "Book", and "Reader", considering that:
- Physically, there is only one book copy and it can only be with one reader at a time.
- A book can have multiple authors.
The following tables can be proposed:
-- Authors table
CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(255) NOT NULL
);
-- Books table
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(255) NOT NULL
);
-- Readers table
CREATE TABLE Readers (
ReaderID INT PRIMARY KEY,
Name VARCHAR(255) NOT NULL
);
-- Junction table for authors and books (many-to-many)
CREATE TABLE BookAuthors (
BookID INT,
AuthorID INT,
PRIMARY KEY (BookID, AuthorID),
FOREIGN KEY (BookID) REFERENCES Books(BookID),
FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
);
-- Table to track which reader has which book (one-to-one)
CREATE TABLE BookLoans (
BookID INT PRIMARY KEY,
ReaderID INT UNIQUE,
LoanDate DATE,
FOREIGN KEY (BookID) REFERENCES Books(BookID),
FOREIGN KEY (ReaderID) REFERENCES Readers(ReaderID)
);
Here, BookLoans guarantees that each book can only be loaned to one reader at a time, and a reader can have at most one such book (if multiple books per reader are allowed, remove the UNIQUE constraint on ReaderID). The BookAuthors table implements the many-to-many relationship between books and authors.