Sobes.tech
Назад к вопросам
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 реализует связь многие-ко-многим между книгами и авторами.