Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Información permanente

Estas en el tema de Información permanente en el foro de Mysql en Foros del Web. Hola, buen día. No he encontrado alguna solución que me satisfaga por completo y a través de internet no he encontrado información sobre el tema ...
  #1 (permalink)  
Antiguo 28/03/2013, 02:12
 
Fecha de Ingreso: julio-2005
Mensajes: 2
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Información permanente

Hola, buen día.

No he encontrado alguna solución que me satisfaga por completo y a través de internet no he encontrado información sobre el tema probablemente porque no he sabia exactamente que buscar. Les comparto el problema para ver si me pueden ayudar a encontrar una solución factible.

El problema consiste en que tengo una base de datos con una tabla de productos, descuentos, clientes, vendedores, pagos, cobros y facturas. Al momento de crear una factura la enlazo con un cliente, productos y un vendedor, el problema radica en que si yo realizo una modificación en el precio del producto, las facturas que ya fueron expedidas se modificarán y entonces si un usuario desea imprimir o consultar una factura anterior estará modificada y eso no es lo que desearía el usuario.

Lo que se quiere es que si visito la factura de hace un año, la factura refleje el total y los precios de cuando se realizó, no de ahora.

Saludos.
  #2 (permalink)  
Antiguo 28/03/2013, 05:16
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Información permanente

Eso requiere un esquema algo elaborado, donde se tenga una tabla (por lo menos) en que se registran listas de precios de cada producto para un momento dado del tiempo. La factura debería contar con un campo adicional (en la cabecera, no en el detalle), que sería FK de la lista usada para esa venta.
La tabla en cuestión sería en realidad una composición de dos tablas: La cabecera, que indica su ID, fecha de inicio y fin de vigencia, y la de detalle que tendría el ID de lista, el ID del producto y el precio aplicado para la lista.
Con un poco más de extensión puedes tratar incluso listas concurrentes para ser usadas en ventas promocionales, ofertas por periodo y hasta promociones por período horario.
La cosa no es muy difícil, pero te obligará a cambiar muchas consultas que estás usando para adaptarlas a un nuevo modelado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/03/2013, 14:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Información permanente

Cita:
Iniciado por eliascm36 Ver Mensaje
Hola, buen día.

El problema consiste en que tengo una base de datos con una tabla de productos, descuentos, clientes, vendedores, pagos, cobros y facturas. Al momento de crear una factura la enlazo con un cliente, productos y un vendedor, el problema radica en que si yo realizo una modificación en el precio del producto, las facturas que ya fueron expedidas se modificarán y entonces si un usuario desea imprimir o consultar una factura anterior estará modificada y eso no es lo que desearía el usuario.

Lo que se quiere es que si visito la factura de hace un año, la factura refleje el total y los precios de cuando se realizó, no de ahora.

Saludos.
Elias, creo que otra solución, sin omitir la de gnzsoloyo, sería, si te permites obviar el concepto de redundancia de datos, agregar un campo a tu tabla facturas que contenga el precio unitario al momento de emitir el documento. De esta manera te aseguras, facilmente, que los datos en tus consultas posteriores sean los verdaderos. Como bien lo dices, el dato sería permanente ante cualquier eventual cambio de precios en la tabla de productos. Lógicamente, tendrías que cambiar un poco tus consultas históricas.

Espero haberte dado una idea. Saludos.
  #4 (permalink)  
Antiguo 28/03/2013, 14:58
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Información permanente

Bueno, no quiero entrar en polémicas, pero eso sería guardar un dato calculable (algo desaconsejado), y de todos modos no resuelve el problema de trazabilidad histórica. Sóo "resuelve" a medias el problema del moto total, pero no el de los precios pagados, por lo que sin posible reconstrucción no resulta funcional a una auditoría.
El modelo que propongo es un poco más exigente en cambio, pero es desde hace mucho uno de los sistemas más usados en toda base de datos de implementación comercial.
No es algo que yo haya inventado.
Es algo ya difundido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/03/2013, 19:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 42
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Información permanente

ESTA MAL MODELADO TUS TABLAS MEN.
Aqui una idea.
Productos
__idproeducto
__producto
__descripcion
detalle
__iddetalle
__idproducto
__p/u
__cantidad
__total
factura
__idfactura
__iddetalle
__idempleado
__fecha
__nrodefactura

SALUDOS.
  #6 (permalink)  
Antiguo 28/03/2013, 21:55
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Información permanente

En efecto, Elías, tienes que tomar en consideración que tu tabla de clientes puede ser modificada tanto en el Id_cliente (código de cliente) como en su nombres-apellidos, etc. Lo mismo la tabla de productos podría ser modificada en id_producto, descripción del producto, asi mismo otras tablas involucradas y relacionadas con la tabla facturas. Cualquiera de estos datos modificados te afectarán tus consultas posteriores, si no encuentras o decides la manera de mantener esos datos, de modo que sean permanentes.
Saludos.

Etiquetas: informacion, permanente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:45.