Documente Academic
Documente Profesional
Documente Cultură
EXAMEN
2 ITIG
12/2/2001
RESUELTO
7. Cules de las siguientes expresiones responden a la consulta personal sanitario que ha realizado su primera
salida antes de los 21 aos?
E1: SAL_PER [dni] MINUS
((PERSONAL JOIN SAL_PER JOIN SALIDA) WHERE
TO_NUMBER(TO_CHAR(fecha,YYYY))-TO_NUMBER(TO_CHAR(fecha_nacim,YYYY))>=21)[dni]
E2: (((SUMMARIZE (SALIDA JOIN SAL_PER) GROUPBY(dni) ADD MIN(fecha) AS fecha)
JOIN PERSONAL) WHERE
TO_NUMBER(TO_CHAR(fecha,YYYY))-TO_NUMBER(TO_CHAR(fecha_nacim,YYYY))<21)[dni]
E3: ((PERSONAL JOIN SAL_PER JOIN SALIDA) WHERE
TO_NUMBER(TO_CHAR(fecha,YYYY))-TO_NUMBER(TO_CHAR(fecha_nacim,YYYY))<21)[dni]
9. Escribe una expresin del lgebra relacional que obtenga los datos de las personas que slo han realizado
salidas siendo responsables de las mismas.
T0:= (SAL_PER WHERE funcin='responsable')[dni] (han salido como resp.)
T1:= (SAL_PER WHERE funcin<>'responsable')[dni] (han salido como no resp.)
RDO:= (T0 MINUS T1) JOIN PERSONAL (siempre han salido como resp.)
10. Escribe una expresin del clculo relacional que obtenga los datos de las personas que slo han realizado
salidas siendo responsables de las mismas.
PERSONALX WHERE SAL_PERX
(IF SAL_PERX.dni=PERSONALX.dni THEN SAL_PERX.funcin=responsable)
11. Sobre la base de datos se debe cumplir la siguiente restriccin: en todas las salidas realizadas por ambulancias
debe haber por lo menos un mdico que acte como responsable. Escribir una expresin del clculo relacional
que encuentre las salidas realizadas que violan esta restriccin.
Violan la restriccin las salidas realizadas por ambulancias en donde no ha habido responsable o en donde
ha habido responsable y ste no era mdico.
SALIDAX WHERE
VEHCULOX (SALIDAX.matrcula=VEHCULOX.matrcula AND
VEHCULOX.tipo='ambulancia' AND
(NOT SAL_PERX (SAL_PERX.codsal=SALIDAX.codsal AND
SAL_PERX.funcin='responsable'))
OR SAL_PERX PERSONALX
(SAL_PERX.codsal=SALIDAX.codsal AND
SAL_PERX.dni=PERSONALX.dni AND
SAL_PERX.funcin=responsable AND
PERSONALX.categora<>'mdico')))
12. Para cada mdico que ha actuado como responsable se quiere saber el nmero de salidas que ha realizado con
y sin vehculo y el nmero de salidas que ha realizado con y sin coste de material. Qu expresiones se deben
aadir en el SELECT de la siguiente consulta para obtener el resultado que se desea?
SELECT P.dni, P.nombre, ....
FROM
PERSONAL P, SAL_PER SP, SALIDA S
WHERE P.dni=SP.dni AND SP.codsal=S.codsal
AND
P.categoria=medico AND SP.funcion=responsable
GROUP BY P.dni, P.nombre;
13. Dada la consulta obtener el nombre de la persona ms jven de cada categora y las sentencias S1 y S2:
S1: SELECT P1.nombre,P1.categoria
FROM
PERSONAL P1
WHERE P1.fecha_nac>=
ALL(SELECT MAX(P2.fecha_nac)
FROM PERSONAL P2
GROUP BY P2.categoria);
Qu se debe hacer con la sentencia anterior para que obtenga los datos de los conductores que han realizado
salidas conduciendo todos los vehculos?
17. La siguiente sentencia SQL responde a la consulta DNI de las personas que siempre han realizado sus salidas
cumpliendo la misma funcin (conductor o responsable):
SELECT dni
FROM
SAL_PER
GROUP BY dni
HAVING COUNT(DISTINCT funcion)=1;
Indica cmo debe modificarse la sentencia anterior para que adems muestre dicha funcin.
SELECT dni, MAX(funcion)
FROM
SAL_PER
GROUP BY dni
HAVING COUNT(DISTINCT funcion)=1;
18. Escribe una sentencia SQL que para cada salida realizada obtenga su fecha y el nmero de personas que han
participado, adems se debe indicar si ha utilizado o no vehculo (mostrar los valores SI/NO) y el coste del
material en euros SELECT S.codsal, S.fecha, COUNT(*) personas,
DECODE(NVL(S.matricula,'N'),'N','NO','SI'),
NVL(S.coste_material,0)/166.386
FROM
SALIDA S; SAL_PER SP
WHERE S.codsal = SP.codsal
GROUP BY S.codsal, S.fecha, S.matricula, NVL(S.coste_material,0);
19. Escribe una sentencia SQL que obtenga los datos de las personas que slo realizan salidas en fin de semana.
SELECT P.dni, P.nombre, P.categoria, P.telefono, P.fecha_nacim
FROM
PERSONAL P, SAL_PER SP, SALIDA S
WHERE P.dni=SP.dni AND SP.codsal=S.codsal
GROUP BY P.dni, P.nombre, P.categoria, P.telefono, P.fecha_nacim
HAVING MIN(TO_NUMBER(TO_CHAR(S.fecha,'d')))>=6;
21. Incluye en el esquema lgico los atributos compuestos de PROYECTO: empresa y tarea.
EMPRESA(nif,nombre,direccin,contacto)
PROYECTO(nmero,fecha_inicio,fecha_fin,estado,importe_tot,nif)
nif es clave ajena a EMPRESA, no acepta nulos y la
regla de borrado es restringir.
TAREA(descripcin,importe_base)
PRESUPUESTO(nmero,descripcin,presupuesto),
nmero es clave ajena a PROYECTO, no acepta nulos y la
regla de borrado es propagar.
descripcin es clave ajena a TAREA, no acepta nulos y la
regla de borrado es restringir.
25. Tal y como se especifica en los requerimientos, en el esquema conceptual se refleja que cada operario slo
puede estar asignado a un proyecto (que adems estar en ejecucin). Cmo se debe modificar el esquema
lgico relacional obtenido hasta el momento para que se pueda mantener la informacin sobre en qu proyectos,
finalizados o no, ha trabajado cada operario?
OPERARIO(dni,nombre,especialidad)
TRABAJA(nmero,dni)
nmero es clave ajena a PROYECTO, no acepta nulos y
la regla de borrado es restringir o propagar.
dni es clave ajena a OPERARIO, no acepta nulos y la regla
de borrado es propagar.