Nunca utilizo eliminaciones en cascada. ¿Por qué? Porque es muy fácil cometer un error. Mucho más seguro para requerir aplicaciones cliente a explícitamente eliminar (y cumplen con las condiciones para su eliminación, como eliminar FK refirió registros.)
De hecho, las deleciones en sí misma puede ser evitado mediante el marcado de registros como eliminado o se mueve hacia tablas de archivo/historial.
En el caso de marcar registros como eliminado, depende de la proporción relativa de marcado como datos eliminados, ya que SELECT
s tendrán que filtrar en 'isDeleted = false
' un índice sólo será utilizada si menos de 10% (aproximadamente, según el RDBMS) de los registros se marcan como eliminados.
¿Cuál de estos 2 escenarios preferirías:
1) Desarrollador viene a ti, dice "Hey, esto no va a funcionar borrar". Ambos lo investigan y descubren que estaba intentando accidentalmente eliminar todo el contenido de la tabla. Ambos se ríen y vuelven a lo que estaban haciendo.
2) Desarrollador viene a ti, y tímidamente le pregunta "¿Tenemos copias de seguridad?"
Posible duplicado de [¿Cuándo/Por qué usar Cascading en SQL Server?] (Http://stackoverflow.com/questions/59297/when-why-to-use-cascading-in-sql-server). Además, tiendo a estar mucho más de acuerdo con las respuestas de la otra pregunta, que son bastante diferentes de las que están aquí. –