Resumo do que vi até agora:
- Algumas pessoas não gostam de cascata.
Exclusão em cascata
- A exclusão em cascata pode fazer sentido quando a semântica do relacionamento pode envolver um exclusivo "faz parte de Por exemplo, um registro OrderLine faz parte de seu pedido pai e OrderLines nunca será compartilhado entre vários pedidos. Se o pedido desaparecesse, o OrderLine também deveria, e uma linha sem um pedido seria um problema.
- O exemplo canônico para exclusão em cascata é SomeObject e SomeObjectItems, onde não faz sentido que um registro de itens exista sem um registro principal correspondente.
- Você não use Cascade Delete se você estiver preservando o histórico ou usando uma "exclusão suave/lógica" onde você define apenas uma coluna de bits excluída como 1/true.
Atualização em cascata
- A atualização em cascata pode fazer sentido quando você usa uma chave real em vez de uma chave substituta (coluna de identidade/incremento automático) nas tabelas.
- O exemplo canônico para atualização em cascata é quando você tem uma chave estrangeira mutável, como um nome de usuário que pode ser alterado.
- Você não use o Cascade Update com chaves que são colunas de identidade/incremento automático.
- A atualização em cascata é melhor usada em conjunto com uma restrição exclusiva.
Quando usar cascata
- Você pode querer receber uma confirmação extra forte do usuário antes de permitir que uma operação seja colocada em cascata, mas isso depende do seu aplicativo.
- O uso de cascata pode causar problemas se você configurar suas chaves estrangeiras incorretamente. Mas você deve ficar bem se fizer isso corretamente.
- Não é aconselhável usar cascata antes de entendê-lo completamente. No entanto, é um recurso útil e, portanto, vale a pena dedicar um tempo para entender.