Cita: ¿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?
Por regla universal, no se guardan valores calculables. Es decir, no se ponen totales. Sólo lo que se necesita para reconstruir los datos. Sólo guardas datos calculados cuando almacenas ciertas informaciones que no se modificarán jamás (datawarehouses, por caso).
Pero en definitiva es algo que depende de lo que se está diseñando. Sin un relevamiento del sistema que se necesita no se puede asegurar nada.
Cita: 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?
Eso es un tema algo complejo. No hay un manual práctico ni existe una única forma de diseñarlo.
Prácticamente hay tantas formas de hacerlo como sistemas hay en el mundo. Una de las soluciones tiene que ver con la creación de listas de precios, a las cuales la factura está asociada, por ejemplo.