2010-04-21 6 views

Respuesta

6

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.
+0

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. –

+0

@ 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. –

+0

Lo suficientemente justo ... –

7

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).

Cuestiones relacionadas