Это не необычно и является разумным решением. Например, обычным явлением являются контакты для компании. Один из контактов может быть обозначен как «основной контакт».
Единственная проблема заключается в том, что нельзя объявить favorite_child_id
как n NOT NULL
и child.parent_id
как NOT NULL
. Если вы это сделаете, вы окажетесь в ситуации, когда вы не сможете добавить значения в таблицу.
В качестве альтернативы можно использовать флаг «is favourite» в дочерней таблице. Может быть сложно убедиться, что точно один ребенок имеет этот установленный флаг.