miércoles, 8 de junio de 2011

Performance.

Durante el repaso de los ejercicios de la BD Facultad "saltó" la liebre de la doble relación de claves foráneas que tiene la tabla "RECOMENDACIONES".

Como todos recordaréis yo sostuve que mantener dos claves foráneas en una tabla compuesta por dos campos no tenía mucho sentido.

Cité, sin haberlo visto en PostgreSQL pero si en otros motores, que para resolver cualquier solicitud de datos relacionada con el segundo campo de la tabla "RECOMENDACIONES", lo más lógico sería acudir a la creación de una tabla temporal que estableciese el nexo necesario entre las tablas involucradas...

Esto condujo a que se pidiese resolver una consulta que permitiese ver los nombres de la asignatura y de la recomendación.

He aqui la solución:

Se elimina la segunda clave foránea de la tabla "RECOMENDACIONES", por innecesaria.

Se crea una tabla "TEMPORAL" que tenga tres campos, conteniendo como primer campo el código de la asignatura recomendada y como segundo campo el nombre de la asignatura que la recomienda, dejando el tercero para una actualización posterior, pues en la misma sql no es posible (o al menos yo no lo he descubierto), anidar más de un SELECT como origen del INSERT INTO.

Finalmente se actualiza la tabla "TEMPORAL", cargando el tercer campo utilizando un WHERE que relacione las tablas "TEMPORAL" y "ASIGNATURA".

El resultado en la imagen.

1 comentario:

  1. No tengo las tablas en casa, asi que cuando llegue a clase intentare entender de que ejercicio estas hablando :) Personalmente no encontre mucha dificultad en esa relacion de ejercicios, a ver si me he equivocado... :O

    ResponderEliminar