Buenas, tengo una duda de diseño para una base de datos.
Supongamos una tabla padre, en la que sus registros, tienen registros dependientes múltiples en tablas diferentes.
Pongamos un ejemplo:
Tabla padre: Personas.
Tabla dependiente: Direcciones.
Tabla dependiente: Cuentas corrientes.
Tabla dependiente: Comunicaciones.
Así, para una persona, esta puede tener varias direcciones y cuentas corrientes por ejemplo. Típico esquema 1 a N.
Ahora añadamos el concepto de histórico.
Para cada cambio realizado en una persona, tiene que constar el estado anterior al cambio para poder mantener un histórico completo de TODAS las modificaciones.
A la tabla padre, es claro que un 1 a 1 con un Personas_histórico, se soluciona.
La Tabla de histórico replica a la de Personas y se establece una foreign key con el ID de persona desde histórico a personas.
Bien, PERO:
que sucede con las dependientes?
Si se borra una dirección de una persona, por ejemplo, debe constar en el histórico.
Eh aquí mi problema de diseño:
¿Como se mapea esto CORRECTAMENTE respetando las 3 formas normales? BFN en arriba no es necesario...
Es decir, se hacen tablas históricas gemelas de las dependientes y se las hace depender del registro estricto de estas? Esto esta mal teniendo en cuenta que se pueden borrar...
Hay que replicar TODA la estructura para hacer la copia? Es decir, crear otro registro de persona y de todas las tablas dependientes menos del registro eliminado por ejemplo?
Me parece que el histórico, mal diseñado es absolutamente redundante y muy caro a la larga... :\