Модель данных для книжного фонда

Разделите авторов, книги, читателей и выдачи. Связь книги с авторами допускает соавторство, а уникальность незакрытой выдачи не позволяет одновременно выдать экземпляр двум читателям.

Короткий ответ

Что ответить на собеседовании

Разделите авторов, книги, читателей и выдачи. Связь книги с авторами допускает соавторство, а уникальность незакрытой выдачи не позволяет одновременно выдать экземпляр двум читателям.

Подробный разбор

Ответ с пояснениями

Условие

Требуется спроектировать схему базы данных библиотеки, включающую три сущности: "Автор", "Книга" и "Читатель". Каждый экземпляр книги существует в единственном числе и может быть выдан только одному читателю одновременно. Составьте набор таблиц, отражающих эти ограничения.

Ответ

Разделите авторов, книги, читателей и выдачи. Связь книги с авторами допускает соавторство, а уникальность незакрытой выдачи не позволяет одновременно выдать экземпляр двум читателям.

Возможная схема PostgreSQL: authors(id, name), books(id, title), book_authors(book_id, author_id), readers(id, name), loans(id, book_id, reader_id, issued_at, returned_at). Все ссылки оформите FK, пару book_authors — составным ключом.

CREATE UNIQUE INDEX one_active_loan_per_book
ON loans (book_id)
WHERE returned_at IS NULL;

По условию одна запись books означает единственный экземпляр. Возврат закрывает выдачу, история сохраняется. Конкурентные попытки выдачи проверяет БД, а приложение обрабатывает нарушение ограничения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее