%$6(6'('$726-81,2 El siguiente esquema relacional representa el sistema de información de una cooperativa de taxis. 7D[L(PDWUtFXOD: d_mat, WIQR: d_tfno, NPBUHY: d_km) CP: {matrícula} Uni: {tfno} VNN: {km_rev} 7D[LVWD(GQL:d_dni, QRPEUH:d_nom, WIQR:d_tfno, GLUHFFLyQ: d_dir, HGDG: d_edad) CP: {dni} VNN: {nombre} 7DOOHU(FRGW: d_cod, QRPEUH: d_nom1, WIQR:d_tfno, UHVSRQVDEOH: d_nom) CP: {codt} VNN: {responsable} &RQGXFH(GQL:d_dni, PDWUtFXOD: d_mat, IHFKD: d_fecha, KBLQLFLR: d_hora, KBILQ: d_hora) CP: {dni, fecha} VNN: {matrícula} CAj: {dni}→ Taxista CAj: {matrícula}→ Taxi VNN: {h_inicio} 5HYLVLRQ(FRGW: d_cod, PDWUtFXOD: d_mat, IHFKD: d_fecha) CP: {matrícula,fecha} VNN:{codt} CAj: {codt}→ Taller CAj: {matrícula}→ Taxi donde los atributos tienen el siguiente significado: 7D[L PDWUtFXOD: matrícula del coche WIQRteléfono del coche NPBUHY: kilómetros a los que se tiene que hacer la próxima revisión 7D[LVWD GQL: D.N.I. del taxista QRPEUHnombre del taxista HGDG: del taxista WIQR: teléfono particular del taxista GLUHFFLyQ: dirección del taxista 7DOOHU FRGW: código del taller WIQR: teléfono del taller &RQGXFH el taxista de DNI GQLcondujo (o conduce) el taxi de matrícula PDWUtFXODel día IHFKDdesde las KBLQLFLRhasta las KBILQ 5HYLVLyQ el taller de código FRGWrevisó el taxi de matrícula PDWUtFXODel día IHFKD QRPEUH:nombre del taller UHVSRQVDEOH: persona responsable del taller '(638e6 '( /((5 $7(17$0(17( (/ (648(0$ 5(/$&,21$/ $17(5,25 5(68(/9$/266,*8,(17(6(-(5&,&,26 Resuelva las siguientes cuestiones sobre el esquema anterior: D¿Puede un taxista conducir dos coches distintos el mismo día a distintas horas? Justifique brevemente la respuesta. E¿Puede un taxi ser conducido por dos taxistas distintos el mismo día a distintas horas? Justifique brevemente la respuesta. ¿Qué condiciones cumplen los taxis cuyos datos se obtienen como resultado de la siguiente sentencia SELECT? 6(/(&7PDWUtFXOD)520&21'8&( ,17(56(&7 6(/(&7PDWUtFXOD)5205(9,6,Ï1 Escriba en SQL/92 las siguientes consultas: DObtener el D.N.I. y el nombre de los taxistas de los que no se conoce la dirección o el teléfono particular. EObtener cuántos taxis que han sido conducidos por algún taxista de menos de 30 años no han sido revisados nunca. FEscribir una consulta que permita saber cuántos taxis ha revisado cada taller cada día que haya revisado más de 5 taxis. Del taller especificar el código y el nombre, del día especificar la fecha. GObtener la matrícula y el teléfono de los taxis que hayan sido conducido por algún conductor con edad superior a la edad media de todos los taxistas y que hayan sido revisados al menos en dos talleres diferentes. HSuponiendo que hay al menos un taxista con más de 50 años que ha conducido alguna vez un taxi, obtener el código y el nombre de los talleres que han revisado todos los taxis que han sido conducidos por taxistas de más de 50 años IObtener para cada taxi que no haya sido conducido nunca por taxistas menores de 40 años y que haya sido conducido por dos taxistas distintos, la matrícula del taxi, el teléfono del taxi y la cantidad de taxistas que lo han conducido al menos una vez. Dada la restricción de integridad: "El día que está en revisión un taxi no puede ser conducido por ningún taxista" DEnumere las operaciones sobre la base de datos que podrían violar la restricción. EDiseñe un disparador (WULJJHU) de ORACLE8 para controlar alguna de las operaciones enumeradas en la cuestión anterior. Exprese la siguiente restricción de integridad en &iOFXOR5HODFLRQDOGH7XSODV: "Entre las 22:00 y las 6:00 sólo se puede iniciar turnos de conducción de taxis con teléfono" &8(67,21$5,2'(%$6(6'('$726 7LSR$ • 5HOOHQHFRQODVUHVSXHVWDVFRUUHFWDVHOFDVLOOHURDGMXQWR • &DGD FXHVWLyQ YDOH SXQWRV 6yOR KD\ XQD RSFLyQ FRUUHFWD &DGD FXHVWLyQ PDO FRQWHVWDGDDQXODGHFXHVWLyQFRUUHFWDSRUORWDQWRODQRWDREWHQLGDHQHOWHVWHVHO UHVXOWDGRGHODVLJXLHQWHIyUPXOD%LHQB&RQWHVWDGDV−0DOBFRQWHVWDGDV Dado el siguiente esquema relacional: R(a: dom_a, b: dom_b) S(c: dom_a, d: dom_d) CP: {a} CP: {c} CAj: {a} → S f (a) = c CAj: {c} → R f (c) = a DEs incorrecto, puesto que una clave primaria no puede ser a su vez clave ajena. EEs incorrecto, puesto que no se permiten claves ajenas reflexivas. FSí que es correcto, aunque habría que diferir la comprobación de la integridad referencial y utilizar transacciones para añadir tuplas a ambas relaciones. GSí que es correcto, aunque se debería utilizar el valor nulo para poder dar de alta tuplas en ambas relaciones. La sentencia de SQL "DROP VIEW": DEn ningún caso afecta a las tablas o vistas a partir de las cuales se define su expresión de tabla. EDestruye todas las tablas 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. FDestruye todas las tablas 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. GDestruye todas las tablas a partir de las cuales se define su expresión de tabla. 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? DSe recupera la copia de seguridad de la base de datos y se repiten PDQXDOPHQWH todas las transacciones realizadas desde la fecha de dicha copia. ESe recuperan las copias de seguridad de la base de datos y del fichero de diario y se repiten DXWRPiWLFDPHQWH las transacciones confirmadas en el diario desde la fecha de la copia de la base de datos. FSe mantienen las tablas de D1, y las tablas de D2 se recuperan de la copia de seguridad de la base de datos. GSe recuperan las copias de seguridad de la base de datos y del fichero de diario, se deshacen DXWRPiWLFDPHQWH las transacciones anuladas en el diario después de la fecha de la copia de la base de datos, y por último se repiten PDQXDOPHQWH todas las transacciones realizadas desde la fecha de la copia de la base de datos. Dado el siguiente esquema relacional: Alumno(dni:dom_dni, nombre:dom_nom) CP:{dni} Asignatura(cod:dom_cod, nombre:dom_nom, créditos:dom_cre) CP:{cod} Cursa(dni:dom_dni, cod:dom_cod, nota:dom_not) CP: {dni,cod} CAj: {dni} →Alumno CAj: {cod} →Asignatura La cardinalidad máxima de la relación &XUVDes DInfinita. ELa cardinalidad de la relación $OXPQR. FLa cardinalidad de la relación $VLJQDWXUD. GEl producto de la cardinalidad de $OXPQR por la cardinalidad de $VLJQDWXUD. Dado el esquema relacional de la cuestión 4, ¿qué información devuelve la siguiente consulta? SELECT Alumno.dni, Alumno.nombre, COUNT (cod) FROM Alumno NATURAL LEFT JOIN Cursa GROUP BY Alumno.dni, Alumno.nombre DEl dni, el nombre y el número de asignaturas matriculadas de los alumnos matriculados de alguna asignatura. EEl dni y nombre de todos los alumnos, y el número de asignaturas de las que están matriculados. FEl dni, el nombre y el número de asignaturas matriculadas de los alumnos que se han matriculado al menos de una asignatura. GEl dni y nombre de todos los alumnos, y el número de asignaturas de las que están matriculados siempre que este número sea distinto de cero. La propiedad de atomicidad de una transacción consiste DEn que su ejecución debe llevar a la base de datos a un estado consistente. EEn que las modificaciones realizadas por una transacción no confirmada no son visibles al resto de transacciones. FEn que la confirmación de una transacción implica la grabación de los cambios realizados en la base de datos. GEn que en una transacción o se ejecutan todas sus operaciones o no se ejecuta ninguna. ¿Cuál de los siguientes puntos 12 es una característica de las técnicas de bases de datos? DIntegración de toda la información de la organización. EPersistencia de los datos. FDescripción unificada de los datos, dependiente de las aplicaciones. GMecanismos para asegurar la integridad y la seguridad de los datos. Dados los siguientes esquemas de relación: R(a: dom_a, b:dom_b, c:dom_c) S(a:dom_a, b:dom_b, c:dom_c) y la igualdad siguiente, 5[D] 6[D] 5[D], indicar cuál de las siguientes afirmaciones es cierta. DSi la igualdad es cierta, entonces ninguna tupla de 6tiene un valor en el atributo Dque no sea igual al valor en el atributo Dde alguna tupla de 5. ELa igualdad sólo es cierta si 5 está vacía. FLa igualdad sólo es cierta si 5[D] ⊆6[D]. GLa igualdad sólo es cierta si 5[D] ∩6[D] = ∅. Dada la relación R de la cuestión 8 ¿cuál de estas igualdades es cierta? DR[b,c] R[b] × R[c]). E(R DONDE b=‘b1’ [b,c]) (R[b,c] DONDE b= ‘b1’). FR[b,c] (R[b] R[c]). G(R DONDE (b=‘b1’ ∧ c=‘c1’)) (R DONDE b=‘b1’ ∪ R DONDE c=‘c1’). Dados los esquemas de relación de la cuestión 8, a los que se les añaden las restricciones de que el atributo Den 6es la clave primaria y de que el atributo Den 5es una la clave ajena que hace referencia a 6indica cuál de las siguientes afirmaciones es cierta DPara cualquier base de datos, se cumple que 5[D] ∩6[D] = ∅. EPara cualquier base de datos, se cumple que 5[D] ∩6[D] ≠ ∅. FPara cualquier base de datos, se cumple que 5[D] ⊆6[D]. GPuede existir alguna base de datos en la que se cumple 5[D] ⊃6[D]. ¿Cuáles son las tres organizaciones primarias de ficheros? DOrdenada, inversión completa, dispersión. EDesordenada, ordenada y dispersión. FIndización primaria, indización secundaria y dispersión. GIndización ordenada de un nivel, indización multinivel, indización lógica. ¿Qué se puede afirmar de un sistema de gestión de bases de datos que procese transacciones como indica la figura inferior? (T1 y T2 son transacciones) T1 leer(X) Tiempo X=X+1 escribir(X) confirmar … X en T1 T2 X en T2 5 6 6 6 6 leer(X) … 6 6 DEl sistema de gestión no asegura la atomicidad de las transacciones. EEl sistema de gestión no asegura la consistencia en el procesamiento de las transacciones. FEl sistema de gestión no asegura el aislamiento de las transacciones. GEl sistema de gestión no asegura la persistencia de las transacciones. Dado el siguiente esquema relacional: R(a: dom_a, b:dom_b, c:dom_c) CP={a} CAj={b,c} → S Integridad referencial parcial S(b:dom_b, c:dom_c, d:dom_d) CP={b,c} CAj={b} → T Borrado en Cascada T(b:dom_b, e: dom_e) CP={b} y la siguiente extensión de dicho esquema: 5 6 7 D E F E F G E H a1 nulo c2 b1 c2 d1 b1 e1 a2 b3 nulo b1 c5 nulo b3 e5 b3 c6 nulo ¿Cuál será el comportamiento del SGBD frente al borrado de la tupla {(b,‘b1’), (e,‘e1’)} de T? DRechazar la operación de borrado. EBorrar la tupla de T y borrar en cascada las tuplas {(b,‘b1’), (c,‘c2’), (d,‘d1’)} y {(b,‘b1’), (c,‘c5’), (d,nulo)} de S. FBorrar la tupla de T y borrar en cascada las tuplas {(b,‘b1’), (c,‘c2’), (d,‘d1’)} y {(b,‘b1’), (c,‘c5’), (d,nulo)} de S y la tupla {(a,‘a1’), (b,nulo), (c,‘c2’)} de R. GBorrar sólo la tupla de T. Una vista en un esquema relacional es siempre: DUn subconjunto de tuplas de una relación del esquema. EUna relación derivada (virtual) definida por una sentencia SELECT. FUna o varias relaciones del esquema. GUna relación derivada (virtual) definida por medio de una sentencia SELECT sobre una única relación del esquema. %$6(6'('$726-81,262/8&,21(6 1) a) No, porque aparecerían dos tuplas en la relación &RQGXFH con la misma clave primaria, lo cual no es posible. b) Sí, porque al variar el dni las claves primarias serían diferentes. Basta también con poner un ejemplo: {(dni, 1), (matrícula, 'V-1111-AA'), (fecha, '21-6-99'), (h_inicio, '2:00'), (h_fin, '6:00')} {(dni, 2), (matrícula, 'V-1111-AA'), (fecha, '21-6-99'), (h_inicio, '7:00'), (h_fin, '12:00')} 2) que hayan sido conducidos alguna vez < que hayan sido revisados al menos una vez. 3) a)6(/(&7GQLQRPEUH)5207$;,67$ :+(5(WIQR,618//25GLUHFFLyQ,618// b) 6(/(&7&2817',67,1&7PDWUtFXOD)520&21'8&(&7$;,67$7 :+(5(&PDWUtFXOD127,16(/(&7PDWUtFXOD)5205(9,6,Ï1 $1'&GQL 7GQL$1'7HGDG c) 6(/(&77$FRGW7$QRPEUH5IHFKD&2817 )5207$//(57$5(9,6,Ï15 :+(5(7$FRGW 5FRGW *5283%<7$FRGW7$QRPEUH5IHFKD +$9,1*&2817! d) 6(/(&7',67,1&77PDWUtFXOD7WIQR )5207$;,7&21'8&(&27$;,67$& :+(5(7PDWUtFXOD &2PDWUtFXOD$1'&2GQL &GQL$1' &HGDG!6(/(&7$9*HGDG )5207$;,67$ $1' 6(/(&7&2817',67,1&75FRGW )5205(9,6,Ï15 :+(5(7PDWUtFXOD 5PDWUtFXOD e) 6(/(&77$FRGW7$QRPEUH)5207$//(57$ :+(5(127(;,6766(/(&7 )520&21'8&(&27$;,67$& :+(5(&2GQL &GQL$1'&HGDG!$1' 127(;,6766(/(&7)5205(9,6,Ï15 :+(5(5PDWUtFXOD &2PDWUtFXOD$1' 5FRGW 7$FRGW f) 6(/(&77PDWUtFXOD7WIQR&2817',67,1&7&2GQL )5207$;,7&21'8&(&2 :+(5(&2PDWUtFXOD 7PDWUtFXOD$1' 127(;,6766(/(&7)520&21'8&(&27$;,67$& :+(5(&2PDWUtFXOD 7PDWUtFXOD$1' &2GQL &GQL$1'&HGDG *5283%<7PDWUtFXOD7WIQR +$9,1*&2817',67,1&7&2GQL! 4) a) b) 5) INSERCIÓN en REVISIÓN MODIFICACIÓN del atributo 'matrícula' de REVISIÓN MODIFICACIÓN del atributo 'fecha' de REVISIÓN INSERCIÓN en CONDUCE MODIFICACIÓN del atributo 'matrícula' de CONDUCE MODIFICACIÓN del atributo 'fecha' de CONDUCE &5($7(75,**(57 $)7(5,16(57215(9,6,Ï1 )25($&+52: '(&/$5( $X[180%(5 %(*,1 6(/(&7&2817,172DX[ )520&21'8&(& :+(5(QHZPDWUtFXOD &PDWUtFXOD$1'QHZIHFKD &IHFKD ,)DX[!7+(15$,6(B$33/,&$7,21B(5525 1RVHSXHGH UHYLVDUXQWD[LTXHHVWiVLHQGRFRQGXFLGRHQHVHPLVPRGtD (1',) (1' CX: CONDUCE, TX: TAXI ∀CX ( (CONDUCE(CX) ∧ (CX.h_inicio ≥ '22:00' ∨ CX.h_inicio ≤ '06:00') ) → ∃TX ( TAXI(TX) ∧ TX.matrícula = CX.matrícula ∧ ¬nulo(TX.tfno) ) ) } o bien, ∀CX ∀TX ( (CONDUCE(CX) ∧ (CX.h_inicio ≥ '22:00' ∨ CX.h_inicio ≤ '06:00') ∧ TAXI(TX) ∧ TX.matrícula = CX.matrícula) → ¬nulo(TX.tfno) ) } y cualquier expresión equivalente a las anteriores. 62/8&,21(6 &8(67,21$5,2'(%$6(6'('$726 4 $ c a b d b d c c b c b c a b % a b d b d c c b c b c a b c & b d b d c c b c b c a b c a ' d b d c c b c b c a b c a b ( d c c b c b c a b c a b d b ) c c b c b c a b c a b d b d * c b c b c a b c a b d b d c + a b c a b d b d c c b c b c , c a b c a b d b d c c b c B