Как использовать более одной иерархической FK в таблице? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть две таблицы, которые связаны друг с другом в отношении 1: M: parent и child.Я ограничил столбец parent_id в таблице child, чтобы он соответствовал только значениям идентификатора таблицы parent, используя ограничение внешнего ключа.Теперь я хочу, чтобы в третьей таблице, называемой another_table, было два столбца FK, которые ссылаются на столбец id в таблицах parent и child.

Как можно ограничить child_id FK столбец в третьей таблице, только для значений из таблицы child, которые соответствуют parent_id значению?

enter image description here

РЕДАКТИРОВАТЬ


EG: Как я уже упоминал выше, у меня есть три таблицы - parent, child и another_table.Их содержание выглядит так:

SELECT * FROM public.parent

id  name
1   A
2   B
3   C

SELECT * FROM public.child

id name parent_id 
1   A1  1
2   A2  1
3   A3  1
4   B1  2
5   C1  3
6   C2  3

SELECT * FROM public.another_table

enter image description here

Я хочу найти способ в структуре БД (в настоящее время), чтобы предотвратитьвставка или обновление значения в столбце child_id третьей таблицы, которое не соответствует данным таблицы child.

1 Ответ

0 голосов
/ 01 декабря 2018

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

    Parent
      /\
child1  child2
           /\
   pc_child  pc_child2

Visual Explanation

...