Вопрос по реляционной базе данных: родитель, который ссылается на ребенка - PullRequest
0 голосов
/ 21 апреля 2020

Допустимо ли, чтобы родительская таблица имела ссылку на дочернюю таблицу?

Например, таблица Parents имеет дочернюю таблицу Children. У дочернего элемента есть внешний ключ Parent_ID, ссылающийся на своего родителя. Но у Parent есть еще один столбец (скажем, favour_child_id), который является внешним ключом для таблицы Child. Это приемлемо, или это плохой дизайн базы данных, когда две таблицы ссылаются друг на друга?

1 Ответ

2 голосов
/ 21 апреля 2020

Это не необычно и является разумным решением. Например, обычным явлением являются контакты для компании. Один из контактов может быть обозначен как «основной контакт».

Единственная проблема заключается в том, что нельзя объявить favorite_child_id как n NOT NULL и child.parent_id как NOT NULL. Если вы это сделаете, вы окажетесь в ситуации, когда вы не сможете добавить значения в таблицу.

В качестве альтернативы можно использовать флаг «is favourite» в дочерней таблице. Может быть сложно убедиться, что точно один ребенок имеет этот установленный флаг.

...