Нет.Помимо нарушения нормальной формы и введения множества проблем, это также кажется неуместным в вашем случае.Книга состоит из n глав.И глава всегда принадлежит одной книге.Это простые отношения 1: n, как вы сами упомянули в заголовке!Вам не нужна «отдельная таблица» .Все, что вам нужно, это идентификатор книги в каждой связанной строке таблицы chapters
.Например:
CREATE TABLE chapters
id serial PRIMARY KEY
<b>, book_id int REFERENCES books(id)</b> -- !
, name text NOT NULL
, updated timestamptz
);
Я добавил ограничение FOREIGN KEY
с коротким синтаксисом. Подробности в руководстве здесь. (Это также то, что вы не могли использовать с массивом.)
Тогда ваш запрос для получения всех глав данной книги может быть просто:
SELECT id, name, updated
FROM chapters
WHERE book_id = $1;
Хотя вам ничего не нужно из таблицы books
, вам даже не нужно включать это в запрос.В любом случае ограничения FK обеспечивают ссылочную целостность.