EXAMEN DISEÑO DE BASES DE DATOS Y SEGURIDAD DE LA INFORMACIÓN (23 de junio de 2008) 2º Parcial 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 Nombre y Apellidos: Tiene 1 hora y 30 minutos para realizar el examen. Puntuación Total: 10 puntos Apartado A (3 puntos): 1.75 / 0.75 1.25 / 1 0.75 0.5 Responda el apartado A en las propias hojas del examen. 1. (1.75 puntos) Dadas las siguientes sentencias de creación de tablas en SQL: CREATE TABLE Producto (cod_producto descripcion_p proveedor unidades_vendidas INTEGER PRIMARY KEY, VARCHAR2(100), VARCHAR2(25), INTEGER); CREATE TABLE Almacen (cod_prod_stock INTEGER PRIMARY KEY, stock INTEGER, FOREIGN KEY (cod_prod_stock) REFERENCES Producto); Y las correspondientes extensiones de las tablas PRODUCTO y ALMACEN: PRODUCTO ALMACEN Cod_Producto Descripción_P Proveedor Unidades_Vendidas 10001 Bolígrafo Staedtler 76 11002 Rotulador Edding 102 12007 Cuaderno Paper 90 13009 Carpeta Paper 120 Cod_Prod_Stock Stock 10001 500 11002 176 12007 1000 13009 34 Y dado el código del siguiente disparador: CREATE OR REPLACE TRIGGER Actualizar_Almacen AFTER UPDATE OF Unidades_Vendidas ON Producto FOR EACH ROW WHEN (NEW.unidades_vendidas>100) BEGIN UPDATE Almacen SET Almacen.stock = Almacen.stock + :OLD.unidades_vendidas :NEW.unidades_vendidas WHERE Almacen.cod_prod_stock =:NEW.cod_producto; END Actualizar_Almacen; / Responda a las siguientes preguntas de forma breve y concisa. a) (0.75 puntos) Explique el propósito y funcionamiento del disparador. Solución: Este disparador se encarga de actualizar el stock de ALMACEN cada vez que se vendan unidades de un determinado producto, es decir, cada vez que se produzca un incremento (modificación-UPDATE) del valor del atributo unidades_vendidas de la tabla PRODUCTO, siempre que el nuevo número unidades vendidas del producto sea superior a 100. b) (1 punto) Indique si las siguientes sentencias provocarían la ejecución (disparo) del código del disparador. Justifique su respuesta y en caso afirmativo, explique su funcionamiento. UPDATE Producto SET unidades_vendidas=unidades_vendidas-2 WHERE Cod_Producto=11002; Solución: Ahora el valor de unidades_vendidas es de 100 para el producto 11002 y por lo tanto NO se ejecuta el código del disparador. UPDATE Producto SET unidades_vendidas=unidades_vendidas+20 WHERE cod_producto=12007; Solución: Ahora el valor de unidades_vendidas es de 110 para el producto 12007, tras realizar la actualización. Por lo tanto, el número total de unidades vendidas (nuevo valor) es superior a 100 y se procederá a actualizar el valor del atributo del stock del almacen, sumándole al valor del stock (1000 unidades) el número anterior de unidades vendidas (90) y restándole el nuevo número de unidades vendidas (110), quedándonos como resultado 980 (1000+90-110), es decir, un decremento de 20 unidades en el stock del almacén para el producto 12007. Examen de Diseño de Bases de Datos y Seguridad de la Información 2º Parcial - 23 de junio de 2008 Nombre y Apellidos: 2) (1.25 puntos) Se pide: a) (0.75 puntos) Represente mediante un esquema E/R el siguiente esquema lógico representado con ERWIN: Solución: B1 A1 B2 A2 1:N Id Entidad1 Interrelacion Entidad2 a) (0.5 puntos) ¿Cuál de los siguientes conceptos tienen representación directa en ERWIN, es decir, se pueden representar sin necesidad de utilizar ningún artificio que lo simule? Marque la casilla SÍ, si tiene representación directa, o NO, en caso contrario: Solución: SI NO ■ □ □ □ □ □ ■ ■ ■ ■ Cardinalidades mínimas en una interrelación 1:N Interrelación N:M con atributos en la interrelación Interrelación ternaria 1:N:M Jerarquía total y exclusiva Restricción de inclusión entre interrelaciones Examen de Diseño de Bases de Datos y Seguridad de la Información 2º Parcial - 23 de junio de 2008 Nombre y Apellidos: Apartado B (3 puntos): 1 2 Responda el apartado A en las propias hojas del examen. 1) (1 punto) Para cada uno de los siguientes esquemas, que ya son mínimos, diga todas sus claves y la forma normal más avanzada en la que se encuentran. Cuando un esquema tenga más de una clave, especifíquelas claramente con el formato {k1}, {k2}... No es necesaria ninguna justificación. 1) R ({A, B, C}, A → C, B → C }) {A → C, A → B, B → A }) B → C, C→D, D → A }) B→A B→C B → D }) (0’1) Claves: {A,B} (0’1) Forma Normal: 1FN 2) R ({A, B, C, D }, (0’1) Claves: {A, D}, {B, D} (0’1) Forma Normal: 1FN 3) R ({A, B, C, D }, {A → B, (0’1) Claves: {A}, {B}, {C}, {D} (0’1) Forma Normal: FNBC 4) R ({A, B, C, D }, { A,C → B, (0’1) Claves: {A, C}, {B} (0’1) Forma Normal: FNBC 5) R ({A, B, C, D }, Ø}) (0’1) Claves: {A,B,C,D} (0’1) Forma Normal: FNBC 2) (0.5 puntos) ¿Es mínimo el siguiente esquema? Justifique su respuesta. R ({A, B, C, D, E, F}, {A → B, B → C, C, D → E }) Solución: Sí lo es. No hay atributos extraños, ya que tanto el cierre de C como el de D no contienen a E. No hay DF redundantes porque todas tienen diferente implicado. 3) (0.5 puntos) Aplique el método de síntesis, que garantiza esquemas en 3FN, conservando la información y las dependencias, al siguiente esquema, que ya es mínimo. Justifique su respuesta. ¿En qué forma se encuentran los esquemas resultantes? R ({A, B, C, D }, {A → B, B → C }) Solución: 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. Calculamos la clave: Una Kp es {A,D} (A siempre es implicante y D es independiente, por tanto (A,D) van a estar en todas las claves). Como(A,D)+DF={A,B,C,D}, es K única. Aplicando síntesis: R1 ({A, B}, {A → B}) R2 ({B, C}, {B → C }) R3 ({A,D }, { Ø }) (ya que la clave no estaba en ningún esquema) Todos los esquemas están en FNBC. 4) (1 punto) Obtenga un conjunto de esquemas de relación aplicando el algoritmo de análisis (descomposición) al esquema del ejercicio 3 hasta obtener un conjunto de esquemas en FNBC, verificándose que en cada paso se conservan la información y las dependencias. Solución: R1 ({B,C}, R’ ({A, B, D}, R2 ({A,B }, R3 ({A, D }, {B → C }) {A → B }) K: {B}, FNBC K: {A,D}, 1FN {A → B }) {Ø}) K: {A}, FNBC K: {A,D}, FNBC El esquema original lo descomponemos en R1, R2 y R3 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 2º Parcial - 23 de junio de 2008 Nombre y Apellidos: Apartado C (4 puntos): Responda el apartado C en las propias hojas del examen. 1) ( 1.5 puntos) Se pide: a) (0.9 puntos) Explique brevemente qué es una transacción, cuáles son sus propiedades (explíquelas también brevemente) y qué sucede cuando una transacción termina en fracaso. Solución: Una transacción es una secuencia de operaciones que han de ejecutarse de forma atómica. Sus propiedades son: • Atomicidad: se ejecutan todas las sentencias o ninguna. • Preservación de la consistencia: la ejecución de una transacción debe dejar a la BD en un estado consistente. • Aislamiento: una transacción no muestra los cambios que produce hasta que finaliza. • Persistencia: una vez la transacción finaliza con éxito, sus efectos perduran en la BD. Si una transacción termina en fracaso, debe ser restaurado el estado inicial en el que se encontraba la BD antes de que empezara a ejecutarse la transacción. Las actualizaciones de que consta la transacción deberán deshacerse (rollback). b) (0.6 puntos) Indique si las siguientes afirmaciones acerca de la confidencialidad y las políticas de autorización son ciertas o falsas: Cierto Falso Afirmación La autorización implícita consiste en almacenar qué sujetos pueden acceder a ciertos objetos con determinados privilegios. Una autorización fuerte no permite invalidar aquellas autorizaciones deducidas de la misma. Una autorización positiva indica la existencia de una autorización explícita. Un perfil agrupa una serie de privilegios que se asignan de forma global a un usuario o a un grupo Solución: Cierto Falso X X X X Afirmación La autorización implícita consiste en almacenar qué sujetos pueden acceder a ciertos objetos con determinados privilegios. Una autorización fuerte no permite invalidar aquellas autorizaciones deducidas de la misma. Una autorización positiva indica la existencia de una autorización explícita. Un perfil agrupa una serie de privilegios que se asignan de forma global a un usuario o a un grupo 2) ( 2.5 puntos) Dado el siguiente esquema E/R. a A b (1,1) I (0,2) B a) (1.8 puntos) 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). En los apartados a.1, a.2 y a.3, asuma que se conserva la consistencia. En los apartados a.3 y a.6, asuma que la interrelación de B hacia A se recoge por medio del atributo CodB1: Cardinalidad Cardinalidad en A en B (1 , 1) (0 , 2) NULL a.1 A ( a, CodB) NULL B ( b, CodA) a.2 NULL A ( a, CodB) NN B ( b, CodA) a.3 NN NULL A ( a, CodB1, CodB2) NN B ( b, CodA) a.4 A(a) B(b) I ( CodA, CodB) a.5 A(a) B(b) UNIQUE NN I ( CodA, CodB) a.6 A(a) B(b) UNIQUE NN NULL I ( CodA, CodB1, CodB2) b) (0.7 puntos) Diseñar una aserción que permita controlar la cardinalidad mínima 1 en A teniendo en cuenta el esquema relacional mostrado en la transformación a.4. del apartado anterior. Examen de Diseño de Bases de Datos y Seguridad de la Información 2º Parcial - 23 de junio de 2008 Nombre y Apellidos: Solución: a) Cardinalidad en A (1 , 1) a.1 Cardinalidad en B (0 , 2) NULL A ( a, CodB) NULL B ( b, CodA) a.2 X X X X X NULL A ( a, CodB) NN B ( b, CodA) a.3 NN NULL A ( a, CodB1, CodB2) NN X X X B ( b, CodA) a.4 A(a) X B(b) I ( CodA, CodB) a.5 A(a) B(b) X UNIQUE NN I ( CodA, CodB) a.6 X A(a) B(b) UNIQUE NN NULL I ( CodA, CodB1, CodB2) Solución: b) CREATE ASSERTION ej_4b CHECK NOT EXISTS (SELECT b FROM B WHERE b NOT IN (SELECT CodB FROM I)); X