examen diseÑo de bases de datos y seguridad de la ...dbd-2008-09]febrero...examen de diseño de...
TRANSCRIPT
EXAMEN
DISEÑO DE BASES DE DATOS Y SEGURIDAD DE LA INFORMACIÓN
(30 de Enero de 2009)
1er Parcial
PARTE TEÓRICA (4 puntos):
Tiene 15 minutos para realizar la parte teórica del examen.
Rodee con un círculo la respuesta correcta. Tenga en cuenta que por cada pregunta sólo hay una respuesta correcta. En caso de que haya más de una respuesta que considere correcta, señale la más completa. Cada pregunta correcta suma 0‟4. Cada respuesta incorrecta resta 0‟1. Cada pregunta sin responder ni suma ni resta.
1) Un Sistema de Gestión de Bases de Datos:
a) Se corresponde con los datos de usuario de la Base de Datos
b) Se corresponde con los metadatos que describen tanto a los datos como
a los usuarios almacenados en el repositorio o metabase de datos.
c) Actúa como interfaz entre los usuarios y los distintos niveles de gestión
de la organización.
d) Actúa como interfaz entre la base de datos y los distintos niveles de
gestión de la organización.
e) No integra a los distintos subsistemas, pero en cambio atiende las
necesidades de los usuarios en los cuatro niveles gestión de la
organización.
Solución: d
Autorizo la publicación de la nota del examen junto a mi número de matrícula tanto en la Web
como en los tablones:
SI NO Táchese lo que proceda
Nombre y Apellidos:
2) Las funciones esenciales de un Sistema de Gestión de Bases de Datos son:
a) Función de control, función de implantación y función de definición o
descripción.
b) Función de seguridad, función de manipulación y función de definición.
c) Función de definición, función de descripción y función de manipulación.
d) Función de datos, función de control y función de manipulación.
e) Función de manipulación, función de control y función de definición o
descripción.
Solución: e)
3) Señale cuál de las siguientes afirmaciones es correcta:
a) La independencia de descripción permite separar la definición de los
datos a nivel físico y a nivel lógico.
b) La independencia de descripción permite separar la definición de los
datos únicamente a nivel físico.
c) La independencia de descripción permite separar la definición de los
datos únicamente a nivel lógico.
d) La independencia de descripción no permite separar la definición de los
datos ni a nivel físico, ni a nivel lógico.
e) Todas las anteriores son falsas.
Solución: a)
4) Las fases para la puesta en marcha de una base de datos son:
a) Estudio previo y plan de trabajo, diseño y carga, y producción.
b) Producción, estudio previo y plan de trabajo, y diseño y carga.
c) Estudio previo y plan de trabajo, producción, y diseño y carga.
d) Concepción de la base de datos y selección del equipo, diseño y carga y
producción.
e) Todas las anteriores son incompletas.
Solución: e)
5) Señale cuál de las siguientes afirmaciones es correcta:
a) Los elementos del modelo entidad interrelación son: entidad,
interrelación, ejemplar, ocurrencia y atributo.
b) El grado de una interrelación es el número de entidades que
participan en dicha interrelación.
c) Un atributo multivaluado es aquél que puede tomar varios valores y
un atributo derivado es aquel cuyos valores se obtienen a partir de
otros ya existentes.
d) Las respuestas a) y b) son correctas.
e) Las respuestas b) y c) son correctas.
Examen de Diseño de Bases de Datos y Seguridad de la Información
30 de enero de 2009
Nombre y Apellidos:
Solución: e)
6) La Regla de Integridad Referencia dice que si tenemos dos relaciones R1 y
R2, y R1 tiene una clave ajena que referencia R2:
a) Los valores de los atributos que forman de la clave primaria de R1 tienen
que coincidir con los de la clave primaria de R2.
b) Los valores de los atributos que forman la clave primaria de R2 tienen
que coincidir con los de la clave ajena de R1.
c) Los valores de los atributos que forman la clave ajena en R1 tienen que
coincidir con alguno de los de la clave primaria de la tabla referenciada
(R2) o bien ser nulos.
d) Los valores de los atributos que forman la clave ajena en R1 no pueden
ser nunca valores nulos, puesto que tienen que coincidir con los de la
clave primaria de la tabla referenciada (R2).
e) Ninguna de las anteriores.
Solución: c)
7) Dada la siguiente generalización:
a) Se trata de una generalización parcial y solapada.
b) Se trata de una generalización total y solapada.
c) Se trata de una generalización parcial y exclusiva.
d) Se trata de una generalización total y exclusiva.
e) Se trata de una generalización solapada y exclusiva.
Solución: c)
8) Dada la siguiente relación de exclusividad:
Señale cuál de las siguientes afirmaciones es correcta:
a) Un profesor que imparte cursos no puede recibir cursos.
b) Un profesor que imparte un curso determinado no puede recibir ese
mismo curso.
c) Un profesor puede impartir 0 o varios cursos y además, un curso puede
ser recibido por 0 o varios profesores
d) Las respuestas a) y c) son correctas.
Examen de Diseño de Bases de Datos y Seguridad de la Información
30 de enero de 2009
Nombre y Apellidos:
e) Las respuestas b) y c) son correctas.
Solución: a)
9) Dada las siguientes relaciones:
Indique cuál de las siguientes afirmaciones es correcta:
a) La consulta en álgebra relacional
Profesor ∩ Administrativo
Devolverá los profesores que son administrativos.
b) La consulta en álgebra relacional
π nombre (Profesor – Administrativo)
Devolverá los nombres de los profesores que no son administrativos.
c) La consulta en álgebra relacional
Profesor – (Profesor – Administrativo)
Es equivalente a la siguiente consulta Profesor ∩ Administrativo
d) La consulta en álgebra relacional
(π ciudad Profesor) U (π ciudad Administrativo)
Devolverá las ciudades de las que proceden los profesores y las
ciudades de los administrativos, eliminando las ciudades repetidas.
e) Todas las anteriores son correctas.
Solución: d)
Profesor (Nombre, Edad, Ciudad)
Administrativo (Nombre, Nacionalidad, Ciudad)
10) Dado el siguiente esquema relacional:
Se define la siguiente consulta en álgebra relacional:
R1←nacionalidad = ‘ARGENTINA’ COMPOSITOR
R2← CANCIONR1
CANCION.Coimpositor=COMPOSITOR.Nombre
R3← nombre (( nacionalidad =’ESPAÑOLA’ CANTANTE)
R4← R2R3
CANTANTE.Nombre=CANCION.Cantante
R← cantante R4
Seleccione cuál de las siguientes consultas en SQL obtiene el mismo resultado
que la consulta expresada en álgebra relacional:
a) SELECT A.nombre FROM cantante A, cancion C, compositor O
WHERE A.nombre=C.cantante AND C.compositor=O.nombre
AND A.nacionalidad=‟ESPAÑOLA‟ AND
O.nacionalidad=‟ARGENTINA‟
b) SELECT C.cantante FROM cantante A, cancion C, compositor O
WHERE A.nacionalidad=‟ESPAÑOLA‟ AND
O.nacionalidad=‟ARGENTINA‟ AND A.nombre=C.cantante AND
C.compositor=O.nombre
c) SELECT A.nombre FROM cantante A, cancion C, compositor O
WHERE C.compositor=O.nombre AND
A.nacionalidad=‟ESPAÑOLA‟ AND O.nacionalidad=‟ARGENTINA‟
d) SELECT O.nombre FROM cantante A, cancion C, compositor O
WHERE A.nombre=C.cantante AND A.nacionalidad=‟ESPAÑOLA‟
AND O.nacionalidad=‟ARGENTINA‟
e) Las respuestas a) y b) son válidas
Solución: e)
CANTANTE (Nombre, Edad, Nacionalidad)
COMPOSITOR (Nombre, Edad, Nacionalidad)
CANCION (Titulo, Cantante, Género, Compositor)
Examen de Diseño de Bases de Datos y Seguridad de la Información
30 de enero de 2009
Nombre y Apellidos:
PARTE PRÁCTICA (6 puntos):
Tiene 2 horas para realizar la parte práctica del examen.
1. (2 puntos) Dada la siguiente especificación:
Una tienda de música desea poder almacenar información relativa a los discos
recopilatorios que vende, para lo cual se pretende diseñar una base de datos
acorde a las siguientes especificaciones:
Cada disco está producido por un sello discográfico, en una determinada fecha
de lanzamiento. Del sello discográfico se desea conocer el nombre, sede, país
y código correlativo que lo identifique. Del disco nos interesa almacenar el
título, el género, soporte en cual se grabó pudiendo ser: cd, dvd, mp3 o mp4,
un código y las canciones que componen el disco (es necesario que el disco
tenga un mínimo de 9 canciones). Para las canciones almacenaremos el
nombre, el número de la pista y la duración. Una canción se identifica
conjuntamente por el número de la pista y el código del disco del que forma
parte.
Un artista puede ser cantante y/o compositor. Una canción puede ser
interpretada por uno o varios cantantes. Además un compositor puede
componer una o varias canciones y una canción puede ser compuesta por uno
o varios compositores, de las que también nos interesa conocer la fecha en la
cual se compuso. Los cantantes que además son compositores, sólo pueden
interpretar canciones que ellos mismos componen. De cada artista
almacenaremos un código identificador, su nombre, sexo, y uno o varios
teléfonos y opcionalmente su edad. En el caso de los cantantes, también nos
interesa registrar que pueden trabajar conjuntamente con otros cantantes.
Se pide:
Realice el esquema entidad-interrelación que recoja toda la semántica posible a
partir del enunciado. Indique todas las suposiciones semánticas que haya
realizado, así como la semántica que no se haya podido recoger en el
esquema.
Solución:
SEMÁNTICA NO RECOGIDA: ─ Que el código sea correlativo en el sello discográfico. ─ El dominio para el soporte del disco (cd, dvd, mp3, mp4). ─ No se puede recoger en el diagrama que la fecha de
composición sea anterior a la fecha de lanzamiento.
CONSIDERACIONES: ─ Al tener cardinalidades mínimas 1, tanto artistas como
compositores en sus respectivas relaciones con la entidad canción, entendemos que no tendremos artistas que no hayan realizado ninguna aportación a alguna canción, ya sea como cantante o como compositor.
─ El atributo fecha de lanzamiento se puede ubicar tanto en la relación produce (entre sello discográfico y disco) como en la entidad disco, debido a la cardinalidad de la relación (1:N).
Examen de Diseño de Bases de Datos y Seguridad de la Información
30 de enero de 2009
Nombre y Apellidos:
2. (4 puntos) Dado el siguiente esquema relacional:
Donde las claves primarias se representan en negrita y subrayado, y los
atributos marcados con asterisco permiten valores nulos.
Se pide:
a) (0.75 puntos) Simule las opciones de modificación recogidas en el
esquema relacional, codficándolas mediante disparadores:.
Solución:
CREATE OR REPLACE TRIGGER Update_Cascade_Contacto AFTER UPDATE of nombre ON CONTACTO FOR EACH ROW BEGIN /* Actualización en cascada en la tabla TELEFONO */ UPDATE TELEFONO SET nombre=:NEW.nombre WHERE nombre=:OLD.nombre; /* Actualización en cascada en la tabla CORREO_E */ UPDATE CORREO_E SET nombre=:NEW.nombre WHERE nombre=:OLD.nombre; END; /
CONTACTO (nombre, apellidos, edad, puesto)
TELEFONO (nombre, móvil, fijo*)
CORREO_E (nombre, mail, proveedor)
Borrado: Cascada Modificación: Cascada
Borrado: Cascada Modificación: Cascada
b) (1 punto) Codifique en PL/SQL un subprograma que permita insertar
direcciones de correo electrónico a un contacto existente. Dicho
subprograma podrá insertar una o dos direcciones de correo electrónico
con su correspondiente proveedor para un contacto. Dichos
procedimientos deberán tener en cuenta que si el nombre del contacto
no existe, se mostrará un mensaje de error.
Solución:
/* Especificación*/ CREATE OR REPLACE PACKAGE Paquete_Insertar_Correo_E AS PROCEDURE Nuevo_Correo ( p_nombre IN CONTACTO.NOMBRE%TYPE, p_mail IN CORREO_E.MAIL%TYPE, p_proveedor IN CORREO_E.PROVEEDOR%TYPE); PROCEDURE Nuevo_Correo ( p_nombre IN CONTACTO.NOMBRE%TYPE, p_mail IN CORREO_E.MAIL%TYPE, p_proveedor IN CORREO_E.PROVEEDOR%TYPE, p_mail_2 IN CORREO_E.MAIL%TYPE, p_proveedor_2 IN CORREO_E.PROVEEDOR%TYPE); END Paquete_Insertar_Correo_E; / /* Implementación */ CREATE OR REPLACE PACKAGE BODY Paquete_Insertar_Correo_E AS /* Funcion auxiliar para comprabar que existe un contacto */ FUNCTION Existe_Contacto(p_nombre IN CONTACTO.NOMBRE%TYPE) RETURN
Boolean IS existe number; BEGIN SELECT count(*) into existe FROM Contacto where nombre=p_nombre; IF existe=1 THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END Existe_Contacto; PROCEDURE Nuevo_Correo ( p_nombre IN CONTACTO.NOMBRE%TYPE, p_mail IN CORREO_E.MAIL%TYPE, p_proveedor IN CORREO_E.PROVEEDOR%TYPE) IS BEGIN IF NOT Existe_Contacto(p_nombre) THEN RAISE_APPLICATION_ERROR(-20000,'No existe ningun contacto con
ese nombre'); ELSE INSERT INTO CORREO_E VALUES (p_nombre,p_mail,p_proveedor); END IF; END Nuevo_correo; PROCEDURE Nuevo_Correo ( p_nombre IN CONTACTO.NOMBRE%TYPE, p_mail IN CORREO_E.MAIL%TYPE, p_proveedor IN CORREO_E.PROVEEDOR%TYPE, p_mail_2 IN CORREO_E.MAIL%TYPE, p_proveedor_2 IN CORREO_E.PROVEEDOR%TYPE) IS BEGIN
Examen de Diseño de Bases de Datos y Seguridad de la Información
30 de enero de 2009
Nombre y Apellidos:
IF NOT Existe_Contacto(p_nombre) THEN RAISE_APPLICATION_ERROR(-20000,'No existe ningún contacto con
ese nombre'); ELSE INSERT INTO CORREO_E VALUES (p_nombre,p_mail,p_proveedor); INSERT INTO CORREO_E VALUES (p_nombre,p_mail_2,p_proveedor_2); END IF; END Nuevo_correo; END Paquete_Insertar_Correo_E; /
c) (1 punto) Defina en lenguaje SQL una consulta que permita recuperar el
nombre y los apellidos de los contactos que tengan más de una cuenta
de correo electrónico y que, al menos, una de ellas sea del proveedor
„HOTMAIL‟
Solución:
SELECT nombre, apellidos FROM CONTACTO c NATURAL JOIN CORREO_E e WHERE e.proveedor='HOTMAIL' AND e.nombre in
(SELECT nombre FROM CORREO_E GROUP BY nombre
HAVING count(*)>1);
d) (0.75 puntos) Defina mediante operadores del álgebra relacional una
consulta que permita recuperar el nombre y los apellidos de todos los
contactos que cumplan una de estas dos condiciones:
a. Que su puesto sea el de “Director”
b. No disponga de teléfono fijo y que además tenga una cuenta de
correo cuyo proveedor sea GMAIL.
Solución:
/* Contactos con cuenta en GMAIL */
R1 σ proveedor=’GMAIL’ (CORREO_E)
/* Contactos sin teléfono fijo */
R2 σ fijo=’NULL’ (TELEFONO) /* Nombre de los contactos con cuenta en GMAIL y sin teléfono fijo */
R3 ∏ nombre (R1*R2) /* Nombre de los contactos cuyo puesto es director */
R4 ∏ nombre (σ puesto=’DIRECTOR’ (CONTACTO)) /* Nombres de los contactos que cumplen uno de los dos criterios */
R5 R4 U R3 /* Obtengo el nombre y apellidos de R5 */
R ∏ nombre, apellidos (R5 * CONTACTO)
e) (0.5 puntos) ¿Qué implicaciones tendría que la clave primaria de la
relación CORREO_E fuera exclusivamente el atributo nombre, en lugar
de estar compuesta por los atributos nombre y mail, tal y como se refleja
en el esquema relacional? Justifique su respuesta.
Solución:
Si reducimos la clave primaria exclusivamente al atributo nombre y atendiendo a la regla de Integridad de Entidades un contacto podría tener exclusivamente una dirección de correo electrónico y un proveedor. En cambio el esquema actual, permite a un contacto tener más de una dirección de correo electrónico, ya que la combinación entre los atributos nombre y mail permite generar claves primarias diferentes que referencien unívocamente a una tupla de la relación CORREO_E.