Relaciones : Vistas vs Trigers
El título puede resultar raro pero es que la idea -reconozco que- es un poco rara en sí misma.
En resumidas cuentas, para no complicarlo más de lo necesario, … ¿Creeis, o en qué circustancias creeis, que puede ser ventajoso tener una tabla con el resultado de una vista, para consultarla en lugar de consultar la vista?
Es decir, tener un conjunto de tablas relacionadas, con un triger que cuando sucede algún Insert, Update, o Delete, vacían una tabla común y la rellenan con el resultado de la relación de estas tablas.
Principalmente me saltó la duda porque tengo una tabla de Municipios, una de Provincias, una de Paises, y una de Comarcas, lógicamente todas relacionadas entre ellas, y no son datos que cambien a menudo, como mucho añadimos algún municipio de vez en cuando, y me pregunto si tiene sentido estar consultando siempre una vista con todos sus inner join cuando el resultado es el 99.9% de las veces el mismo … y me planteaba que t_Municipios incluya sComarca, sProvincia, sPais y se rellenen con un Trigger …

Bueno, lo que dices tiene sentido aunque no en el caso que estás diciendo (una simple tabla de municipios). Lo cierto es que siempre se ha dicho que hay que normalizar al máximo las tablas para obtener una estructura óptima en el que no se repiten datos.
Esto es válido, claro está, hasta que te encuentras con problemas de rendimiento porque tus vistas mezclan tablas con millones de registros. En ese caso, sí puede ser interesante desnormalizar. O utilizar una solución como la que tú comentas (que mejora las lecturas a cambio de enlentecer las escrituras). Oracle tiene una solución que son las “vistas materializadas”. Son vistas que se definen como vistas pero para las cuales en realidad él crea una tabla temporal con el resultado de la vista y que actualiza cada cierto tiempo.
Juanjo Navarro el February 28th, 2008 a las 11:17 am
El tema es que, para mostrar una vivienda, ya uno t_Viviendas con t_ViviendasTipologia (para saber si es Piso, Chalet, …) y con v_Municipios (que a su vez une t_Municipios, t_Comarcas, t_Provincias, t_Paises) y si además quiero mostrar la primera foto de la galería de imágenes, pues súmale un “SELECT TOP 1″ … yo no puedo, o no sé, cómo valorar el esfuerzo que le supone, pero pensando pensando, las viviendas se actualizan una vez por semana, y los municipios como mucho con la misma frecuencia, mientras que la página tiene miles de visitas al día, … solo por sentido común, … pero bueno, yo quería y agradezco opiniones.
Vale, tampoco nada me obliga a sacar todos los datos con una sola consulta.
Y por ejemplo, lo que pudiera filtrar con un WHERE (separar primera mano de segunda mano) no se me antoja útil partirlo en dos tablas … pero insisto, son todo impresiones mías.
Un saludete J.
albinworld el February 28th, 2008 a las 12:17 pm