Diseño de Base de Datos

Hola, quien sea que me conteste, muchas gracias de antemano.
(Mi aplicación esta hecha en VB6, no se si sea importante)
Lo que pasa es que tengo tres tablas llamadas Productos, Ventas y Compras. En Productos almaceno la cantidad de Produxctos en existencia y cada vez que se hace una Venta esta cantidad disminuye y cuando hago una Compra pues obviamente aumenta.
Bueno a parte de eso tengo que mostrar en pantalla las Ventas y Compras que se han hecho, pero bueno ahí viene mi duda. Es que tengo un botón de eliminar Productos y pues los borra eso que ni que; el problema viene que si por ejemplo, el usuario borra HOY un producto que se acaba de vender AYER (no impotrtandole que aun hay existencias de ese producto), entonces al momento que yo quiera mostrar en pantalla las ventas de Ayer entonces cuando quiera jalar las características de ese producto borrado de seguro me va a marcar error o simplemente no me va a mostrar nada. (Igual aplica para las compras)
La pregunta es ¿qué debo hacer?: Quitar el botón de borrar, o manejar en la tabla una fecha de alta y de baja. O como le hago ¿?. Que me recomienda

1 Respuesta

Respuesta
1
En bases relacionales si las restricciones (protecciones a nivel de la base misma) están bien definidas y configuradas, el mismo motor de base de datos no te va a permitir borrar un producto que está enganchado a compras y/o ventas, excepto que expresamente se le indique que al borrar un producto se realice un "borrado en cascada" que es en pocas palabras borrar TODO rastro del producto borrado.
Si se quiere mantener historia, es muy conveniente aplicar las restricciones para evitar borrados accidentales (errar es humano) y si quiere darse de baja un producto se instrumenta el mecanismo de "baja lógica" o sea ponerle al producto una fecha de baja.
Esto tiene la ventaja de que si se quiere ver los productos actuales se filtra por aquellos que no tengan fecha de baja y si se quiere ver historia no se perdió la información de los productos dados de baja.
La desventaja (aunque no nada grave) NO se pueden reusar códigos de productos. Si un producto fue A y se da de baja. A queda inutilizado para otro producto. Entonces deberemos darle otro código aunque sea un producto similar si no igual en modelo más nuevo por ej. Para la base sera un NUEVO producto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas