Разработка схемы БД для книг, издателей и авторов

При обычной модели у издателя много книг, а у книги несколько авторов: Book хранит publisher_id, связь с Author реализуется таблицей BookAuthor. Допущение об одном издателе нужно уточнить.

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

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

При обычной модели у издателя много книг, а у книги несколько авторов: Book хранит publisher_id, связь с Author реализуется таблицей BookAuthor. Допущение об одном издателе нужно уточнить.

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

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

Условие

В задаче рассматриваются три сущности: book:id,title. publisher:id,title. author:id,full_name. Требуется определить, какие отношения существуют между таблицами (один‑ко‑многим или многие‑ко‑многим) и какие внешние ключи следует добавить.

Ответ

При обычной модели у издателя много книг, а у книги несколько авторов: Book хранит publisher_id, связь с Author реализуется таблицей BookAuthor. Допущение об одном издателе нужно уточнить.

CREATE TABLE BookAuthor (
    book_id integer NOT NULL REFERENCES Book(id),
    author_id integer NOT NULL REFERENCES Author(id),
    PRIMARY KEY (book_id, author_id)
);

В Book добавляют внешний ключ publisher_id на Publisher(id). Если одна книга имеет разные издания у разных издателей, лучше выделить Edition с book_id и publisher_id. Сущность Book тогда описывает произведение, а не конкретное издание. Каскадное удаление и обязательность связей задаются бизнес-правилами.

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

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

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

Подробнее