Está en la página 1de 2

Ejercicio 1) a):

La consulta en SQL:

SELECT
nombre
FROM
Catedra, Horarios, Alumno
WHERE
nombre_profesor=Pepe and cargo=titular and turno=noche and
Catedra.codigo_materia=Horarios.codigo_materia and
Horarios.turno=Alumno.turno
La consulta en AR:

nombre (profesor=Pepe & cargo=titular& turno=noche (Catedra (Horarios


Alumno)))
Partimos de la consulta en AR y armamos el rbol donde los nodos intermedios sern los operadores y
las tablas sern las hojas.
En este caso es la raz de all baja un solo hijo porque es una funcin unaria (se aplica sobre una

sola relacin), el hijo es , que tambin es unaria, y luego sigue el primer join natural que una operacin
binaria por lo que tiene dos hijos Profesor y el join natural de lo que sigue y as sucesivamente. Ac va el
dibujo porque es difcil explicarlo con palabras.

nombre
profesor=pepe and cargo=titular and turno= noche

Catedra
Horarios

Alumno

Para optimizar la consulta lo que buscamos es que cada join trabaje con la menor cantidad posible
de registros, entonces lo que hacemos es bajar las proyecciones y las selecciones lo mximo
posible, y adems tratamos de proyectar slo los campos necesarios para los joins y para el
resultado final. De esta manera el rbol anterior nos queda as:

nombre

codigo_materia

profesor= pepe and cargo= titular


Catedra

turno= noche
turno= noche
codigo_materia, turno
Alumno

Horarios
Ahora armamos nuevamente la consulta en AR a partir del nuevo rbol:

nombre ( codigo_materia( profesor= pepe and cargo= titular (Catedra)) ( turno=


noche ( codigo_materia, turno (Horarios)) turno= noche(Alumno)))

También podría gustarte