RE:Casi eliminacion en cascada
Las tablas de históricos es una de las alternativas, sin duda. Ya sea para los movimientos de una entidad o para la propia entidad o para ambas. Lo que no me gusta mucho de esta alternativa es la implementación de reportes generales, para traer la información 'viva' junto con la información 'histórica'.
Es cierto que pocas veces se requerirá traer la información de lo que ya es historia, pero cuando se requiere junto con la actual, se hacen operaciones más lentas, por ejemplo en el caso de presupuestos definidos por tendencias, factores de crecimiento anual, valores al día (sea de hoy, sea de hace años), depreciación de activos, entre otros. Será que el comando 'union' no es de mis favoritos.
Ahora, reconozco que en cierto momento, he llegado a tener tablas enormes, como ejemplo, la de detalles de documentos, que normalmente hago para que guarde todas las partidas de los ducumentos de cargo o abono (facturas, notas de crédito, remisiones, documentos por pagar, etc), que guardan muchas partidas canceladas, que sin embargo, han probado ser útiles cuando, por ejemplo, un cliente ha cancelado una de las partidas y a los 2 días dice que siempre si quiere comprar, o cuando se deben cancelar y rehacer facturas, para mantener íntegros los documentos fiscales, tanto los declarables como los cancelados, con la información en la base de datos.
Las tablas históricas, en mi caso, las he implementado para llevar control de cambios en situaciones específicas, como aumentos de sueldo, cambios en puntos de re-orden, versiones de planeación, entre otras, para analizar las tendencias y reuso de dichos datos.
Por fortuna, nada es absoluto e incluso puede implementarse de otra manera: Manteniendo los globales (totales, cuentas, promedios, según sea el caso) de las entidades, sea que estén vivas o dadas de baja, en tablas específicas y obteniendo de ahí la información requerida. Esto en casos específicos, como la información fiscal no relevante luego de 5 años o capacidad de almacenaje, luego de comprar/vender o arrendar almacenes, puede llegar a ser más útil y con menos requerimientos de espacio, además de construir reportes más rápidos.
Todo esto, como siempre, depende del análisis de alcance de los sistemas y la definición de la información relevante de la empresa, además de las estratégias de integridad y mantenimiento de la base de datos. Lo reconfortante es encontrar personas con quien debatir a este nivel estas cuestiones.
Saludos.