Inicio > Bases de datos > gmenendez > Diseño de Base de Datos

Diseño de Base de Datos

Experto:
Usuario:
Fecha: 20/05/2008
Valoración: (4,00 sobre 5) Categoría: Bases de datos
15/05/2008
kenshin64, usuario preguntando en Bases de datos
Usuario
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 ahi viene mi duda. Es que tengo un boton 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 caracteristicas 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 ¿que 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
15/05/2008
kenshin64, experto respondiendo en Bases de datos
Experto
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" ó 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.
20/05/2008
kenshin64, usuario preguntando en Bases de datos
Usuario
Muchas gracias, muy bien tu respuesta.

Thanks
Enlaces patrocinados