Apenas tentando ter algumas idéias sobre o que as pessoas fazem para esse cenário. Temos um banco de dados do sistema (SQL Server 2008 R2) que possui tabelas e cada tabela possui um campo que podemos chamar de "Excluídos". Basicamente, é um campo de bits se for um 1 o registro for excluído, se for um 0, não será excluído. O campo não é anulável e seu padrão é obviamente 0.
Não podemos permitir exclusões reais no banco de dados; portanto, para contornar isso, definimos um campo de bit (Excluído) como true. Em nossa aplicação, terminamos com consultas parecidas com esta:
SELECT blah FROM MyTable WHERE .. AND Deleted=0
Basicamente, filtramos os registros para obter apenas linhas não excluídas. Nosso problema está nos registros relacionados que precisam ser conectados em cascata. O que as pessoas preferem, deveríamos fazer isso no código do servidor para que, quando você exclua um registro, ele exclua (Define o campo de bit excluído como true) para todos os registros relacionados? Ou isso deve ser um gatilho que deve verificar esse campo e definir o campo de bit para todos os registros relacionados como 1?
Ou estamos completamente no caminho errado?