Como puede calcular el valor, con bastante facilidad en este caso, es redundante. Casi nunca debería almacenar datos redundantes. Esto significa que en todos los lugares donde actualice el precio o las personas, debe asegurarse de actualizar el total. Si olvida hacer esto en un solo lugar, los datos ahora son inconsistentes. Supongamos que ahora tiene un registro que dice precio = $ 10, personas = 3, total = $ 40. Si tiene diferentes programas que muestran información de diferentes maneras - diferentes totales o subconjuntos o lo que sea - el usuario podría obtener diferentes respuestas a la misma pregunta dependiendo de cómo lo haya solicitado. Si bien es malo obtener una respuesta incorrecta, es incluso peor que a veces obtener una respuesta correcta y, a veces, una respuesta incorrecta, porque entonces puede no estar claro cómo solucionar el problema. Quiero decir, si veo que cierto cliente muestra a 2 personas cuando debería mostrar 3, presumiblemente hay alguna pantalla a la que puedo acceder, sobreescriba el 2 con un 3, haga clic en guardar o lo que sea, y se soluciona. Pero si dice $ 10 por 2 personas = $ 30, ¿a dónde voy a arreglarlo? ¿Cómo?
Puede decir que el registro solo se actualiza en un solo lugar, por lo que no hay problema. Pero eso es hoy. ¿Qué pasa si mañana usted o algún otro programador agrega una nueva función para hacer un tipo diferente de actualización?
Estoy trabajando en un sistema ahora que está lleno de datos redundantes. La información básica sobre cada uno de los productos de nuestra compañía se almacena en una tabla de "artículos". Para cada unidad en existencia tenemos un registro de existencias, y en lugar de simplemente referirnos al registro del artículo, copian todos los datos de cada unidad de stock. Cuando se vende un artículo, copiamos todos los datos en el registro de venta. Si se devuelve algo, copiamos todos los datos en el registro de devolución. Etc, etc. para muchos otros tipos de registros. Esto causa problemas sin fin. Una vez tuvimos un problema en el que un usuario ejecutaba una consulta en busca de elementos con ciertas características y la lista de resultados incluía elementos que no cumplían los criterios de búsqueda. ¿Por qué? Porque la consulta encuentra todos los registros de elementos que cumplen los criterios de búsqueda, que intenta hacer coincidir los registros de elementos con los registros de stock por número de parte ... pero algunos de los registros de stock no coinciden con el registro de artículo en otros criterios por varias razones. En este momento estoy trabajando para solucionar un problema donde los datos de costos no siempre se copian de los registros de stock a los registros de venta de forma adecuada.Me encantaría rediseñar la base de datos para eliminar toda la información redundante, pero sería un gran proyecto.
Claro, hay momentos en que la penalización de rendimiento para recalcular algunos datos es demasiado alta. Por ejemplo, si necesita leer miles de registros de transacciones para calcular el saldo actual, y quiere mostrar regularmente el saldo actual, puede que sea una carga de rendimiento demasiado alta y será mejor que la almacene de forma redundante. Pero sería muy lento para hacer ese tipo de cosas. Asegúrese de que realmente sea un problema de rendimiento serio.
¿Multiplicar dos números juntos que están en un registro que ya está leyendo? De ninguna manera. No puedo imaginar que eso causaría problemas de rendimiento. Si su motor de base de datos no puede multiplicar dos números en un pequeño porcentaje del tiempo que lleva leer un registro, obtenga un nuevo motor de base de datos.
Esto también es para un proyecto con Rieles ... y la columna de totales se puede sumar en rieles haciendo ... Table.sum ('total'), sin embargo, encontrar la SUMA del producto de dos campos no tendría tal método incorporado. ;-( – holden