Sobes.tech
Senior

Jāapraksta bibliotēkas modelis. Ir 3 būtības: «Autors», «Grāmata», «Lasītājs». Fiziķiski ir tikai viena grāmata un tā var piederēt tikai vienam lasītājam. Jāizveido tabulas bibliotēkai, ņemot to vērā. Viena grāmata var būt ar vairākiem autoriem.

sobes.tech AI

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