Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/02/2014, 14:07
Avatar de metratron
metratron
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 15 años, 8 meses
Puntos: 1
campos calculados y cambio de valores futuros

Junto con saludarlos, me gustaría saber como es la mejor manera de estructurar la base de datos.

Tengo que hacer una aplicación de facturas donde tengo las tablas clientes, facturas, detalle_facturas y productos.

Una de las cosas que me gustaría es que en la tabla facturas se guardara en un campo el total de esta, osea el total de todos los productos vendidos. Pero la teoría dice que no se pueden almacenar datos calculados en la BBDD. Que lo mas factible seria que la aplicación sumara los productos cada vez que se llame a la factura y que ademas calcule el impuesto.

Pero esto genera otro problema, ya que al estar relacionadas la tabla facturas con detalle_facturas y productos via "id " y claves foraneas. Al cambiar el precio de algún producto en el futuro, al hacer un SELECT de una factura antigua no le variará el valor de esos productos pasados, ya que todos los valores se cambian en cascada.

Como puedo mantener los valores antiguos de las facturas pasadas en el momento que el usuario cambie los precios de los productos en la actualidad.


Ejemplo (solo si no quedo claro lo de mas arriba)


cada mouse sale 1.000 pesos chilenos en abril del 2010.



Factura 1 30/04/2010

cant Descripcion unitario total

2 mouse 1.000 2.000


iva 19% 380

Total 2.380



se sube el precio de los mouse de 1.000 a 1.500 el abril del 2013 y quiero ver la factura de el 2010




Factura 1 30/04/2010

cant Descripcion unitario total

2 mouse 1.500 3.000


iva 19% 570

Total 3.570

Si le subo el precio al mismo producto al cambiar por cascada, cambiara el valor de las facturas pasadas.

¿Como puedo bloquear el cambio de valores en el pasado?
¿Guardo el total de la factura en la table factura o solo la calculo vía aplicación cada vez que se quiera ver las facturas mas antiguas?


Saludos.