Назад к вопросам
Холодильник.ру
Senior
12
Нужно описать модель библиотеки. Есть 3 сущности: «Автор», «Книга», «Читатель». Физически книга только одна и может быть только у одного читателя. Нужно составить таблицы для библиотеки так чтобы это учесть. У книги может быть несколько авторов.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для описания модели библиотеки с сущностями «Автор», «Книга» и «Читатель», учитывая, что:
- Физически книга только одна и может быть только у одного читателя.
- У книги может быть несколько авторов.
Можно предложить следующие таблицы:
-- Таблица авторов
CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(255) NOT NULL
);
-- Таблица книг
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(255) NOT NULL
);
-- Таблица читателей
CREATE TABLE Readers (
ReaderID INT PRIMARY KEY,
Name VARCHAR(255) NOT NULL
);
-- Связующая таблица для авторов и книг (многие ко многим)
CREATE TABLE BookAuthors (
BookID INT,
AuthorID INT,
PRIMARY KEY (BookID, AuthorID),
FOREIGN KEY (BookID) REFERENCES Books(BookID),
FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
);
-- Таблица для учёта, у какого читателя находится книга (один к одному)
CREATE TABLE BookLoans (
BookID INT PRIMARY KEY,
ReaderID INT UNIQUE,
LoanDate DATE,
FOREIGN KEY (BookID) REFERENCES Books(BookID),
FOREIGN KEY (ReaderID) REFERENCES Readers(ReaderID)
);
Здесь BookLoans гарантирует, что каждая книга может быть выдана только одному читателю, а у читателя может быть не более одной такой книги (если нужно разрешить несколько книг у одного читателя, убрать UNIQUE с ReaderID). Таблица BookAuthors реализует связь многие-ко-многим между книгами и авторами.