A partir do esquema que você forneceu, posso ver que a restrição de chave estrangeira existe na tabela
parents_children
, o que garantirá que o vínculo entre pai e filho só possa existir se o pai e o filho existirem. No entanto, isso não o impede de inserir uma entrada em
parents
, sem uma entrada de acompanhamento em parents_children
ou para esse assunto children
. Então, em resumo, esse esquema permite que um pai exista, sem um filho.
O problema com sua lógica aqui seria que tanto o pai quanto o filho precisam ser criados antes que o relacionamento possa ser criado em
parents_children
(devido aos relacionamentos de chave estrangeira). No entanto, a lógica adicional que você está procurando (nenhum filho, nenhum pai e vice-versa) exigiria um link entre pai e filho antes que um pai ou filho pudesse ser criado. Você vê o problema da galinha/ovo aqui?