CUESTIONARIO DE BASES DE DATOS 1/9/2000. • Rellene con las

Anuncio
CUESTIONARIO DE BASES DE DATOS 1/9/2000.
• Rellene con las respuestas correctas el casillero adjunto.
• Cada cuestión vale 0.25 puntos. Sólo hay una opción correcta. Cada cuestión mal
contestada anula 1/3 de cuestión correcta, por lo tanto la nota obtenida en el test es el
resultado de la siguiente fórmula: (Bien_Contestadas − Mal_contestadas/3)*0.25.
1. ¿Qué organización de almacenamiento es poco eficiente para el acceso ordenado a los
registros de datos?
a)
b)
c)
d)
Fichero disperso
Índice ordenado de un nivel primario
Índice multinivel
Índice multinivel dinámico de tipo árbol B
2. ¿Cuál de las siguientes herramientas es utilizada por el sistema de gestión de bases de datos
para asegurar la atomicidad y persistencia de las transacciones?
a)
b)
c)
d)
Módulo de comprobación de la integridad
Fichero diario
Módulo de ejecución de los disparadores
Unidad de mantenimiento de la corriente eléctrica
3. ¿Cuáles son las dos formas de comprobación de la integridad que disponen los sistemas de
gestión de bases de datos que cumplen el estándar SQL/92?
a)
b)
c)
d)
Diferida e inmediata
Segura y parcial
Diferida y comprobación flexible
Sólo disponen de una forma
4. Dado el siguiente esquema relacional
Alumno(exp:entero, nombre:tira(40), alojamiento:tira(30), edad:entero)
CP: {exp}
Practica(exp:entero, deporte:tira(20))
CP: {exp, deporte}
y la siguiente expresión en SQL/92
SELECT DISTINCT alojamiento
FROM Alumno
WHERE edad>22
¿Cuál es la expresión en SQL/92 equivalente en la que no se use la palabra DISTINCT?
a) SELECT alojamiento
FROM Alumno
WHERE edad>22
b) SELECT alojamiento
FROM Alumno
WHERE edad>22 AND (SELECT COUNT (alojamiento) FROM Alumno) = 1
c) No existe
d) SELECT alojamiento
FROM Alumno
WHERE edad>22
GROUP BY alojamiento
5. ¿Por qué motivo no siempre es cierta la igualdad de expresiones del Álgebra Relacional
sobre el esquema de la cuestión 4?
(Alumno
Practica)[exp] = Alumno [exp] ∪ Practica[exp]
a) Pueden existir tuplas con un valor en el atributo exp de la relación Alumno que no es
idéntico al valor del atributo exp de alguna tupla de la relación Practica o existen
tuplas con un valor en el atributo exp de la relación Practica que no es idéntico al valor
del atributo exp de alguna tupla de la relación Alumno
b) Pueden existir tuplas con un valor en el atributo exp de la relación Alumno que no es
idéntico al valor del atributo exp de alguna tupla de la relación Practica
c) Pueden existir tuplas con un valor en el atributo exp de la relación Practica que no es
idéntico al valor del atributo exp de alguna tupla de la relación Alumno
d) Pueden existir tuplas en la relación Practica con valor nulo en el atributo exp
6. En el siguiente esquema relacional en SQL/92, correspondiente a la relación Alumno del
esquema relacional de la cuestión 4 con alguna modificación
CREATE TABLE Alumno(
exp INTEGER CONSTRAINT clave_primaria PRIMARY KEY DEFERRABLE,
nombre CHAR(40),
alojamiento CHAR(30),
edad INTEGER,
compañero INTEGER NOT NULL UNIQUE
CONSTRAINT clave_ajena REFERENCES Alumno DEFERRABLE,
CONSTRAINT diferentes CHECK(exp <> compañero) DEFERRABLE)
¿Cómo habría que dar de alta nuevos alumnos en la base de datos?
a) Mediante una transacción que inserta dos nuevos alumnos, cada uno compañero del
otro, y obligatoriamente con todas las restricciones comprobadas en modo diferido
b) Mediante una transacción que inserta dos nuevos alumnos, cada uno compañero del
otro, y con la restricción clave_ajena comprobada en modo inmediato
c) Mediante una transacción que inserta dos nuevos alumnos, cada uno compañero del
otro, y con la restricción clave_ajena comprobada en modo diferido
d) No se puede porque existe una dependencia cíclica entre el alumno y su compañero
7. ¿De qué forma se minimizan las pérdidas de memoria principal que afectan a la gestión del
fichero de diario?
a)
b)
c)
d)
Con una manipulación en la que intervienen al mínimo los buffers intermedios
Mediante el uso de una doble copia en disco
Con un sistema de soporte de corriente eléctrica
Mediante el uso de puntos de verificación
ANULADA
8. Sea el siguiente esquema relacional:
ASIGNATURA(código:
dom_asg, nombre: dom_nom)
CP: {código}
PRERRE(código: dom_asg, pre: dom_asg)
CP: {código, pre}
CAj: {pre} → Asignatura
f(pre) =código
CAj: {código} → Asignatura
g(código) =código
donde cada tupla de la relación PRERRE representa la información sobre los prerrequisitos de
una asignatura: código de la asignatura (código) y código de una asignatura que es
prerrequisito de ella (pre), ¿qué estructura tiene el plan de estudios?:
a) Una asignatura sólo puede tener un prerrequisito
b) Cualquier asignatura puede tener varios prerrequisitos pero sólo puede ser a su vez
prerrequisito de una asignatura
c) Cualquier asignatura puede tener varios prerrequisitos y ser a su vez prerrequisito de
cualquier número de ellas
d) Toda asignatura debe tener un prerrequisito
9. En la base de datos de la cuestión 8 ¿qué expresión de álgebra relacional selecciona todas
las asignaturas que no tienen prerrequisitos?
a)
b)
c)
d)
ASIGNATURA [código] − PRERRE [código]
ASIGNATURA [código] − PRERRE [pre] (pre, código)
PRERRE [pre]
(ASIGNATURA [código] (código,pre) − PRERRE [pre] )
PRERRE [pre] (pre, código) − ASIGNATURA [código]
10.En la base de datos de la cuestión 8 ¿a qué requerimiento responde la siguiente expresión
de álgebra relacional?
PRERRE [código] − PRERRE [pre] (pre, código)
a)
b)
c)
d)
Asignaturas que tienen prerrequisitos y no son prerrequisito de ninguna asignatura
Asignaturas que tienen prerrequisitos
Asignaturas que son prerrequisito de alguna pero no tienen prerrequisitos
Asignaturas que no son prerrequisitos de ninguna asignatura
11.En la base de datos de la cuestión 8, si se incluye la directriz de Borrado en Cascada para
la clave ajena {código} de la relación Prerre, ¿qué efecto tendría la operación DELETE
Asignatura WHERE código="AD8"?
a) Borraría la tupla de Asignatura con código AD8 sólo si no tuviera prerrequisitos
b) Borraría la tupla de Asignatura con código AD8 y todas las tuplas de Asignatura que
fueran sus prerrequisitos
c) Borraría la tupla de Asignatura con código AD8 y todas las tuplas de Prerre que
representaran sus prerrequisitos, sólo en el caso de que la asignatura AD8 no fuera
prerrequisito de otras
d) Borraría la tupla de Asignatura con código AD8 y todas las tuplas de Prerre que
tuvieran el valor AD8 en el atributo pre
12.En la base de datos de la cuestión 8, ¿qué propiedad expresa la siguiente restricción de
integridad escrita en SQL?
CREATE ASSERTION CHECK (NOT EXISTS (SELECT * FROM Prerre P1
WHERE EXISTS (SELECT * FROM Prerre P2
WHERE (P1.código=P2.pre AND P2.código=P1.pre)))
a) Una asignatura no puede tener dos prerrequisitos
b) Si una asignatura A1 tiene a otra A2 como prerrequisito, entonces A1 no puede ser
prerrequisito de A2
c) Una asignatura puede ser prerrequisito de si misma
d) Toda asignatura es prerrequisito de otra
13.Un SGBD ofrece independencia física si:
a) Ofrece distintas implementaciones para las estructuras de datos del modelo de datos
subyacente
b) Permite la definición de esquemas externos
c) El modelo de datos subyacente contempla el uso de distintas estructuras de datos
d) Los programas de acceso a la base de datos son independientes de los cambios
realizados en la implementación de las estructuras de datos del esquema lógico
14.Los índices en árbol garantizan el mismo número de accesos a bloques de disco para
recuperar cualquier registro de datos:
a)
b)
c)
d)
Siempre
Sí si son de búsqueda
Sí si son árboles B+
Sí si son árboles B
BASES DE DATOS
1/9/2000
El siguiente esquema relacional representa el sistema de información de un servicio de
urgencias sanitarias domiciliarias:
Personal(dni:d_dni, nombre:d_nom, categoría:d_cat, tfno:d_tfn, edad: d_edad)
CP: {dni}
VNN: {nombre}
VNN: {categoría}
Material(codm: d_cod, descripción: d_desc, precio:d_precio)
CP: {codm}
VNN: {precio}
Vehículo (matrícula: d_mat, tipo: d_tipo)
CP: {matrícula}
VNN: {tipo}
Salida(cods:d_cod, motivo:d_mot, matrícula:d_mat, coste_material:d_coste, fecha:d_fecha)
CP: {cods}
CAj: {matrícula}→ Vehículo
VNN: {motivo}
VNN: {fecha}
PersonalSal(cods: d_cod, dni: d_dni)
CP: {cods,dni}
CAj: {cods}→ Salida
CAj: {dni}→ Personal
MaterialSal(cods: d_cod, codm: d_cod, cantidad: d_cant)
CP: {cods,codm}
CAj: {cods}→ Salida
CAj: {codm}→ Material
donde los atributos tienen el siguiente significado:
Personal: dni: D.N.I. del sanitario
nombre: nombre del sanitario categoría: [‘médico’,
‘ATS’, ‘celador’]
tfno: teléfono particular del sanitario
edad: del sanitario
Material: codm: código del material
descripción: del material
Vehículo: matrícula: matrícula del vehículo
precio: precio unitario
tipo: [‘ambulancia’, ‘coche’]
Salida: cods: código de la salida domiciliaria motivo: de la salida matrícula:del vehículo
utilizado coste_material: total en pesetas del material utilizado en la salida fecha: de la salida
PersonalSal: En la salida de código cods ha participado el sanitario de D.N.I. dni
MaterialSal: En la salida de código cods se han utilizado cantidad unidades del material de
código codm
DESPUÉS DE LEER ATENTAMENTE EL ESQUEMA RELACIONAL ANTERIOR,
RESUELVA LOS SIGUIENTES EJERCICIOS.
1. Resuelva las siguientes cuestiones sobre el esquema anterior (justifique brevemente las
respuestas):
a) ¿Un miembro del personal sanitario puede participar en más de una salida en un mismo
día? (0.25)
b) ¿Puede haber alguna salida sin vehículo y sin personal sanitario asignado? (0.25)
2. Expresar la siguiente restricción en CRT.
“En toda salida con vehículo de tipo ‘ambulancia’ debe haber por lo menos un ‘médico’ ”
(0.75)
3. El atributo coste_material de la relación Salida es una información derivada que se debe
mantener actualizada en todo momento.
a) Enumere qué operaciones sobre la base de datos podrían afectar a esta restricción. (0.5)
b) Diseñe un disparador (“trigger”) de ORACLE8 para controlar alguna de las operaciones
enumeradas. (0.5)
4. Resuelva las siguientes cuestiones en SQL/92 sobre el esquema anterior:
a) Obtener el código y coste de material de las salidas sin vehículo.
(0.25)
b) Indicar cuántos días ha sido utilizado el vehículo de matrícula ‘V-3333-LO’.
(0.25)
c) Obtener el dni, el nombre y la edad de los miembros del personal más viejos.
(0.25)
d) Obtener el DNI y nombre de los médicos que no han participado en ninguna salida. (0.5)
e) Obtener los materiales (código y descripción) utilizados que sean comunes a todas las
salidas con vehículo de tipo “ambulancia”. (1)
f) Obtener los vehículos (matrícula y tipo) que hayan realizado el máximo número de
salidas.
(1)
g) Obtener la matrícula y tipo de los vehículos en los que entre todas sus salidas han
participado todos los ATS.
(1)
BASES DE DATOS
SEPTIEMBRE 2000
SOLUCIONES
1) a) Sí, ya que puede haber más de dos salidas en un día, y no hay ninguna restricción que impida
que la misma persona esté en todas estas salidas.
b) Sí, ya que “matrícula” puede ser nulo y puede haber salidas sin “personalsal” asociados.:
2)
VX: VEHICULO, SX: SALIDA, PSX: PERSONALSAL, PX: PERSONAL
∀SX∀VX ((SALIDA(SX) ∧ VEHICULO(VX) ∧ SX.matrícula = VX.matrícula ∧ VX.tipo =
‘ambulancia’)) → ∃PSX, PX (PERSONALSAL(PSX) ∧ PERSONAL(PX) ∧ PSX.dni = PX.dni
∧ PX.categoría = ‘médico’ ∧ PSX.cods = SX.cods))
o bien,
¬∃SX∃VX (SALIDA(SX) ∧ VEHICULO(VX) ∧ SX.matrícula = VX.matrícula ∧ VX.tipo =
‘ambulancia’ ∧ ¬∃PSX, PX (PERSONALSAL(PSX) ∧ PERSONAL(PX) ∧ PSX.dni = PX.dni
∧ PX.categoría = ‘médico’ ∧ PSX.cods = SX.cods))
y cualquier expresión equivalente a las anteriores.
3) a)
b)
4)
INSERCIÓN en SALIDA
*(PONER A 0 EL ‘coste_material’)
MODIFICACIÓN del atributo ‘coste_material’ en SALIDA
*(PROHIBIDA)
INSERCIÓN en MATERIALSAL
MODIFICACIÓN del atributo 'cods' de MATERIALSAL
MODIFICACIÓN del atributo 'codm' de MATERIALSAL
MODIFICACIÓN del atributo 'cantidad' de MATERIALSAL
BORRADO en MATERIALSAL
MODIFICACIÓN del atributo ‘precio’ en MATERIAL
CREATE TRIGGER T1
AFTER INSERT ON MATERIALSAL
FOR EACH ROW
DECLARE
aux NUMBER;
BEGIN
SELECT M.precio * :new.cantidad INTO aux
FROM MATERIAL M
WHERE M.codm = :new.codm;
UPDATE SALIDA S SET coste_material = coste_material + aux
WHERE S.cods = :new.cods;
END;
a)
SELECT S.cods, S.coste_material FROM salida S
WHERE S.matrícula IS NULL;
b)
SELECT COUNT(DISTINCT S.fecha)
FROM salida S WHERE S.matrícula = ‘V-3333-LO’;
c)
SELECT P.dni, P.nombre, P.edad FROM personal P
WHERE P.edad = (SELECT MAX(edad) FROM personal);
d)
SELECT P.dni, P.nombre FROM personal P
WHERE P.categoría = ‘médico’ AND
NOT EXISTS (SELECT * FROM personalsal PS WHERE PS.dni = P.dni);
e)
SELECT M.codm, M.descripción
FROM material M
WHERE NOT EXISTS (SELECT * FROM salida S, vehículo V
WHERE S.matrícula = V.matrícula AND V.tipo = ‘ambulancia’
AND NOT EXISTS (SELECT * FROM materialsal MS
WHERE M.codm = MS.codm AND MS.cods = S.cods))
AND EXISTS (SELECT * FROM salida S2, vehículo V2
WHERE S2.matrícula = V2.matrícula AND V2.tipo = ‘ambulancia’);
f)
SELECT V.matrícula, V.tipo
FROM vehículo V, salida S
WHERE V.matrícula = S.matrícula
GROUP BY V.matrícula, V.tipo;
HAVING COUNT(*) >= ALL ( SELECT COUNT(*)
FROM vehículo V2, salida S2
WHERE V2.matrícula = S2.matrícula
GROUP BY V2.matrícula );
SELECT V.matrícula, V.tipo
FROM vehículo V
WHERE NOT EXISTS (SELECT * FROM personal P
WHERE P.categoría = ‘ATS’ AND
NOT EXISTS (SELECT * FROM salida S, personalsal PS
WHERE S.matrícula = V.vehículo AND
S.cods = PS.cods AND PS.dni = P.dni))
AND EXISTS (SELECT * FROM personal P
WHERE P.cateogría = ‘ATS’);
g)
CUESTIONARIO DE BASES DE DATOS 1/9/2000.
Q
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A
A
B
A
D
A
C
Anul
C
A
A
C
B
D
C
B
B
B
C
Anul
C
C
C
D
C
B
B
C
B
D
C
A
C
A
D
B
C
D
D
A
D
B
A
Anul
D
D
B
D
A
D
B
A
A
A
A
D
D
A
Anul
A
E
B
D
A
D
C
Anul
B
A
A
D
C
D
D
B
SOLUCIONES
F
C
C
B
C
A
Anul
A
B
B
A
B
C
C
A
Al anularse una pregunta, la fórmula a aplicar es: (Bien - Mal / 3.0) * 0.27
Descargar