Examen Resuelto Septiembre 2010 (2010)

Examen Español
Universidad Universidad Politécnica de Valencia (UPV)
Grado Ingeniería Informática - 3º curso
Asignatura Base de Datos
Año del apunte 2010
Páginas 11
Fecha de subida 26/11/2014
Descargas 4
Subido por

Descripción

Examen resuelto de Base de Datos de Septiembre 2010

Vista previa del texto

EXAMEN DE BASES DE DATOS – 17/09/2010 ESQUEMA DE TRABAJO Sea el siguiente esquema relacional al que se hará referencia como ESQUEMA de TRABAJO, que recoge información sobre la gestión de un conjunto de pinacotecas (museos de pinturas).
PINTURAS (pintura: entero, título: tira(40), autor: entero, año: entero, estilo: tira(20)) CP: {pintura} Uni: {título, autor, año} VNN: {título} CAj: {autor} → AUTORES Borrado a nulos Modificación en cascada AUTORES (autor: entero, nombre: tira(40), siglo: tira(5), país: tira(20)) CP: {autor} VNN: {nombre} MUSEOS (museo: entero, nombre: tira(40), ciudad: tira(20), año: entero, núm_pinturas: entero) CP: {museo} Uni: {nombre, ciudad} ESTAR (pintura: entero, museo: entero, prestada: booleano) CP: {pintura, museo} CAj: {pintura} → PINTURAS Borrado restrictivo Modificación restrictiva CAj: {museo} → MUSEOS Borrado restrictivo Modificación en cascada EXPOSICIONES (exposición: entero, nombre: tira(40), museo: entero, estilo: tira(20), fecha_inicio: fecha, fecha_final: fecha, núm_pinturas: entero) CP: {exposición, museo} CAj: {museo} → MUSEOS Borrado restrictivo Modificación en cascada COMPUESTA (pintura: entero, exposición: entero, museo: entero) CP: {pintura, exposición, museo} CAj: {pintura} → PINTURAS Borrado restrictivo Modificación en cascada CAj: {exposición, museo} → EXPOSICIONES Borrado restrictivo Modificación en cascada Integridad referencial COMPLETA Donde las distintas relaciones y sus atributos tienen el siguiente significado: PINTURAS: de cada pintura se almacena, además de un identificador único (pintura), su título, su autor, el año en que se pintó y su estilo pictórico.
AUTORES: de cada pintor se almacena, además de un identificador único (autor), su nombre, el siglo en que vivió y su país de origen.
MUSEOS: de cada museo se almacena, además de un identificador único (museo), su nombre, su ciudad, su año de inauguración y el número de pinturas de las que es propietario.
ESTAR: indica en qué museos está o ha estado la pintura incluyendo un valor lógico que indica si la pintura es propiedad del museo (prestada = falso) o no (prestada = verdadero).
EXPOSICIONES: de cada exposición temporal que organiza un museo, se almacena un identificador numérico, su nombre, el museo donde se encuentra, el estilo de las pinturas de la exposición, las fechas de inicio y final de la exposición, y el número de pinturas de la exposición.
COMPUESTA: indica si una pintura está expuesta en una exposición, almacenando las referencias a la pintura y a la exposición.
A continuación se incluye una base de datos para el Esquema de trabajo, a la que se llamará BD Pinturas pintura título autor 1 Las Meninas 2 2 El barbero del Papa 2 3 La maja desnuda 1 año 1656 ? 1800 estilo Barroco Barroco Neoclásico 4 Retrato de Isabel Porcel 1 1805 Romántico 5 6 7 El nacimiento de Venus La Gioconda Autorretrato 3 5 2 1484 1506 1650 Renacentista Renacentista Barroco Autores autor nombre 1 Francisco de Goya 2 Diego Velázquez 3 Sandro Botticelli siglo XIX XVII XV país España España Italia 4 Rembrandt XVII Holanda 5 Leonardo Da Vinci XV Italia museo nombre 1 Museo del Prado 2 National Gallery 3 Musée du Louvre Museos ciudad Madrid Londres París año 1819 1824 1793 núm_pinturas 2 1 1 4 Galleria degli Uffizi Florencia 1765 0 5 Museo de Bellas Artes Valencia 1839 0 pintura 1 2 3 Estar museo 1 1 1 4 2 falso 5 6 7 7 4 3 5 3 verdadero verdadero verdadero falso prestada falso verdadero falso Exposiciones exposición nombre museo estilo 1 Velázquez y el barroco 3 Barroco 1 Italia renacentista 2 Renacentista 2 Cubismo alemán 2 Cubista pintura 2 7 5 6 Compuesta exposición museo 1 3 1 3 1 2 1 2 fecha_inicio 01/06/2010 01/09/2010 01/02/2011 fecha_final núm_pinturas 15/12/2010 2 01/04/2011 2 30/09/2011 0 EXAMEN DE BASES DE DATOS – 17/09/2010 PROBLEMAS Dado el ESQUEMA de TRABAJO presentado anteriormente, resuelva los siguientes ejercicios en SQL estándar.
1. Obtener el identificador y el título de todas las pinturas de estilo 'Barroco' de las cuales se desconoce el año en que fueron pintadas. (0,50 puntos) 2. Crear una restricción general, en SQL estándar, para asegurar que todas las pinturas que componen una exposición sean del mismo estilo que el de la exposición. (0,75 puntos) 3. Obtener el nombre de la exposición, el nombre del museo, y las fechas de inicio y fin de la exposición, de las exposiciones que contengan alguna pintura del autor de nombre ‘Botticelli’ y que finalicen antes del '31/12/2010'. (0,50 puntos) 4. Para todos los autores, obtener su identificador, su nombre y el número de estilos de sus pinturas. (0,75 puntos) 5. Obtener el identificador y el nombre de los autores de alguna pintura de estilo renacentista cuyas pinturas no formen parte de ninguna exposición de estilo renacentista. (0,75 puntos) 6. Obtener el identificador y el nombre del autor cuyas pinturas se han incluido en exposiciones en el mayor número de museos. (1 punto) 7. Obtener el identificador y el nombre de los autores españoles tales que todos los museos inaugurados después de 1800 son propietarios de alguna pintura suya. (1 punto) 8. El atributo núm_pinturas en la relación EXPOSICIONES es un atributo derivado, que almacena el número total de pinturas que componen las exposiciones.
a) Además de la modificación de los atributos museo y exposición en la relación COMPUESTA, indicar las operaciones que puedan afectar a dicho atributo derivado.
(0,60 puntos) b) Escribir un disparador para responder a la operación de modificar el atributo museo o el atributo exposición en la relación COMPUESTA. (0,65 puntos) EXAMEN DE BASES DE DATOS – 17/09/2010 CUESTIONARIO - TIPO A Este cuestionario consta de 14 cuestiones; para cada una se proponen cuatro respuestas, de las que sólo una es correcta. La respuesta se debe incluir en la hoja de respuestas que se entrega aparte. La valoración máxima del cuestionario es de 3,5 puntos. La nota obtenida se calcula con la fórmula (Bien_contestadas − Mal_contestadas/3) × 0,25.
1. En la base de datos del esquema de trabajo, si se añade la restricción de integridad: CREATE ASSERTION R1 CHECK (NOT EXISTS (SELECT * FROM Museos M WHERE núm_pinturas <> (SELECT COUNT(*) FROM Estar E WHERE E.museo=M.museo AND E.prestada=falso))) ¿Cuál es el conjunto de operaciones que pueden violar dicha restricción de integridad? a) En MUSEOS: modificar el atributo núm_pinturas, insertar tupla. En ESTAR: modificar el atributo museo, modificar el atributo prestada, borrar tupla, insertar tupla.
b) En MUSEOS: modificar el atributo núm_pinturas, borrar tupla. En ESTAR: modificar el atributo museo, insertar tupla.
c) En MUSEOS: modificar el atributo núm_pinturas, modificar el atributo museo, insertar tupla. En ESTAR: modificar el atributo prestada, borrar tupla, insertar tupla.
d) En MUSEOS: modificar el atributo núm_pinturas, borrar tupla. En ESTAR: modificar el atributo museo, modificar el atributo prestada, insertar tupla.
2. En la base de datos del esquema de trabajo, ¿qué información se obtiene con la siguiente vista? CREATE VIEW V1 AS SELECT M.nombre, COUNT(DISTINCT E.exposición), SUM(E.num_pinturas) FROM Museos M, Exposiciones E, Compuesta C WHERE M.museo=E.museo AND E.museo=C.museo AND E.exposición=C.exposición GROUP BY M.museo, M.nombre; a) Para todos los museos con exposiciones, su nombre, el número de exposiciones organizadas y el número total de pinturas expuestas.
b) Para todos los museos con exposiciones que incluyan alguna pintura, su nombre, el número de exposiciones organizadas y el número total de pinturas expuestas.
c) Para todos los museos con exposiciones que incluyan alguna pintura, su nombre, el número de exposiciones organizadas y el número de pinturas expuestas en cada exposición.
d) La vista no proporcionaría ninguna información pues está mal definida, porque no incluye la cláusula de seguridad WITH CHECK OPTION.
3. Para obtener las ciudades que tienen más de un museo, ¿cuál de las siguientes expresiones del álgebra relacional sería correcta? a) ((MUSEOS(museo, otro_museo) MUSEOS) DONDE museo<>otro_museo) [ciudad] b) ((MUSEOS((ciudad, otra_ciudad),(museo, otro_museo)) MUSEOS) DONDE museo<>otro_museo ∧ ciudad=otra_ciudad) [ciudad] c) ((MUSEOS M1 × MUSEOS M2) DONDE museo<>otro_museo ∧ ciudad=otra_ciudad) [ciudad] d) ((MUSEOS[museo,ciudad](museo, otro_museo) MUSEOS) DONDE museo<>otro_museo) [ciudad] 4. Según la base de datos del esquema de trabajo, ¿cuál de las siguientes afirmaciones es FALSA? a) b) c) d) Podemos tener dos pinturas con el mismo título y año desconociendo el autor.
Podemos tener dos pinturas con el mismo título y año pero autores diferentes.
Podemos tener dos pinturas con el mismo autor y año pero títulos diferentes.
Podemos tener dos pinturas con el mismo autor y año desconociendo el título.
5. La sentencia de SQL "DROP VIEW": a) Destruye todas las tablas y vistas a partir de las cuales se define su expresión de tabla, siempre y cuando estén en el esquema externo.
b) Destruye todas las tablas y vistas a partir de las cuales se define su expresión de tabla sólo en el caso de que se haya puesto la opción CASCADE en la creación de la vista.
c) Destruye todas las tablas y vistas a partir de las cuales se define su expresión de tabla sólo en el caso de que se haya puesto la opción WITH CHECK OPTION en la creación de la vista.
d) En ningún caso afecta a las tablas o vistas a partir de las cuales se define su expresión de tabla.
6. Una base de datos se encuentra repartida en los discos D1 y D2, el fichero de diario se encuentra en el disco D2 y las copias de seguridad de la base de datos y del diario en una cinta C3, suponiendo que la copia del diario es más reciente que la copia de la base de datos. Ante un fallo fatal del disco D2, ¿cómo se debe actuar? a) Se recupera la copia de seguridad de la base de datos y se repiten todas las transacciones realizadas desde la fecha de dicha copia.
b) Se recuperan las copias de seguridad de la base de datos y del fichero de diario y se repiten las transacciones confirmadas en el diario desde la fecha de la copia de la base de datos.
c) Se mantienen las tablas de D1, y las tablas de D2 se recuperan de la copia de seguridad de la base de datos.
d) Se recuperan las copias de seguridad de la base de datos y del fichero de diario, se deshacen las transacciones anuladas en el diario después de la fecha de la copia de la base de datos, y por último se repiten todas las transacciones realizadas desde la fecha de la copia de la base de datos.
7. ¿Qué consulta representa la siguiente expresión del álgebra relacional? ((MUSEOS[museo] – EXPOSICIONES[museo]) a) b) c) d) ESTAR) [pintura] Códigos de pinturas que están en un museo que no tiene ninguna exposición.
Códigos de pinturas que están en algún museo pero en ninguna exposición.
Códigos de pinturas que están en alguna exposición pero en ningún museo.
Códigos de pinturas que están en una exposición de un museo que no es propietario de la pintura.
8. Si, en la base de datos BD, ejecutamos la instrucción SQL: DELETE FROM Museos WHERE museo=4 a) No se borrará nada.
b) Se borrará de la tabla MUSEOS el museo cuyo código es 4.
c) Se borrará de la tabla MUSEOS el museo cuyo código es 4, la pintura de código 5 de la tabla PINTURAS y la tupla (5,4,verdadero) de ESTAR.
d) Se borrará el museo cuyo código es 4 de la tabla MUSEOS y la tupla (5,4,verdadero) de la tabla ESTAR.
9. Indica cuál de las siguientes afirmaciones es FALSA: a) La independencia lógica garantiza que el esquema lógico no se vea afectado por cambios en el esquema interno.
b) La independencia de datos es mayor cuanto más tarde se realice la ligadura.
c) El nivel externo describe las vistas de la base de datos que poseen distintos usuarios.
d) Un cambio en el esquema físico no obliga a modificar el código fuente de las aplicaciones si hay independencia física.
10. Dada la transacción T1 que se ejecuta sobre la base de datos BD: INICIO T1 INSERT INTO Pinturas VALUES (10, "El grito", 15, 1893, "Expresionismo"); INSERT INTO Autores VALUES (15, "Munch", "XX", "Noruega"); COMMIT WORK; ¿Cuál de las siguientes afirmaciones es CIERTA? a) T1 no fallará si la integridad referencial de PINTURAS se define como DEFERRABLE INITIALLY DEFERRED.
b) T1 no fallará porque el procesamiento de la transacción cumple la propiedad de atomicidad.
c) T1 no fallará si se incluye la cláusula WITH NO CHECK OPTION en la definición de la transacción.
d) T1 no fallará si la integridad referencial de PINTURAS se define como DEFERRABLE INITIALLY IMMEDIATE.
11. Dada la base de datos BD, ¿qué ocurre si en la relación ESTAR se cambia el valor del atributo museo=2 por museo=3 de la tupla {(pintura, 4), (museo, 2), (prestada, falso)}? a) b) c) d) El cambio no se realizará porque no se cumple la integridad referencial.
El cambio se realizaría sin problemas porque se sigue cumpliendo la integridad referencial.
El cambio se realizará y se propagará en cascada a la tabla MUSEOS.
El cambio se realizará y se propagará en cascada a la tabla PINTURAS.
12. Dado el esquema de trabajo, ¿cuál de las siguientes afirmaciones es CIERTA? a) b) c) d) Se puede borrar un museo si no tiene exposiciones.
Se puede borrar un museo si no tiene pinturas.
Se puede borrar un museo si no tiene pinturas ni exposiciones.
Se puede borrar un museo siempre.
13. ¿Qué instrucciones SQL usarías para definir un esquema externo para un usuario? a) b) c) d) CREATE SCHEMA CREATE VIEW y CREATE DOMAIN CREATE VIEW y GRANT No existen instrucciones en SQL, los esquemas externos se crean desde las aplicaciones que se conectan a la base de datos.
14. Respecto a los protocolos de reserva utilizados para resolver los problemas de acceso concurrente a una base de datos, ¿cuál de las siguientes afirmaciones es FALSA? a) Si una transacción reserva para lectura un dato, ninguna otra transacción podrá acceder a dicho dato hasta que la transacción lo libere.
b) El protocolo de reserva en dos fases implica que una transacción debe realizar todas las reservas de datos antes de la primera liberación.
c) Si una transacción reserva para escritura un dato, ninguna otra transacción podrá acceder a dicho dato hasta que la transacción lo libere.
d) El “bloqueo mortal” entre transacciones es un problema que implica que, en un conjunto de dos o más transacciones, cada transacción está esperando por datos que tiene reservada otra transacción del conjunto.
SOLUCIONES Problemas 1) Obtener el identificador y el título de todas las pinturas de estilo 'Barroco' de las cuales se desconoce el año en que fueron pintadas. (0,50 puntos) SELECT pintura, título FROM Pinturas WHERE estilo = 'Barroco' AND año IS NULL 2) Crear una restricción general, en SQL estándar, para asegurar que todas las pinturas que componen una exposición sean del mismo estilo que el de la exposición. (0,75 puntos) CREATE ASSERTION estilos_iguales CHECK (NOT EXISTS (SELECT * FROM Exposiciones E, Compuesta C WHERE E.exposición = C.exposición AND E.museo = C.museo AND EXISTS (SELECT * FROM Pinturas P WHERE C.pintura = P.pintura AND E.estilo <> P.estilo))) O bien: CREATE ASSERTION estilos_iguales CHECK (NOT EXISTS (SELECT * FROM Exposiciones E, Compuesta C, Pinturas P WHERE E.exposición = C.exposición AND E.museo = C.museo AND C.pintura = P.pintura AND E.estilo <> P.estilo)) 3) Obtener el nombre de la exposición, el nombre del museo, y las fechas de inicio y fin de la exposición, de las exposiciones que contengan alguna pintura del autor de nombre 'Botticelli' y que finalicen antes del '31/12/2010'. (0,50 puntos) SELECT DISTINCT E.nombre, M.nombre, E.fecha_inicio, E.fecha_final FROM Museos M, Exposiciones E, Compuesta C, Pinturas P, Autores A WHERE E.museo = M.museo AND E.exposición = C.exposición AND E.museo = C.museo AND C.pintura = P.pintura AND P.autor = A.autor AND A.nombre LIKE '%Botticelli%' AND E.fecha_final < '31/12/2010' O bien: SELECT DISTINCT E.nombre, M.nombre, E.fecha_inicio, E.fecha_final FROM Museos M, Exposiciones E, Compuesta C WHERE E.museo = M.museo AND E.exposición = C.exposición AND E.museo = C.museo AND E.fecha_final < '31/12/2010' AND EXISTS (SELECT * FROM Pinturas P, Autores A WHERE C.pintura = P.pintura AND P.autor = A.autor AND A.nombre LIKE '%Botticelli%') 4) Para todos los autores, obtener su identificador, su nombre y el número de estilos de sus pinturas. (0,75 puntos) SELECT A.autor, nombre, COUNT(DISTINCT P.estilo) FROM Autores A LEFT JOIN Pinturas P ON A.autor = P.autor GROUP BY A.autor, nombre 5) Obtener el identificador y el nombre de los autores de alguna pintura de estilo renacentista cuyas pinturas no formen parte de ninguna exposición de estilo renacentista. (0,75 puntos) SELECT A.autor, nombre FROM Autores A WHERE EXISTS (SELECT * FROM Pintura P WHERE A.autor = P.autor AND P.estilo = 'Renacentista') AND A.autor NOT IN (SELECT P.autor FROM Pinturas P, Compuesta C, Exposiciones E WHERE P.pintura = C.pintura AND E.exposición = C.exposición AND E.museo = C.museo AND E.estilo = 'Renacentista') 6) Obtener el identificador y el nombre del autor cuyas pinturas se han incluido en exposiciones en el mayor número de museos. (1 punto) SELECT A.autor, nombre FROM Autores A, Pinturas P, Compuesta C WHERE A.autor = P.autor AND P.pintura = C.pintura GROUP BY A.autor, nombre HAVING COUNT(DISTINCT C.museo) >= ALL (SELECT COUNT(DISTINCT C.museo) FROM Pinturas P, Compuesta C WHERE P.pintura = C.pintura GROUP BY P.autor) 7) Obtener el identificador y el nombre de los autores españoles tales que todos los museos inaugurados después de 1800 son propietarios de alguna pintura suya. (1 punto) SELECT A.autor, nombre FROM Autores A WHERE país = 'España' AND NOT EXISTS (SELECT * FROM Museos M WHERE año > 1800 AND NOT EXISTS (SELECT * FROM Estar E, Pinturas P WHERE M.museo = E.museo AND E.pintura = P.pintura AND P.autor = A.autor AND E.prestada = falso)) AND EXISTS (SELECT * FROM Museos M WHERE año > 1800) 8) El atributo núm_pinturas en la relación Exposiciones es un atributo derivado, que almacena el número total de pinturas que componen las exposiciones.
a) Además de la modificación de los atributos museo y exposición en la relación Compuesta, indicar las operaciones que puedan afectar a dicho atributo derivado. (0,60 puntos) • Insertar en Exposiciones: núm_pinturas = 0 • Modificar núm_pinturas en Exposiciones: prohibido • Insertar en Compuesta: incrementar (en una unidad) núm_pinturas para la {exposición, museo} especificada en la tupla insertada.
• Borrar en Compuesta: decrementar (en una unidad) núm_pinturas para la {exposición, museo} especificada en la tupla borrada.
b) Escribir un disparador para responder a la operación de modificar el atributo museo o el atributo exposición en la relación Compuesta. (0,65 puntos) CREATE OR REPLACE TRIGGER contador_pinturas AFTER UPDATE OF museo OR UPDATE OF exposición ON Compuesta (*) FOR EACH ROW WHEN (old.exposición <> new.exposición OR old.museo <> new.museo) BEGIN UPDATE Exposiciones SET núm_pinturas= núm_pinturas+1 WHERE exposición = :new.exposición AND museo = :new.museo; UPDATE Exposiciones SET núm_pinturas= núm_pinturas-1 WHERE exposición = :old.exposición AND museo = :old.museo; END (*) Alternativa: AFTER UPDATE OF museo, exposición ON Compuesta Cuestiones Tipo Cuestionario A E B F C G D H A D C B B A D C D C B A D C B A D C B A B A D C A D C B A D C B A D C B A D C B B A D C C B A D C B A D A D C B ...