Provavelmente estou com uma mente estreita, mas se eu criar uma restrição de chave estrangeira e uma linha for atualizada ou excluída, perderei essa conexão se a coluna da tabela filho for definida como NULL.
Qual é o objetivo de manter intencionalmente essas linhas órfãs?
foreign-key
null
Derek Downey
fonte
fonte
Respostas:
Se
set null
é útil ou não, depende do que você escolheunull
significar em um contexto específico - com toda a confusão e opinião em torno danull
IMO, a abordagem sensata é que o DBACom essas regras, considere o seguinte caso de uso:
null
para representar uma loja independente (ou seja, uma que não faz parte de uma cadeia)Nesse caso, um
on delete set null
faz sentido. Existem outras maneiras de modelar essas regras de negócios, mas essa é a mais simples e se ela se encaixa com precisão nos fatos de que você se importa no mundo real, sugiro que esteja perfeitamente okfonte
A maioria dos casos de uso em que consigo pensar geralmente tem a forma "Bem, poderíamos fazer algo diferente, mas sentimos vontade de fazer isso".
Considere um
owner
campo para um bug em um sistema de rastreamento de problemas em uma empresa. Se John sair, certamente todos os seus problemas não devem ser excluídos simplesmente quando sua conta for removida. Mesmo assim, alguns bancos de dados permitemSET DEFAULT
como uma ação (ou um gatilho executa a mesma tarefa), e ter umNobody
funcionário como proprietário padrão de problemas pode ser uma opção. Ou poderíamos ter umdisabled
campo para John em vez de excluir seu registro.fonte
RESTRICT
), se por nenhum outro motivo isso culpar um funcionário antigo quando algo der errado com ele!