Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
MATERIA: Sistemas de datos – Catedra Chinkes PROFESOR: Gustavo Schneider UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS ECONÓMICAS NUMERO REGISTRO: APELLIDO Y NOMBRE: Primer Cuatrimestre de 2022 Segundo Parcial – TEMA 1 1 de 5 1. Considerando el siguiente Diagrama de Entidad-Relación, elija la cantidad que desee de las consignas y arme la/s consulta/s que los respondan, considerando que podrá sumar un puntaje máximo de 60/100. Si en una consigna la resuelve con más de una consulta, estas deberán estar ordenadas según su ejecución. Todas las claves foráneas están configuradas en modo RESTRICT. No dejan eliminar/actualizar registros referenciados. *Todas las incompatibilidades están registradas en ambas direcciones. Es decir, si las especies 35 y 109 son incompatibles, en la tabla EspecieIncompatibilidad ambos de los siguientes registros están incluidos: IdEspecie IdEspecieIncompatible 35 109 109 35 MATERIA: Sistemas de datos – Catedra Chinkes PROFESOR: Gustavo Schneider UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS ECONÓMICAS NUMERO REGISTRO: APELLIDO Y NOMBRE: Primer Cuatrimestre de 2022 Segundo Parcial – TEMA 1 2 de 5 a. Consultas de dificultad media (Cada una vale 5 puntos) a- Arme una lista indicando Nombre de dinosaurio, su expectativa de vida y la descripción de su tipo de alimentación. b- Armé una lista de las exhibiciones con más de 5 especies. c- Arme una lista indicando todos los Id de Dinosaurio y, si corresponde, la exhibición a la que están asignados d- ¿Cuál es el promedio de la cantidad de personas afectadas por accidente? e- Arme un SP que reciba un Id de Dinosaurio y devuelva el Id y fecha de todos los accidentes en los que estuvo involucrado. f- Arme una lista de todas las especies que comen carne (recuerde que las descripciones de los tipos de alimentación son “Carnívoro”, “Hervívoro” y “Omnívoro”) g- Arme una lista de las especies que son compatibles con todas las otras especies (Es decir, que no tienen ninguna incompatibilidad con otra especie). h- Para testear, se generó una especie con código 9999. Con ella, se generaron dinosaurios y composiciones, pero no incompatibilidades. Elimine todos los datos asociados. i- Arme una lista de las exhibiciones que se encuentren habilitadas (habilitada =1) y que tengan al menos un dinosaurio asignado j- Arme un SP que reciba dos parámetros: IdDinosaurio y FechaMuerte. El SP debe actualizar el registro, registrando la fecha de muerte y desasignando el dinosaurio de cualquier exhibición a la que estuviera asignada. b. Consultas de dificultad alta (Cada una vale 10 puntos) k- Arme una lista de todas las exhibiciones habilitadas con al menos 3 especies carnívoras. l- Arme un trigger que, ante la inserción de un registro en especie incompatibilidad, haga la inserción de su contraparte (Si se insertan A es incompatible con B, debe insertar B es incompatible con A). m- Arme una lista de exhibiciones que no respeten las cantidades máximas determinadas para las especies asignadas. n- Arme una lista de exhibiciones que no respeten las incompatibilidades de sus especies asignadas. o- Considerando que exista un atributo llamado “CantidadDinosauriosAsignados” en la tabla Exhibición, arme un trigger que mantenga la columna actualizada. Idealmente, el trigger solo debiera actualizar las exhibiciones involucradas. p- Considerando que la fechahoramuerte es un atributo optativo, ¿cuál es el dinosaurio más viejo del parque? q- ¿Cuál es la cantidad promedio de dinosaurios involucrados por accidente? r- Arme una lista con las siguientes columnas: Descripción (del tipo visita), IdExhibición primera exhibición, IdExhibición segunda exhibición y IdExhibición tercera exhibición. s- Arme un trigger que no permita asignar un dinosaurio muerto a una exhibición. Recuerde utilizar la sentencia “ROLLBACK TRANSACTION” para cancelar la operación t- Arme una lista con el nombre de todas las exhibiciones que no tengan a ningún dinosaurio asignado que haya estado involucrado en un accidente. a- SELECT D.Nombre, E.ExoectativaVida, TA.Descripción FROM Dinosaurio D inner join Especie E on E.idespecie = D.idespecie inner join TipoAlimentación TA on TA.IdTipoAlimentación = E.IdTipoAlimentación b- SELECT IdExhibición FROM ExhibiciónComposición GROUP BY IdExhibición HAVING COUNT(1) > 5 MATERIA: Sistemas de datos – Catedra Chinkes PROFESOR: Gustavo Schneider UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS ECONÓMICAS NUMERO REGISTRO: APELLIDO Y NOMBRE: Primer Cuatrimestre de 2022 Segundo Parcial – TEMA 1 3 de 5 c- SELECT D.IdDinosaurio, E.nombre FROM Dinosaurio D left join Exhibición E on D.IdExhibición = E.IdExhibición d- SELECT AVG(CantPersonasAfectadas) FROM Accidente e- CREATE PROCEDURE MuestraAccidentes (@IdDino char(8)) AS SELECT A.IdAccidente, A.Fecha FROM Accidente A inner join AccidenteDinosaurio AD on AD.IdAccidente = A.IdAccidente f- SELECT IdEspecie from Especie E inner join TipoAlimentación TA on TA.idEspecie = E.IdEspecie WHERE TA.Descripción in ('Carnívoro','Omnívoro') --Se puede hacer con dos condiciones de = y un OR g- SELECT IdEspecie FROM Especie WHERE IdEspecie not in (SELECT IdEspecie FROM EspecieIncompatibilidad) h- DELETE FROM ExhibiciónComposición WHERE IdEspecie = 9999 DELETE FROM Dinosaurio WHERE IdEspecie = 9999 DELETE FROM Especie WHERE IdEspecie = 9999 i- SELECT E.IdExhibición FROM Exhibición E WHERE Habilitada = 1 and E.IdExhibición in (SELECT IdExhibición FROM Dinosaurio) --También se puede hacer con un INNER JOIN j- CREATE PROCEDURE MuerteDino (@IdDino char(8), @FechaHoraMuerte Datetime) AS UPDATE Dinosaurio SET FechaHoraMuerte = @FechaHoraMuerte, IdExhibición = NULL, FechaAsignación = NULL WHERE IdDinosaurio = @IdDino k- SELECT E.IdExhibición FROM Exhibición E INNER JOIN ExhibiciónComposición EC on EC.IdExhibición = E.IdExhibición INNNER JOIN Especie E on E.IdEspecie = EC.IdEspecie INNER JOIN TipoAlimentación TA on TA.IdTipoAlimentación = E.IdTipoAlimentación WHERE E.Habilitada = 1 AND TA.Descripción like 'Carnívoro' GROUP BY IdExhibición HAVING COUNT(1) >= 3 l- CREATE TRIGGER Incompatibilidad FOR INSERT on EspecieIncompatibilidad as MATERIA: Sistemas de datos – Catedra Chinkes PROFESOR: Gustavo Schneider UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS ECONÓMICAS NUMERO REGISTRO: APELLIDO Y NOMBRE: Primer Cuatrimestre de 2022 Segundo Parcial – TEMA 1 4 de 5 INSERT INTO EspecieIncompatibilidad(IdEspecie, IdEspecieIncompatible) SELECT IdEspecieIncompatible, IdEspecie FROM INSERTED --Se puede hacer con VALUES y 2 subconsultas sobre INSERTED m- SELECT EC.IdExhibición, EC.IdEspecie FROM ExhibiciónComposición EC WHERE EC.CantidadMáxima < (SELECT COUNT(1) FROM Dinosaurio D WHERE D.IdExhibición = EC.IdExhibición AND D.IdEspecie = EC.IdEspecie) n- SELECT DISTINCT D.IdExhibición FROM Dinosaurio D INNER JOIN EspecieIncompatibilidad EI on EI.IdEspecie = D.IdEspecie WHERE EXISTS (SELECT 1 FROM Dinosaurio DI WHERE D.IdExhibición = DI.IdExhibición AND DI.IdEspecie = EI.IdEspecieIncompatible) o- CREATE TRIGGER CantDinoAsig for INSERT, UPDATE, DELETE on Dinosaurio as UPDATE Exhibición SET CantidadDinosauriosAsignados = (SELECT COUNT(1) from Dinosaurio D WHERE D.IdExhibición = Exhibición.IdExhibición) WHERE IdExhibición in (SELECT IdExhibición FROM INSERTED UNION SELECT IdExhibición FROM DELETED) p- SELECT D.IdDinosaurio FROM Dinosaurio WHERE FechaHoraMuerte is NULL AND FechHoraEclosión = (SELECT MIN(FechaHoraEclosión) FROM Dinosaurio D WHERE FechaHoraMuerte IS NULL) q- SELECT AVG(Cant) FROM (SELECT IdAccidente, COUNT(1) as Cant FROM AccidenteDinosaurio GROUP BY IdAccidente) r- SELECT TV.Descripción, (SELECT IdExchibición FROM TipoVisitaExhibición TVE WHERE TVE.IdTipoVisita = TV.IdTipoVisita AND Orden = 1), (SELECT IdExchibiciónFROM TipoVisitaExhibición TVE WHERE TVE.IdTipoVisita = TV.IdTipoVisita AND Orden = 2), (SELECT IdExchibición FROM TipoVisitaExhibición TVE WHERE TVE.IdTipoVisita = TV.IdTipoVisita AND Orden = 3) FROM TipoVisita TV s- CREATE TRIGGER ValidaciónDinoMuerto FOR INSERT, UPDATE on Dinosaurio AS IF EXISTS (SELECT 1 FROM INSERTED WHERE FECHA_HORA_MUERTE IS NOT NULL AND IdExhibición is not null) ROLLBACK TRANSACTION MATERIA: Sistemas de datos – Catedra Chinkes PROFESOR: Gustavo Schneider UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS ECONÓMICAS NUMERO REGISTRO: APELLIDO Y NOMBRE: Primer Cuatrimestre de 2022 Segundo Parcial – TEMA 1 5 de 5 t- SELECT * FROM Exhibición E WHERE NOT EXISTS (SELECT 1 FROM Dinosaurio D INNER JOIN AccidenteDinosaurio AD on AD.IdDinosaurio = D.IdDinosaurio WHERE D.IdExhibición = E.IdExhibición)
Compartir