При обычной модели у издателя много книг, а у книги несколько авторов: 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 тогда описывает произведение, а не конкретное издание. Каскадное удаление и обязательность связей задаются бизнес-правилами.