Cuando tiene valores que solo dependen de uno o más campos +/- constantes (por ejemplo, precio minorista & precio de descuento), ¿es mejor almacenar esos valores también o calcular ellos "sobre la marcha" al recuperar los datos?Almacenar valores "derivados" versus calcularlos en la extracción
Respuesta
Estoy de acuerdo con Tomislav: intente evitar la redundancia porque puede terminar con datos en varias tablas que no concuerdan entre sí. Hace que las actualizaciones sean más dolorosas.
Existen excepciones que vale la pena considerar, sin embargo, que no están relacionadas con el rendimiento de la base de datos.
- Cuando doloroso para calcular el valor (por ejemplo, alguna función matemática compleja), entonces tiene sentido para almacenar (se podía imaginar la columna como el 'último valor calculado').
- Es posible que tenga entradas que cambian con el tiempo, p. la tarifa se deriva de una tasa de tarifa, pero la tasa de tarifa se almacena como un valor único en una tabla de configuración. Es posible que desee registrar la tarifa porque las tasas históricas solo se calcularán a partir de la tarifa actual. Alternativamente, también puede almacenar la tasa por tiempo para evitar este problema.
- Si el valor derivado puede ser anulado por la entrada del usuario o algún otro proceso, entonces tiene sentido almacenar. Alternativamente, puede modelar esto con dos estados 'CALCULATED' y 'OVERRIDDEN', para que solo almacene un valor en este último estado.
El valor predeterminado no es almacenar información redundante: el third normal form suele ser un objetivo inicial sensato. La redundancia se introduce cuando aparece una razón "suficientemente buena", como un golpe de rendimiento "lo suficientemente grande" que se toma cuando se tiene que calcular un valor derivado y el cálculo es intensivo.
Obviamente, "lo suficientemente bueno" y "suficientemente grande" son calificadores que solo significan algo en un contexto dado. Por lo que vale, el cálculo del precio minorista/descuento parece demasiado barato y simple de hacer para garantizar la introducción de una columna redundante en la mayoría de los casos (obviamente no en todos).
- 1. BeautifulSoup - la extracción de valores de atributos
- 2. En una base de datos, ¿cuándo debe almacenar los datos derivados?
- 3. Almacenar valores booleanos en SQL?
- 4. Derivados en C/C++?
- 5. PHP matriz - Extracción de valores vacíos
- 6. Derivados en Java?
- 7. Matrices y tipos derivados
- 8. derivados simbólicos y la simplificación en I
- 9. almacenar valores de tic toc en I
- 10. ¿Cómo almacenar valores decimales en SQL Server?
- 11. Android: dónde almacenar contenido descargado, almacenamiento interno versus externo?
- 12. Cómo almacenar valores enum en un NSMutableArray
- 13. cómo almacenar valores BigInteger en la base de datos Oracle
- 14. pymssql versus pyodbc versus adodbapi versus ...
- 15. Descubriendo tipos derivados utilizando la reflexión
- 16. Almacenar y recuperar valores de web.config
- 17. Traducción de CSS versus cambio de valores de posicionamiento absoluto
- 18. ¿Cuál sería la forma más segura de almacenar objetos de clases derivados de una interfaz común en un contenedor común?
- 19. _Expand versus new versus GNU
- 20. metaphone versus soundex versus NYSIIS
- 21. Control.ResolveUrl versus Control.ResolveClientUrl versus VirtualPathUtility.ToAbsolute
- 22. ¿Puedo anular con tipos derivados?
- 23. Android: ¿cómo almacenar los valores variables en el registro?
- 24. Enfoques para almacenar en caché los valores calculados
- 25. ¿Qué son los archivos derivados en Eclipse?
- 26. Cómo almacenar los valores de NSTimeInterval en un NSMutableArray?
- 27. ¿Cómo puedo almacenar múltiples valores en una tabla hash Perl?
- 28. ¿Qué rango de valores pueden almacenar tipos enteros en C++
- 29. Cómo almacenar los valores de CGRect en NSMutableArray?
- 30. ¿Cómo almacenar valores del bucle foreach en una matriz?
Hm. Los casos 2 y 3 en realidad no tienen nada que ver con la redundancia, porque en ambos casos de uso la información se vuelve única, es decir, no redundante por definición. –
@ TomislavNakic-Alfirevic A veces ayuda observar los casos adyacentes que se ven (y algunos podrían suponer) lo mismo. Pero tienes toda la razón. –
Lo suficientemente justo ... –