Felipe Cano O. facano@uc.cl Ejercicio 1: Ejercicio 1: Dado el modelo E-R: Determine el modelo relacional. Ejercicio 1: Ejercicio 1: Modelo Relacional: persona(id_conductor, nombre, direccin) coche(matrcula, ao, modelo, id_dueo) coche(matrcula, ao, modelo, id_dueo) accidente(nmero_parte, lugar, fecha) participa(matrcula_coche, parte_accidente, importe_daos) Ejercicio 1: Ejercicio 1: Vamos con un poco de SQL ahora Ejercicio 2: Ejercicio 2: Dado el siguiente modelo relacional: Determine las siguientes consultas utilizando algebra relacional. Ejercicio 2 Ejercicio 2 Mostrar el nombre y el salario de todos los empleados que no son pilotos. Ejercicio 2 Ejercicio 2 Mostrar el nombre y el salario de todos los empleados que no son pilotos. <nombreEmpleado, Salario> (Empleado <idEmpleado, nombreEmpleado, Salario>(Empleado |><|Certificado)) La idea, es obtener los pilotos de Empleado, y con ellos, hacerle una diferencia de conjuntos a la totalidad de Empleado, para poder obtener los elementos que no son pilotos y con ello hacer las proyecciones pertinentes. Ejercicio 2 Ejercicio 2 Lista los identificadores de todos los aviones que pueden ser usados en vuelos directos desde Bonn hacia Madrid (suponga distancias nicas). Ejercicio 2 Ejercicio 2 Lista los identificadores de todos los aviones que pueden ser usados en vuelos directos desde Bonn hacia Madrid (suponga distancias nicas). <idAvion> (Avion |><| Distancia=distanciaVuelo <origen=Bonn & <idAvion> (Avion |><| Distancia=distanciaVuelo <origen=Bonn & Destino=madrid> (Vuelo)) En este caso usamos la distancias nicas como identificadores para cruzar las tablas y obtener la informacin pedida. Ejercicio 2 Ejercicio 2 Mostrar los nombres de los pilotos que pueden operar aviones con una distancia de vuelo mayor a 3000 millas, pero que no son certificados en ningn avin Boeing. Ejercicio 2 Ejercicio 2 Mostrar los nombres de los pilotos que pueden operar aviones con una distancia de vuelo mayor a 3000 millas, pero que no son certificados en ningn avin Boeing. (Empleado ( Certificado ( <nombreEmpleado> (Empleado |><|( Certificado |><|( <distanciaVuelo>3000 & marcaAvion<>Boeing> (Avion)))) Para esta consulta, simplemente hay que juntar con Joins la relaciones, para las tuplas que cumplan la condicin de la seleccin sobre Avion. Ejercicio 2 Ejercicio 2 Lista los nmeros de vuelo que pueden ser piloteados por algn piloto cuyo salario es mayor que 5000. Ejercicio 2 Ejercicio 2 Lista los nmeros de vuelo que pueden ser piloteados por algn piloto cuyo salario es mayor que 5000. <NroVuelo> (Vuelo|><|Distancia=distanciaVuelo ( Avion|><| (Certificado (Empleado)))) (Certificado |><| <salario>5000>(Empleado)))) Este caso lo resolvemos como el anterior, usando Joins sobre tuplas que cumplen las condiciones pedidas de salarios en Empleados. Ejercicio 2 Ejercicio 2 Mostrar el cdigo del empleado que percibe el salario mas alto. Ejercicio 2 Ejercicio 2 Mostrar el cdigo del empleado que percibe el salario mas alto. <idEmpleado> (<idEmpleado, Salario>(Empleado) - <E.idEmpleado, E.Salario> (<E.salario<E.salario>(Empleado X Empleado)))) Empleado)))) La idea en ste ejercicio es realizar un producto cartesiano entre Empleado consigo mismo, pero dejando solo aquellas tuplas en que salario de mas a la izquierda es mayor al salario de la derecha. Con ello nos aseguramos que el mximo salario nunca quede en la derecha (por la desigualdad estricta), lo que nos permite hacer resta de conjuntos con Empleado para obtener el mximo, y con l obtenemos el id del empleado que lo acompaa.