Las tablas no tienen rendimiento. Las consultas tienen rendimiento.
Si un diseño desnormalizado o normalizado para una tabla es mejor depende completamente de las consultas que vaya a ejecutar con esos datos.
Básicamente, existen tres propósitos para desnormalizar datos:
- Para almacenar resultados precalculados de expresiones costosas, para que no tenga que calcular las expresiones en SQL cada vez que realice una consulta.
- Para almacenar resultados agregados resumidos previamente, como los totales de COUNT () y SUM (), para que no tenga que ejecutar consultas GROUP BY con tanta frecuencia.
- Para almacenar copias redundantes de datos en una tabla relacionada, para que no tenga que ejecutar consultas JOIN con tanta frecuencia.
¿Vale la pena almacenar los datos de forma desnormalizada? Depende de la frecuencia con la que ejecuta consultas que aprovechan la desnormalización, en comparación con la frecuencia con la que ejecuta consultas que no se benefician de ella, y también cuánto trabajo es para mantener la integridad de los datos desnormalizados.
- ¿Por qué necesito abrazarme tanto y ser adicto a la piel y al olor?
- Mi padre piensa que la educación no es importante. ¿Cuánta verdad hay en eso?
- Compré 75 acciones de una acción por $ 100. Ahora solo tengo 3 acciones de $ 5. ¿Por qué mi volumen de acciones bajó de 75 a 3?
- Yo creo en la astrología. Hay Daridra yoga en mi Janam Kundli debido a la presencia de Saturno en la casa 12. También tengo Raja yoga debido al sol y la luna en la cuarta casa. ¿Se cancelará mi yoga Daridra?
- Me mudaré a Nueva York para un nuevo trabajo. ¿Debo vender mi auto prestado que todavía tiene un plazo de 2.5 años?
Cuando almacena datos de forma desnormalizada, asume la responsabilidad de mantener sincronizados los resultados previamente consultados con los datos originales. Por ejemplo, si un usuario de su sistema de comercio electrónico compra otro libro, también tiene que escribir un código para aumentar el total de su carrito de compras, si almacenó ese total de forma desnormalizada.
Pero si no recuerda hacer esta actualización a la perfección, entonces comienza a obtener los totales del carrito de compras que no suman el mismo valor que la suma de los pedidos individuales de ese usuario. Estos casos se llaman anomalías de datos .
Almacenar datos de manera normalizada tiene otras ventajas para simplificar su código. Almacena cualquier pieza de datos solo en un lugar. No tiene que escribir secuencias de comandos periódicas para “limpiar” sus anomalías de datos, porque nunca se confunde.