Creo que depende de tu situación: por ejemplo, una vez tuve una tabla que contenía la información para generar una factura, como el precio, pero también el valor del IVA en el momento de la emisión de la factura.
El valor del IVA cambia con el tiempo, pero no puede influir en las facturas emitidas anteriormente, por lo que la única forma de evitar problemas era almacenar el valor en sí en lugar de una referencia en una tabla de "valores constantes". Esto, de hecho, produce redundancia de la información dentro de la tabla y posibles "inconsistencias" dentro de la base de datos.
Dicho esto, consideraría con mucho cuidado las razones detrás de su elección de agregar una columna (tenga en cuenta que son solo para hacerlo pensar, no para señalar con el dedo a ninguna parte :)):
- ¿está seguro de que el rendimiento se ve afectado por un par de combinaciones de sus tablas?
- si es así, ¿está seguro de que el problema no se encuentra en otra parte de su diseño?
- ¿siempre necesita el valor de
calculatedPrice
para todos sus productos o puede reducir el número de filas, calculando solo los valores para los productos que realmente necesita?
Si su respuesta es "Sí" para todas las preguntas anteriores, vaya a la columna adicional.
P.D.: En cualquier caso, evitaría cosas como "ejecutar una consulta una vez cada 5 minutos más o menos": esto abre su sistema a problemas de sincronización y problemas de concurrencia. ¿Qué sucedería si el descuento ha cambiado, pero su "consulta de actualización" aún no se ha ejecutado? ¿Entonces su programa recuperaría un valor antiguo?