Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Quando/Por que usar Cascading no SQL Server?


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.