Apartado A (6.5 puntos)

Anuncio
EXAMEN
DISEÑO DE BASES DE DATOS Y SEGURIDAD DE LA INFORMACIÓN
(25 de junio de 2007)
2o Parcial
Autorizo la publicación de la nota del examen junto a mis datos personales: SI NO Nombre y Apellidos:
TITULACIÓN (Sistemas/Gestión):
GRUPO (A/B):
Tiene 1.30 hora para realizar el examen.
Puntuación Total: 10 puntos
Apartado A (6.5 puntos):
1
2
1.5
0.5
0.5
1
Responda el apartado A en las propias hojas del examen.
1) (1 punto) Diga la forma normal más avanzada en la que se encuentra cada
uno de los siguientes esquemas de relación. No es necesaria ninguna
justificación:
1) R ({A, B, C, D },
{A, B, D → C}) FNBC
2) R ({A, B, C, D },
{A → B}) 1FN
3) R ({A, B, C },
{A → B,
4) R ({A, B, C},
{A ↔ B}) 3FN
5) R ({A, B, C },
{A → B,
A → C}) FNBC
6) R ({A, B },
{A ↔ B,
A → B}) FNBC
7) R ({A, B, C, D },
{A → B,
B, C → A }) 3FN
8) R ({A, B, C },
{A → B,
B → C,
A → C}) 2FN
9) R ({A, B, C, D },
{A → B,
B → C,
C → B}) 1FN
10) R ({A, B },
{A ↔ B}) FNBC
B → C}) 2FN
2) (2 puntos) Dado el siguiente esquema (que ya es mínimo):
R ({A, B, C, D, E, F },
{A → B,
B → C,
C, D → E })
2.1) (0.5 puntos) Calcule, de manera justificada, todas sus claves.
A y D pertenecen a la K, por ser siempre implicantes. F también,
por ser independiente. Como el cierre de {A, D, F} contiene a todos los
atributos, es clave única
2.2) (0.5 puntos) Describa el método de síntesis, y obtenga un conjunto
de esquemas de relación aplicando dicho algoritmo de síntesis que
garantiza esquemas en 3FN, conservando la información y las
dependencias.
De acuerdo al método, una vez tenemos el conjunto mínimo,
creamos un esquema por cada dependencia (o conjunto de DF con igual
implicante) y, caso de no estar contenida en alguno de los esquemas,
uno que contenga a la clave. Es decir:
R1 ({A, B},
{A → B})
R2 ({B, C},
{B → C })
R3 ({C, D, E},
{C, D → E })
R4 ({A, D, F },
{ Ø })
2.3) (1 punto) Obtenga un conjunto de esquemas de relación aplicando
el algoritmo de análisis (descomposición) hasta obtener un conjunto de
esquemas en FNBC, verificándose que en cada paso se conservan la
información y las dependencias.
R1 ({C, D, E},
{C, D → E })
R’ ({A, B, C, D, F }, { A → B,
B → C })
R2 ({B, C },
R’’ ({A, B, D, F },
{B → C })
{ A → B})
R3 ({A, B},
{ A → B})
R4 ({A, D, F },
{ Ø })
Claramente en todos los pasos se verifica que se conservan las DF. Además,
se conserva la información, ya que siempre se cumple que:
- (A1∩A2)→(A1-A2) ó
- (A1∩A2)→(A2-A1)
Examen de Diseño de Bases de Datos y Seguridad de la Información
25 de junio de 2007
Nombre y Apellidos:
3) (1.5 puntos) Dado el siguiente esquema E/R:
(1,3)
A
I
(0,n)
a
B
b
Marque las casillas correspondientes a las cardinalidades que SÍ están
recogidas en las siguientes transformaciones. Se indican los atributos que
admiten nulos (NULL), los que no admiten nulos (NN) y las claves alternativas
(UNIQUE):
(1,3) (0,n)
(1,3) (0,n)
A(a) NN
B(b, CodA)
A(a) NULL
B(b, CodA)
A(a)
B(b)
A(a, CodB)
B(b)
NULL
I(CodA, CodB)
A(a)
B(b)
A(a)
B(b)
UNIQUE
NN
NULL
I(CodA, CodB)
I(CodA, CodB)
Solución:
(1,3)
(0,n)
(1,3)
A(a) NN
B(b, CodA)
A(a) NULL
B(b, CodA)
A(a)
B(b)
A(a)
B(b)
I(CodA, CodB)
I(CodA, CodB)
A(a)
B(b)
A(a)
B(b)
NN
UNIQUE
NN
I(CodA, CodB)
NULL
I(CodA, CodB)
(0,n)
4) (0.5 puntos) Marque la casilla verdadero (V) o falso (F) en las siguientes
afirmaciones:
Como norma general, los índices de una tabla de una base de datos
relacional…
V F
□■
□■
No ocupan espacio en memoria
■□
Son útiles para mejorar el rendimiento de algunas consultas a la tabla
Interesa tener índices por todos los atributos, sobre todo cuando hay
muchas actualizaciones
5) (0.5 puntos) Describa, muy brevemente, las posibles alternativas para
simular la implementación del dominio {‘Rojo’, ‘Verde’, ‘Azul’} en un SGBD que
no permita la creación de dominios.
Existen varias posibilidades. Las más sencillas son por medio de un check o
por medio de una tabla que contenga un único atributo y tantas filas (en este
caso, tres) como valores del dominio (aquellas columnas que tomen valores en
este dominio, las pondremos como clave ajena de esta tabla). Otras
posibilidades son utilizar disparadores (triggers), aserciones…
6) (1 punto) Dado el siguiente esquema (por sencillez, no se incluyen atributos)
y su transformación:
a
A
I
(0,n)
B
b
(1,n)
TA(a)
TC(CodA)
C
D
TD(CodA)
TI(CodA,CodB)
TB(b)
6.1) Realice una aserción que controle la cardinalidad mínima 1 en B
CREATE ASSERTION A1
CHECK NOT EXISTS (SELECT a FROM TA WHERE a NOT IN
(SELECT CodA FROM TI));
6.2) Realice una aserción que controle la exclusividad
CREATE ASSERTION A2
CHECK NOT EXISTS (SELECT CodA FROM TC WHERE CodA IN
(SELECT CodA FROM TD));
Examen de Diseño de Bases de Datos y Seguridad de la Información
25 de junio de 2007
Nombre y Apellidos:
Apartado B (3.5 puntos):
1.5
1
1
Responda el apartado B en las propias hojas del examen.
Dado el siguiente esquema relacional:
PELICULAS (Título, Director, Num_Cines)
CINES (Nombre, Direccion)
PROYECCIONES (Cine, Pelicula, Sala)
y las correspondientes sentencias de creación de tablas en SQL:
CREATE TABLE Peliculas (
Titulo
VARCHAR2(50) PRIMARY KEY,
Director
VARCHAR2(30),
Num_Cines
NUMBER DEFAULT 0);
-- Num_cines es un atributo calculado que contiene el número de cines
--en los que se proyecta la película
CREATE TABLE Cines (
Nombre
VARCHAR2(50) PRIMARY KEY,
Direccion
VARCHAR2(50));
CREATE TABLE Proyecciones (
Cine
VARCHAR2(50),
Pelicula
VARCHAR2(50),
sala
NUMBER,
PRIMARY KEY (Cine, Pelicula),
FOREIGN KEY (Pelicula) REFERENCES Peliculas,
FOREIGN KEY (Cine) REFERENCES Cines);
Responda a las siguientes preguntas de forma breve y concisa.
1. (1.5 puntos) Dado el código del siguiente disparador:
CREATE OR REPLACE TRIGGER T_Peliculas
BEFORE DELETE ON Peliculas
FOR EACH ROW
DECLARE
V_cines Peliculas.Num_Cines%TYPE;
BEGIN
SELECT Num_Cines INTO V_cines
FROM Peliculas
WHERE Titulo = :OLD.Titulo;
IF (V_cines > 0) THEN
RAISE_APPLICATION_ERROR(-20001,
'No se puede eliminar esta película');
END IF;
END T_Peliculas;
a) Explique el propósito y funcionamiento de dicho disparador.
(0,75 puntos) La finalidad del disparador es impedir la eliminación de una
película que esté proyectándose en alguna sala. Para ello, cada vez que se
intenta eliminar una fila de la tabla Peliculas se comprueba el valor del atributo
num_cines de dicha fila. Si su valor es mayor que 0, entonces es que la
película está proyectándose en algún cine y se eleva una excepción para
impedir que se ejecute la sentencia de borrado.
b) ¿Funcionaría (en ejecución) correctamente el disparador en Oracle?
Razone su respuesta.
(0,75 puntos) No. En el cuerpo del disparador se intenta realizar una consulta
sobre una tabla mutante (tabla que está siendo modificada por una operación
DML).
Examen de Diseño de Bases de Datos y Seguridad de la Información
25 de junio de 2007
Nombre y Apellidos:
2. (1 punto) Dado el código de la siguiente vista, que devuelve las
proyecciones de las películas en las salas de los distintos cines junto con la
dirección del cine correspondiente:
CREATE VIEW V_Peliculas_Cine AS
SELECT p. Pelicula, p.Cine, c.Direccion, p.Sala
FROM Proyecciones p, Cines c
WHERE p.Cine = c.Nombre;
y el siguiente disparador:
CREATE OR REPLACE TRIGGER T_Peliculas_Cine
INSTEAD OF INSERT ON V_Peliculas_Cine
BEGIN
INSERT INTO Cines VALUES (:NEW.Cine, :NEW.Direccion);
INSERT INTO Proyecciones VALUES (:NEW.Cine, :NEW.Pelicula, :NEW.Sala);
END;
/
a) Explique el propósito y funcionamiento de dicho disparador.
Solución:
(0,5 puntos) La finalidad del disparador es simular la inserción sobre la vista
V_Peliculas_Cine, realizando las inserciones en las correspondientes tablas.
b) La ejecución de este trigger ¿produciría un error de tabla mutante? Razone su
respuesta.
Solución:
(0,5 puntos) No, porque la definición del disparador lo hace imposible: al ser un
disparador de tipo INSTEAD_OF, está definido sobre una vista y por lo tanto la
sentencia que dispara el trigger no afecta directamente a ninguna tabla, con lo
que no hay tablas mutantes asociadas a este disparador.
1. (1 punto) Dada la siguiente relación ALUMNO con seguridad multinivel:
Núm_Matricula
Curso
Nombre
Nivel_Atención
Nota Final
CT
001
U
1
U
Mariano
C
Escaso
S
Aprobado C
S
002
U
2
U
María
S
Alto
TS
Notable
TS
C
La clave estará formada por los atributos Núm_Matricula y Curso.
a) ¿Qué pasaría cuando un usuario con clasificación de seguridad S realice
la siguiente consulta “SELECT * FROM ALUMNO”?
Solución:
(0,5 puntos) Se producirá un proceso de filtrado, introduciendo valores
nulos para los valores de los atributos cuya clasificación de seguridad es
más alta que la del usuario.
La tupla primera se vería completamente, mientras que en la segunda
veríamos un NULL en el atributo Nivel_Atención.
b) Explique el concepto de poliinstanciación. Ponga un ejemplo en el que
se produzca este fenómeno.
Solución:
(0,5 puntos) Se producirá una poliinstanciación cuando un usuario por
ejemplo de nivel de seguridad S intente modificar el atributo
Nivel_Atención de la segunda tupla, introduciendo varias tuplas con el
mismo valor de clave aparente pero diferentes valores de atributos para
los usuarios con diferentes niveles de seguridad.
Descargar