Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/07/2012, 19:20
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: duplicar info o hacer inner joins

Duplicar información siempre es una mala idea.
En realidad, ni siquiera necesitas una tabla de "materiales eliminados", sino tener dos campos adicionales: fecha de eliminación y usuario eliminador. La idea es que si un material está activo, ambos campos son NULL; y si se eliminó, tienen datos.
En realidad un sólo campo podría ser suficiente, pero el segundo es buena idea para auditorías (siempre es bueno saber quién metió la pata).
El principio que hay por detrás es que cuando se ingresa un dato a una tabla base, o tabla primaria (aquellas de las que dependen todos los procesos inciales), esos registros jamás se borran. Cuando mucho se desactivan. Y no se borran porque siempre habrá información dependiente de ellos en alguna parte, información que no puede quedar huèrfana. Y como no puedes hacer depender una FK de dos tablas diferentes al mismo tiempo, entonces "pasar" los datos a otra tabla de "eliminados" no es la solución correcta.
¿Se entiende el dilema a nivel de diseño?
Únicamente hay "duplicidades" de datos en los Data Warehouse, y los Data Mart. Pero no en las bases de datos para producción (la de uso).
Toda duplicidad es riesgo de inconsistencia, y una inconsistencia dará resultados catastróficos en algún momento (no es opcional, tarde o temprano sucederá).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)