&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 (OHVTXHPDOyJLFRGHXQDEDVHGHGDWRVVHGHILQH D En función del contenido, el equipo físico, el equipo lógico y los usuarios del sistema de información. E En función de los contenidos del sistema de información, dependiente de la perspectiva que cada uno de los usuarios tiene de ellos. F En función de los contenidos del sistema de información, independiente de la perspectiva que cada uno de los usuarios tiene de ellos. G En función de la visión particular que cada usuario o aplicación tiene del sistema de información. (Q XQ tQGLFH HQ iUERO % GH 1 HQWUDGDV FRQ IDFWRU GH EORTXHR IE VXSRQLHQGR TXH WRGR HO ILFKHUR tQGLFH FDEH HQ XQ EORTXH GH GLVFR ¢FXiQWRV DFFHVRV D EORTXH GH PHPRULD VHFXQGDULD Pi[LPRV \ PtQLPRVKDUtDQIDOWDSDUDEXVFDU\REWHQHUXQUHJLVWURSRUHOFDPSRTXHRUGHQDGLFKRtQGLFH" D Mín: logfb N, Máx: fb. E Mín: logN fb, Máx: fb. F Mín: logfb N, Máx: logfb N. G Mín: 2, Máx 2. ¢&yPR VH GHILQLUtD HQ HO 6*%' 2UDFOH OD UHVWULFFLyQ GH LQWHJULGDG OD HGDG GH XQD SHUVRQD QR SXHGHGHFUHFHU" D Mediante una regla de actividad (TRIGGER). E No se pueden definir restricciones de integridad en Oracle 8.0, ya que el CRT no las permite. F Mediante una restricción de tabla (una instrucción CHECK sobre el atributo "edad"). G Mediante la instrucción "CREATE ASSERTION" del SQL estándar. 8QDDJUXSDFLyQRFO~VWHUHV D Es un tipo de organización de ficheros especial en la que dos tablas se agrupan en los mismos bloques de memoria secundaria según una clave ajena de frecuente uso. E Es cada hoja interna de un árbol B. F Es la lista de nodos ordenados que se establece entre las hojas de un árbol B+. G Es el bloque mínimo (normalmente 512 Kb) de transferencia de memoria secundaria a memoria principal, que agrupa varios cilindros no contiguos. 'DGDXQDEGDWRVVREUHODTXHIXQFLRQDQYDULDVDSOLFDFLRQHVODFUHDFLyQGHXQtQGLFHHQXQDWDEOD D Se considera una modificación del nivel externo, ya que cada aplicación trabaja con su esquema externo. E No cumple la propiedad de independencia lógica, ya que una aplicación no puede crear índices. F Se considera una modificación del nivel interno o físico, que afectaría al rendimiento de las otras aplicaciones. G No cumple la propiedad de independencia física, ya que afectaría al funcionamiento de las otras aplicaciones sobre la misma base de datos. ANULADA 'DGRHOVLJXLHQWHHVTXHPDGHEDVHGHGDWRVGHWUiILFRHVTXHPD Persona(GQL:entero, QRPEUH:cadena, GLUHFF:cadena) CP:{GQL} Multa(YHKtFXOR:cadena, SURS:entero, IHFKD:cadena, SWV:entero) CP:{YHKtFXOR, SURS, IHFKD} VNN:{SWV} CAj:{YHKtFXOR, SURS} → Vehículo f(YHKtFXOR)=PDWULF f(SURS)=SURS Integridad referencial completa Vehículo(PDWULF:cadena, SURS:entero, IHFKDBFRPSUD: cadena) CP:{PDWULF, SURS} CAj:{SURS} → Persona Borrado en cascada Modificación en cascada Integridad referencial completa ¿Cuál de las siguientes afirmaciones es CIERTA? D Es necesaria la definición de la biyección sobre el atributo de la clave ajena de la relación Vehículo. E El tipo de restricción de integridad referencial definida sobre la clave ajena de Vehículo es redundante y, por tanto, se podría eliminar. F En la relación Multa se podría eliminar la biyección. G El tipo de integridad referencial completa de la CAj de Multa NO es redundante. 'DGRHOHVTXHPD¢FXiOVHUiODFDUGLQDOLGDGPi[LPD\PtQLPDGHODVLJXLHQWHFRQVXOWD" Vehículo >< Multa D La cardinalidad mínima es 0 y la máxima 0 porque no hay atributos en común. E La cardinalidad mínima y máxima coinciden y es Card(Vehículo)xCard(Multa). F La cardinalidad mínima es 0 y la máxima Card(Vehículo). G La cardinalidad mínima es Card(Multa) y la máxima Card(Vehículo)xCard(Multa). (Q HO HVTXHPD ¢VH SHUPLWH OD LQVHUFLyQ GH XQD WXSOD HQ OD UHODFLyQ 9HKtFXOR TXH QR WHQJD SURSLHWDULR" D Sí, si se cambia la restricción de integridad referencial a parcial. E No, nunca. F Sí, sin realizar ningún cambio. G Sí, si se cambia la restricción de integridad referencial a débil. 'DGRHOHVTXHPD¢VHSRGUtDHOLPLQDUXQDWXSODGHODUHODFLyQ3HUVRQDFRQPXOWDV" D Nunca. E Sí, siempre, y además se borrarían todos los vehículos que, dentro de la relación Vehículo, estuvieran relacionados con dicha persona. F Sí, si previamente se ha modificado el valor asociado al atributo “dni” a nulo. G Sí, siempre y cuando no tuviera ningún vehículo asociado en la relación Vehículo. 6XSRQLHQGRTXHHQHOHVTXHPDVHOHDxDGHODVLJXLHQWHUHVWULFFLyQGHLQWHJULGDGJHQHUDO ¬∃X (Multa(X) ^ ¬∃Y(Persona(Y) ^ X.prop = Y.dni)) D Es sintácticamente correcta aunque no evaluable dado que es una fórmula no segura. E Es sintácticamente incorrecta. F Es correcta y necesaria, dado que permitiría asegurar que no se le pueda poner una multa a una persona que no existe (es decir, no está en la base de datos). G Es correcta aunque innecesaria dado que está incluida en las restricciones de integridad que ya están definidas. 'DGRHOHVTXHPD¢VRQHTXLYDOHQWHVODVVLJXLHQWHVFRQVXOWDV" 1. (Persona >< (Vehículo(matric, vehículo) >< Multa)(prop, dni))[nombre] 2. (Persona >< Multa(prop, dni))[nombre] D No y, además, la primera es sintácticamente incorrecta. E Sí y obtiene el nombre de las personas que poseen o han poseído algún vehículo. F No: La primera obtiene el nombre de las personas que, poseyendo o habiendo poseído un vehículo, tienen multas, mientras que la segunda obtiene también el nombre de las personas con multas, aunque no hayan poseído nunca ningún vehículo. G Sí y obtiene el nombre de las personas con multas. 6XSyQJDVH GRV SURFHVRV 3 \ 3 TXH TXLHUHQ DxDGLU GyODUHV FDGD XQR D XQD PLVPD FXHQWD FRUULHQWHLQLFLDOPHQWHFRQVDOGR PHGLDQWHGRVWUDQVDFFLRQHVTXHVHVRODSDQFRPRVHLOXVWUDHQ ODILJXUD Ingreso P1 Ingreso P2 i1 i2 i3 i4 i5 Ante un funcionamiento normal del sistema ¿Qué saldo tendría su cuenta corriente si se consultará por una tercera transacción en los instantes i1, i2, i3, i4 y i5? D i1: 0$, i2: 0$, i3: 1000$, i4:1000$, i5: 1000$. E i1: 0$, i2: 0$, i3: 0$, i4: 0$, i5: 2000$. F i1: 0$, i2: 0$, i3: 1000$, i4: 2000$, i5: 2000$. G i1: 0$, i2: 0$, i3: 0$, i4: 1000$, i5: 2000$. 6XSyQJDVHXQVLVWHPDGHJHVWLyQGHEDVHVGHGDWRVFX\D~QLFDPHPRULDVHFXQGDULDFRQVLVWHHQGRV GLVFRVGXURV'\'WHQLHQGRXQDIUHFXHQFLDGHFKHFNSRLQWVGHSRUKRUD\KDFLHQGRFRSLDVGHO ILFKHURGLDULRFDGDPLQ6LODEDVHGHGDWRV\HOILFKHURGLDULRHVWiQHQHOGLVFR'\ODVFRSLDVGH VHJXULGDG GH OD EDVH GH GDWRV \ ODV FRSLDV GH VHJXULGDG GHO ILFKHUR GLDULR HQ ' ¢FXiO GH ODV VLJXLHQWHVDILUPDFLRQHVHV)$/6$" D Si se pierde D1, se perderán, como mucho, los últimos 10 min. de trabajo. E Si se pierde D1, habrá que restaurar la copia de seguridad de la base de datos más reciente de D2 y rehacer las transacciones confirmadas de la última copia de seguridad del fichero diario, también en D2. F Si se pierde D2, el sistema podrá continuar su funcionamiento normal, aunque con el riesgo de que si a continuación se pierde D1, se perdería toda la información. G Si se pierde D2, la base de datos podría estar en un estado inconsistente si se anula alguna transacción que estuviera empezada antes de la última copia de seguridad del fichero diario. &RQVLGHUDHOVLJXLHQWHHVTXHPDHQ64/GH2UDFOH CREATE TABLE PERSONA( dni NUMBER PRIMARY KEY NOT DEFERRABLE, nombre VARCHAR(40)); CREATE TABLE AMIGO( dni1 NUMBER CONSTRAINT fk1 REFERENCES PERSONA DEFERRABLE, dni2 NUMBER CONSTRAINT fk2 REFERENCES PERSONA DEFERRABLE, CONSTRAINT CP_Amigo PRIMARY KEY (dni1, dni2) DEFERRABLE, CONSTRAINT CP_No_reflexiva CHECK (dni1 < > dni2)); Y los datos siguientes: PERSONA AMIGO dni Nombre dni1 dni2 1111 Alba 1111 2222 2222 Joan 1111 3333 3333 Lluïsa 2222 1111 ¿Cómo modificarías el dni de Joan del valor 2222 al valor 4444 en cascada? D Mediante las instrucciones SQL siguientes: COMMIT; SET CONSTRAINT fk1 DEFERRED; SET CONSTRAINT fk2 DEFERRED; UPDATE PERSONA SET dni=4444 WHERE dni=2222; UPDATE AMIGO SET dni1=4444 WHERE dni1=2222; UPDATE AMIGO SET dni2=4444 WHERE dni2=2222; COMMIT; E No se puede porque la restricción de clave primaria en persona no es diferible. F No se puede porque no se ha definido la opción "ON CASCADE". G Mediante las instrucciones SQL siguientes: COMMIT; SET CONSTRAINT CP_AMIGO DEFERRED; UPDATE PERSONA SET dni= 4444 WHERE dni=2222; COMMIT; %$6(6'('$726 El siguiente esquema relacional representa el sistema de información de control de vehículos. 3URSLHWDULR (GQL: d_dni, QRP: d_nom, GLU: d_dir, IHFKDBQDF: d_fecha) CP: {dni} VNN: {nom} VNN: {dir} VNN: {fecha_nac} 7LSRB9(FRG: d_cod, GHVF: d_desc, WDVD: d_tasa) CP:{cod} VNN: {desc} VNN: {tasa} 9HKtFXOR(QBPDW: d_n_mat, WLSR: d_tipo, DxRBIDE: d_año, SURSBDFW: d_dni) CP: {n_mat} VNN: {año_fab} CAj: {prop_act} → Propietario f(prop_act)→dni VNN: {prop_act} CAj: {tipo} → Tipo_V f(tipo)→cod &RPSUD(QBPDW: d_n_mat, SURS: d_dni, IHFKDBF: d_fecha) CP: {n_mat, fecha_c} VNN: {prop} CAj: {prop} → Propietario f(prop)→dni CAj: {n_mat} → Vehículo 5HVWULFFLRQHVGHLQWHJULGDG (1) Todo propietario está en Compra (2) Todo vehículo está en Compra (3) Un propietario no puede venderse a sí mismo un vehículo (4) Para cada vehículo, no puede haber ninguna compra posterior a la fecha de compra por parte del propietario actual donde los atributos tienen el siguiente significado: 3URSLHWDULRGQL: D.N.I. del propietario QRPnombre del propietario GLU: dirección del propietario IHFKDBQDF: fecha de nacimiento del propietario 7LSRB9 FRG: código del tipo de vehículo WDVD: impuesto del tipo de vehículo GHVFdescripción del tipo de vehículo 9HKtFXOR QBPDW: número de matrícula DxRBIDE:año de fabricación WLSR:del vehículo SURSBDFW: D.N.I del propietario actual &RPSUD SURS:D.N.I. del propietario antiguo (que compra o ha comprado el veh.) QBPDW: número de matrícula IHFKDBF:fecha de compra del vehículo '(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: DDiferentes vehículos del mismo tipo, ¿pueden pagar diferentes tasas? Justifique brevemente la respuesta. (0.25) E¿Puede un propietario aparecer como propietario actual de varios vehículos? Justifique brevemente la respuesta. (0.25) Escriba en SQL/92 las siguientes consultas: DObtener el nombre y dirección de los propietarios que poseen actualmente algún vehículo, junto con la matrícula de los mismos. (0.25) EObtener el nombre y fecha de nacimiento de los propietarios que poseen actualmente más de un vehículo. (0.25) FObtener el nombre de los propietarios actuales de los vehículos cuyo tipo se describe como “turismo”. (0.25) GObtener la matrícula del vehículo y el nombre del propietario actual de los vehículos que sólo han tenido ese propietario. (0.5) HObtener para cada tipo con más de 3 vehículos, el número de vehículos de ese tipo que hayan tenido más de 2 propietarios. (1) IObtener la descripción del tipo de vehículo del que hay más vehículos y el número de éstos. (1) JObtener el nombre de los propietarios que han tenido o tienen algún vehículo de cada uno de los tipos cuya tasa es superior a 10000. (1) Dada la restricción de integridad: “Todo propietario está en Compra” DEnumere las operaciones sobre la base de datos que podrían violar la restricción. (0.5) EDiseñe un disparador, “trigger”, de ORACLE8 para controlar alguna de las operaciones enumeradas en la cuestión anterior. (0.5) Exprese la siguiente restricción de integridad en &iOFXOR5HODFLRQDOGH7XSODV: “Para cada vehículo, no puede haber ninguna compra posterior a la fecha de compra por parte del propietario actual”. (0.75) %$6(6'('$726-81,262/8&,21(6 1) a) No, porque aparecerían dos tuplas en la relación 7LSRB9 con el mismo cod y diferente tasa, lo cual no es posible, porque cod es la clave primaria. b) Sí, ya que no hay ninguna R.I. que lo impida. Por ejemplo, las siguientes tuplas de Vehículo: {(n_mat, 'V-1111-GG'), (tipo, 'tt'), (año_fab, '1999'), (prop_act, '33333333') } {(n_mat, 'V-2222-HH'), (tipo, 'ss'), (año_fab, '1998'), (prop_act, '33333333') } son consistentes e indicarían que dos vehículos tendrían el propietario con dni '33333333'. 2) a)6(/(&73QRP3GLU9QBPDW)520SURSLHWDULR3YHKtFXOR9 :+(5(3GQL 9SURSBDFW b) 6(/(&73QRP3IHFKDBQDF)520SURSLHWDULR3 :+(5(6(/(&7&2817)520YHKtFXOR9 :+(5(3GQL 9SURSBDFW c) 6(/(&7',67,1&73QRP)520SURSLHWDULR3YHKtFXOR9WLSRBY7 :+(5(3GQL 9SURSBDFW$1'9WLSR 7FRG$1'7GHVF WXULVPR d) 6(/(&79QBPDW3QRP)520SURSLHWDULR3YHKtFXOR9 :+(5(3GQL 9SURSBDFW$1' 127(;,6766(/(&7)520FRPSUD& :+(5(&QBPDW 9QBPDW$1'3GQL!&SURS e) 6(/(&7&2817 )520YHKtFXOR9 :+(5(6(/(&7&2817)520YHKLFXOR9:+(5(9WLSR 9WLSR $1' 6(/(&7&2817)520FRPSUD&:+(5(&QBPDW 9QBPDW *5283%<9WLSR f) 6(/(&77GHVF&2817 )520WLSRBY7YHKtFXOR9 :+(5(9WLSR 7FRG *5283%<7FRG7GHVF +$9,1*&2817! $//6(/(&7&2817 )520YHKtFXOR9 :+(5(9WLSR,612718// *5283%<9WLSR 6(/(&73QRP )520SURSLHWDULR3 :+(5(127(;,6766(/(&7)520WLSRBY7 :+(5(7WDVD!$1' 127(;,6766(/(&7)520YHKtFXOR9FRPSUD& :+(5(9WLSR 7FRG$1' &QBPDW 9QBPDW$1'&SURS 3GQL $1'(;,6766(/(&7)520YHKtFXOR9WLSRBY7 :+(5(9WLSR 7FRG$1'7WDVD! g) 3) a) INSERCIÓN en PROPIETARIO BORRADO en COMPRA MODIFICACIÓN del atributo 'prop' de COMPRA b) 4) &5($7(75,**(57 $)7(5'(/(7(21&2035$ )25($&+52: '(&/$5( DX[180%(5 %(*,1 6(/(&7&2817,172DX[ )520&2035$& :+(5(ROGSURS &SURS ,)DX[ 7+(15$,6(B$33/,&$7,21B(5525 1RVHSXHGH ERUUDUODFRPSUDSRUTXHGHMDUtDPRVXQSURSLHWDULRVLQFRPSUDV (1',) (1' VX: VEHICULO, CX, CY: COMPRA ∀VX,CX (VEHICULO(VX) ∧ COMPRA(CX) ∧ CX.n_mat = VX.n_mat ∧ CX.prop = VX.prop_act ) → ¬∃CY (COMPRA(CY) ∧ CY.n_mat = VX.n_mat ∧ CY.fecha_c > CX.fecha_c) o bien, ∀VX (VEHICULO(VX) → ¬∃CX∃CY (COMPRA(CX) ∧ CX.n_mat = VX.n_mat ∧ CX.prop = VX.prop_act ∧ COMPRA(CY) ∧ CY.n_mat = VX.n_mat ∧ CY.fecha_c > CX.fecha_c) o bien, ¬∃VX∃CX∃CY(VEHICULO(VX) ∧ COMPRA(CX) ∧ CX.n_mat = VX.n_mat ∧ CX.prop = VX.prop_act ∧ COMPRA(CY) ∧ CY.n_mat = VX.n_mat ∧ CY.fecha_c > CX.fecha_c) y cualquier expresión equivalente a las anteriores. &8(67,21$5,2'(%$6(6'('$726 4 $ C D A A Anul B D B A D D D D A % C A D A Anul D B B B B A C A C & A C C B C A B B D Anul D A A D ' B A B C C D B B B Anul B B B A ( A A C A C B D B B A B B Anul A 62/8&,21(6 ) Anul A C C C A A D D B A A D B Al anularse una pregunta, la fórmula a aplicar es: (Bien - Mal / 3.0) * 0.27