Pregunta

Estoy diseñando una nueva aplicación en este momento, con una alta relación lectura: escritura. En mi empleador actual tenemos muchos datos denormalizados en nuestras tablas por razones de rendimiento. ¿Es una mejor práctica tener tablas totalmente 3NF y luego usar vistas indexadas para hacer toda la desnormalización? ¿Debo ejecutar consultas en las tablas o vistas?

Un ejemplo de algunas de las cosas que me interesan son los agregados de columnas de tablas secundarias (por ejemplo, tener el recuento de publicaciones del usuario almacenado en algún lugar).

¿Fue útil?

Solución

En general, es una buena idea tener vistas desnormalizadas si necesita acceder a múltiples tablas normalizadas con mucha frecuencia. En la mayoría de los casos, será un aumento significativo del rendimiento en comparación con el uso de una combinación y consultas directas contra las tablas, y generalmente no es menos fácil de mantener, ya que su vista o combinación se puede escribir para ser agnóstico sobre los cambios en las partes de las tablas que no usa.

Si todos sus tablas deben estar en la tercera forma normal es otra cuestión. En la mayoría de las aplicaciones con las que he trabajado, la respuesta es que la mayoría de las tablas deben normalizarse de esta manera, pero hay excepciones. Si hacer una excepción tiene que ver con la forma en que se usan los datos y si puede confiar en que ese uso no cambiará en el futuro.

Tener que regresar y volver a normalizar más tarde porque hizo algo incorrecto puede ser costoso, pero la normalización excesiva de los datos que deberían ser fáciles de usar y comprender puede hacer que las cosas sean más complicadas y difíciles de mantener de lo necesario. . Su kilometraje puede variar.

Otros consejos

Si va a usar vistas para presentar datos desnormalizados al usuario (y está usando SQL Server), debe consultar la cláusula SCHEMABINDING. Si una vista está vinculada a un esquema, puede indexarla y el índice se actualizará cuando se actualicen las tablas subyacentes. De esta forma, si los índices están bien configurados, las personas que buscan datos pueden seleccionar del índice, por lo que no será necesario reconstruir la vista compleja para cada consulta, pero los usuarios seguirán viendo la información actualizada. fecha en que cambian las tablas subyacentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top