Se set null
é útil ou não, depende do que você escolheu null
significar em um contexto específico - com toda a confusão e opinião em torno da null
IMO, a abordagem sensata é que o DBA
- Escolha (e documente) o que isso significa para cada campo anulável
- Certifique-se de que isso significa apenas uma coisa
Com essas regras, considere o seguinte caso de uso:
- Você tem uma 'loja' de mesa (por exemplo, instalações individuais)
- Você tem uma tabela 'varejista' (por exemplo, cadeias)
- A tabela 'shop' possui um campo de pesquisa referente à chave de 'varejista'
- Você definiu
null
para representar uma loja independente (ou seja, uma que não faz parte de uma cadeia)
- Um 'varejista' fecha filiais a tal ponto que você considera suas lojas independentes
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 ok