Как в postgres описать связь нескольких таблиц в одной по id и имени таблицы?

Сущности: Автор произведения, жанр произведения, произведение, сборник, книга.
Один автор может писать несколько произведений.
Одно произведение может относится нескольким жанрам.
Одно произведение может входит в несколько книг.
Одна книга может входить в несколько сборников.

Решил реализовать связи через одну таблицу связей в которой они будут осуществляться по id, который в каждой таблице primary key, и по имени таблицы. То есть связующая таблица содержит 4 столбца: Таблица_родитель, id_родитель, Дочерняя_таблица, дочерний_id.

Пример:
Добавили автора: Пушкин - id 1
Добавили произведение: Руслан и Людмила - id 2
Добавили книгу: Русские народные сказки - id 3
Добавили сборник: Детские книги - id 4

Теперь при добавлении связи автора и произведения в талице связей добавляем запись:
Табица_родитель: Авторы
id_родитель: 1 <- вот этот id должен провериться на наличие в талице Авторы
Дочерняя_таблица: Произведения
дочерний_id: 2 <- а вот этот id должен провериться на наличие уже в таблице Произведения и т.д.

Вопрос: как описать связь при создании таблицы "связей" что бы при создании записи происходила проверка наличия id в соответствующей таблице - то есть указнной в для id_родителя в графе Таблица_родитель, а для дочернего_id в графе дочерняя_таблица.

ps: В сети нашел только пару обсуждений как лучше сделать: все связи в одну таблицу или несколько связующих таблиц. Но как это технически реализовать, именно синтаксис не нашел.

pps: если данный вопрос был задан ранее - извиняюсь что не нашел, ткните в ссылку - пойду читать.


Ответы (0 шт):