Está en la página 1de 13

Estructuras de Datos

Grado en Ingeniera Informtica, 2 curso


Ejercicios
1.

a.
a.
b.

Escribir en SQL las sentencias necesarias para crear una base de datos que almacene informacin de
una red social asimtrica (tipo follow) en la que los usuarios tienen un nick, nombre y email.
Definir adecuadamente las claves primarias y restricciones de cada tabla.
Insertar los datos necesarios para almacenar la siguiente red social (slo se indican los nicks; definir
libremente el resto de datos):
nicola

luis
juan
nuria
pedro
maria

alba

2.

Partiendo de las tablas del ejercicio anterior, escribir en SQL las consultas que permitan obtener la siguiente
informacin:
a. Los seguidores comunes de luis y maria.
b. Los seguidores de grado dos de nicola.
c. Reescribir las consultas anteriores considerando que la red fuese simtrica (la relacin de seguir
siempre es mutua).

3.

Escribir en SQL las sentencias necesarias para almacenar la informacin sobre vuelos areos incluyendo los
siguientes datos:
Aeropuertos con cdigo (tres letras, nico) y ciudad (una ciudad puede tener varios aeropuertos).
Vuelos con nmero (nico), origen y destino (cdigos de aeropuerto), hora de salida, n de plazas
(suponiendo que siempre fuese el mismo modelo de avin), y lnea area que los opera.
Lneas areas con nombre y abreviatura (nica).
Pasajeros con DNI y nombre.
Reservas de vuelos por pasajeros en una fecha dada, con su precio.
Poblar las tablas con algunos datos.

4.

Escribir en SQL las sentencias de actualizacin que apliquen los siguientes cambios en la base de datos del
ejercicio anterior:
a. Anular todas las reservas de los vuelos que salen de Madrid.
b. Reasignar a Iberia todos los vuelos de British Airways que salen de Madrid.
c. Duplicar por dos el precio de las reservas de easyjet del mes de agosto 2010.

5.

Escribir en SQL las consultas que permitan obtener la siguiente informacin en la base de datos del ejercicio 3:
a. Vuelos que salen de Pars.
b. Todos los vuelos entre Madrid y Pars con salida antes de las 12:00.
c. Nombre de pasajeros que vuelan de Londres a Pars, indicando la fecha.
d. Nombre de pasajeros que vuelan entre Londres y Pars, en cualquier sentido.
e. Pasajeros que hacen un trayecto de ida y vuelta en el mismo da.

6.

Escribir en SQL las consultas que permitan obtener la siguiente informacin en la base de datos del ejercicio 3:
a. Lneas que no tienen vuelos con salida desde Londres.
b. Vuelos completos, indicando la fecha.
c. Vuelos vacos (sin reservas) en 2011.
d. Lneas que slo operan vuelos con salida o llegada a Madrid.

7.

Escribir en SQL las consultas que permitan obtener la siguiente informacin en la base de datos del ejercicio 3:
a. Aeropuerto con ms trfico (contando salidas y llegadas).
b. Lneas areas ordenadas por el n total de reservas en los vuelos que operan.
c. Nombre de la ciudad desde la que sale el primer vuelo del da.
d. Gasto total promedio por pasajero.
e. Facturacin total por lnea area y aeropuerto de salida.

8.

Dado el estado de la siguiente base de datos de una empresa:

Mostrar el resultado de las siguientes sentencias SQL, y en su caso el estado de las tablas modificadas (suponer
que los comandos de SQL siempre se aplican a la BD original):
a.
b.
c.
d.
e.
f.

DELETE FROM EMPLEADO WHERE dni='123456789';


DELETE FROM EMPLEADO WHERE Apellido1='Cabrera';
ALTER TABLA EMPLEADO ADD COLUMN Trabajo VARCHAR (12);
ALTER TABLA EMPLEADO DROP COLUMN direccin CASCADE;
INSERT INTO EMPLEADO VALUES ('Ricardo', 'Roca', 'Flores', '653298653', '1962-12-30', 'Los Jarales, 47',
'H', 37000, '653298653, 4);
INSERT INTO EMPLEADO (Nombre, Apellido1, Dno, Dni) VALUES ('Ricardo', 'Roca', 4, '653298653');

g.
h.
i.
j.

k.

9.

UPDATE PROYECTO SET UbicacinProyecto='Valencia', NumDptoProyecto = 5


WHERE NumProyecto=10;
SELECT FechaNac, Direccin FROM EMPLEADO
WHERE Nombre='Jos' AND Apellido1='Prez' AND Apellido2='Prez';
SELECT Nombre, Apellido1, Direccin FROM EMPLEADO, DEPARTAMENTO
WHERE NombreDpto='Investigacin' AND NumeroDpto=Dno;
SELECT NumProyecto, NumDptoProyecto, Apellido1, Direccin, FechaNac
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NumDptoProyecto='NumeroDpto' AND DniDirector=Dni AND UbicacionProyecto='Gijon';
SELECT Nombre, Apellido1, Direccin
FROM (EMPLEADO JOIN DEPARTAMENTO ON Dno=NumeroDpto)
WHERE NombreDpto='Investigacin';

Disear un diagrama Entidad Relacin que describa en detalle las entidades, atributos, relaciones y claves para
almacenar en una base de datos relacional la siguiente informacin:
a. Pelculas, con ttulo, nacionalidad, gnero, reparto, director, guionista, fecha de estreno.
b. Actores, con nombre, gnero (masculino/femenino), y pelculas en las que han actuado (indicando el
personaje que interpretan).
c. Directores, con nombre y pelculas dirigidas.
d. Guionistas, con nombre y pelculas cuyo guin han escrito.
Indicar con detalle las restricciones de cardinalidad, as como las claves que pudiese haber.
Para simplificar, considerar inicialmente:
Que los ttulos de las pelculas y los nombres de las personas no se repiten.
Que nadie puede ser a la vez actor y director o guionista, sino slo una de las tres cosas.

10. Refinar el diseo de la pregunta anterior con las siguientes elaboraciones:


a. Eliminando la ltima restriccin, es decir, teniendo en cuenta que un cineasta puede trabajar como
actor, director y/o guionista en diferentes momentos de su carrera (o incluso simultneamente).
b. Aadiendo informacin sobre los scars recibidos, reflejando quin o qu lo recibe (actor, pelcula,
director, etc.), la modalidad (mejor pelcula, mejor guin, mejor actor protagonista, etc.), la fecha, y
las circunstancias (p.e. mejor actor por un papel determinado, mejor director por una pelcula
concreta, etc.).
11. Convertir en tablas el modelo diseado en las dos preguntas anteriores. Incluir algn registro de ejemplo en
cada tabla.
12. Describir las estructuras del ejercicio anterior en el modelo relacional.
a. Describir con detalle los esquemas y elementos del modelo en notacin conjuntista.
b. Escribir las sentencias SQL necesarias para implementar los esquemas en una base de datos relacional.
13. Una cadena de libreras requiere una aplicacin de gestin de negocio que cubra la gestin del catlogo,
existencias, ventas, y recursos humanos. Disear un modelo Entidad Relacin para el desarrollo de una base de
datos que d soporte a esta aplicacin, gestionando la siguiente informacin, con los datos que se indican:
a. Libros a la venta: ttulo, autor(es), editorial, ISBN y precio.
b. Editoriales de los libros: nombre, CIF, telfonos de contacto.
c. Autores de los libros: nombre (se supone que el nombre no se repite, o que a la librera no le importa).
d. Empleados de la librera: nombre, NIF, sueldo, y tienda en la que est destinado.
e. Tiendas de la cadena: direccin postal, encargado (uno de los empleados cumple esta funcin), y n de
ejemplares de cada libro disponibles en la tienda.
f. Ventas: libro, fecha de venta, tienda donde se ha vendido el libro, y empleado que ha hecho la
operacin.

Detallar los aspectos de cardinalidad, participacin total o parcial en las relaciones, claves primarias, entidades
dbiles si las hubiera, y no incluir ms datos que los que estrictamente se indican.
14. Convertir a esquemas de modelo relacional las estructuras del ejercicio anterior.
15. El siguiente diagrama E/R describe estructuras de base de datos para almacenar informacin sobre clubes,
jugadores y resultados de una temporada de la liga de ftbol (para simplificar se supone que los clubes no
cambian de entrenador, ni los jugadores cambian de equipo, a mitad de temporada):

fecha

alineado

goles_visisi
goles_visi
tante

goles_local

Jugador

n1

1
Juega

local

demarcacion
n

visitante

Encuentro

nombre

Club
nombre
nombre

Entenador

Entrena

1n
ciudad
Ganador
ao
n

Titulo

nombre

Convertir este diseo en esquemas relacionales, indicando cules seran las claves primarias y forneas. Nota:
la demarcacin de un jugador puede ser portero, defensa, centrocampista, delantero. Supondremos para
simplificar que los nombres de entrenadores y jugadores no se repiten.
16. Escribir en SQL las estructuras del ejercicio anterior.
17. Disear un modelo E/R para las estructuras del ejercicio 1.
18. Disear un modelo E/R para las estructuras del ejercicio 3.
19. Disear un modelo E/R para las tablas del ejercicio 8.
20. Dados los siguientes esquemas:
EQUIPO (Nombre, Estadio, Presidente, Entrenador, Num_socios)
JUGADOR (Nombre, Dorsal, Posicin, Nacionalidad, Nombre_equipo, Entrenador)
VUELO (Nvuelo, Hora, Origen, Destino, Ciudad_origen, Ciudad_destino)
FINCA (Calle, Numero, Municipio, Provincia, Codigo_postal, Dni_presidente, Dni_administrador)
a. Establecer todas las claves de cada esquema, y proponer una clave primaria para cada uno.
b. Determinar una cobertura mnima de las dependencias de cada esquema.
c. Cul es la forma normal superior de cada esquema?
d. Normalizar a 3NF los esquemas que no lo sean, siguiendo el algoritmo de normalizacin 3NF.
e. Normalizar a BCNF los esquemas que no lo sean (incluyendo los que son 3NF), siguiendo el algoritmo
de normalizacin BCNF. Aplicar tambin el algoritmo BCNF a los esquemas 3NF obtenidos en el
apartado d anterior. Proponer claves primarias para los nuevos esquemas.
f. Indicar en su caso las dependencias funcionales que se hayan perdido en la normalizacin.
En los apartados d y e, mostrar paso a paso la aplicacin del algoritmo.

21. En una base de datos de una empresa de inversiones se definen los atributos siguientes:
b: broker
a: accin
o: oficina de un brker
q: nmero de acciones de un cliente
c: cliente
d: dividendos pagados por una accin
Sabemos que se cumplen las dependencias funcionales siguientes:
ad
{ c, a } q
cb
bo
Dado un esquema relacional R (b, o, a, q, c, d):
a. Determinar una clave idnea para R.
b. Est R en segunda forma normal?
c. Descomponer R a tercera forma normal.
Supongamos que se descompusiera el esquema R en los dos esquemas siguientes:
R1(c, a, q, d)
R2(c, b, o)
d. Estn R1 y R2 en tercera forma normal?
22. Dados los siguientes esquemas relacionales:
RESERVA (Nombre_pasajero, Dni, Nvuelo, Aeropuerto_origen, Aeropuerto_destino, Hora, Fecha, Precio)
VUELO (Nvuelo, Hora, Aeropuerto_origen, Aeropuerto_destino, Ciudad_origen, Ciudad_destino)
Adems de las restricciones naturales (p.e. dos personas no pueden tener el mismo DNI), consideramos que se
dan las siguientes condiciones:
Algunas ciudades tienen varios aeropuertos.
Un mismo vuelo puede tener precios distintos en diferentes reservas.
No pueden salir dos vuelos con el mismo nmero el mismo da.
No pueden salir dos vuelos a la misma hora desde el mismo aeropuerto.
Un pasajero no puede coger dos veces el mismo vuelo el mismo da, aunque no descartamos que
alguien pueda llegar a volar dos veces en distintos vuelos desde el mismo aeropuerto el mismo da (se
entiende que es difcil pero no imposible).
Dadas estas condiciones:
a. Determinar todas las claves de estos esquemas, y proponer claves primarias.
b. Indicar todas las dependencias funcionales que se dan entre los atributos de estas relaciones, evitando
redundancias (es decir, si una dependencia se deriva de otras que ya se han indicado, no es necesario
indicarla).
c. Indicar en qu forma normal se encuentran los esquemas, justificando por qu.
d. Convertir ambos esquemas (por separado) a BCNF, indicando las claves primarias de los nuevos
esquemas. Se pierde alguna dependencia en la normalizacin?
23. Demostrar que un esquema de dos atributos siempre es BCNF.
24. Expresar en clculo relacional las consultas de los ejercicios 2, 5 y 6.
25. Expresar en lgebra relacional las consultas de los ejercicios 2, 5 y 6.
26. Dados los siguientes esquemas:
VUELO(Numero,Origen,Destino,Salida)
AEROPUERTO(Codigo,Ciudad)
PASAJERO(Dni,Nombre)
RESERVA(Dni,Numero,Fecha,Precio)

Expresar en clculo relacional las siguientes consultas:


a. Vuelos entre Charles de Gaulle (CDG) y Heathrow (LHR), en esta direccin.
b. Hora de salida de los vuelos entre Charles de Gaulle y Heathrow, en esta direccin.
c. Vuelos que cubren el trayecto Charles de Gaulle Heathrow en cualquier sentido.
d. Vuelos entre Londres y Pars (en esta direccin).
e. Nombre, Fecha y destino de viaje de todos los pasajeros que vuelan desde Madrid Barajas (MAD).
f. Vuelos que no tienen ninguna reserva.
27. Dado el siguiente estado de las relaciones, mostrar el resultado de las consultas del ejercicio anterior.

Numero
345
321
165
903
447

VUELO
Origen Destino
MAD
CDG
MAD
ORY
LHR
CDG
CDG
LHR
CDG
LHR

PASAJERO
Dni Nombre
123
Mara
456
Pedro
789
Isabel

Dni
789
123
789
456

Salida
12:30
19:05
09:55
14:40
17:00

AEROPUERTO
Codigo Ciudad
MAD
Madrid
LGW
Londres
LHR
Londres
ORY
Pars
CDG
Pars

RESERVA
Numero
Fecha
165
07-01-11
345
20-12-10
321
15-12-10
345
03-11-10

Precio
210
170
250
190

28. Sobre la base de datos del ejercicio anterior, mostrar con precisin el resultado de las siguientes consultas:
a. { p, r
| PASAJERO(p) AND RESERVA(r) AND r.Precio < 200 }
b. { p, r
| PASAJERO(p) AND RESERVA(r) AND (r.Dni = p.Dni OR r.Precio < 200) }
c. { p, r.Numero | PASAJERO(p) AND RESERVA(r) AND (r.Dni = p.Dni OR r.Precio < 200) }
d. { p.Nombre | PASAJERO(p) AND r (RESERVA(r) AND r.Dni = p.Dni AND r.Precio < 200) }
e. { p.Nombre | PASAJERO(p) AND NOT r (RESERVA(r) AND r.Dni = p.Dni AND r.Precio < 200) }
29. Expresar las consultas de los ejercicios 26 y 28 en lgebra relacional.
30. Escribir en SQL las consultas de los ejercicios 26 y 28.
31. Mostrar el resultado de las siguientes consultas sobre el estado de datos del ejercicio 27:
a. Dni (Precio > 200 (RESERVA))
b. Nombre = Mara (PASAJERO RESERVA)
c. Nombre = Mara (PASAJERO RESERVA)
d.

Dni = 123 (PASAJERO RESERVA)

e.

Nombre,Precio,Dni (Nombre=Pedro (PASAJERO RESERVA)) Nombre,Precio,Dni (Precio > 100 (PASAJERO RESERVA)))

f.

R1 Ciudad,Ciudad_origen (Ciudad=Madrid (VUELO Origen,Codigo AEROPUERTO))


R2 Ciudad,Ciudad_destino (Ciudad=Londres (VUELO Destino,Codigo AEROPUERTO))
Numero (R1 R2)

32. Cabe reescribir alguna de las consultas del ejercicio anterior para optimizar el coste de su ejecucin? En tal
caso, mostrar y explicar la reformulacin.
33. Expresar las consultas del ejercicio 31 en clculo relacional.
34. Escribir en SQL las consultas del ejercicio 31.

35. Dados los siguientes esquemas y datos:


PELICULA
Titulo
Genero
Annie Hall
Comedia
Espartaco
Aventura
Fargo
Drama
Manhattan Comedia
DIRECCION
Pelcula
Director
Annie Hall
W. Allen
Espartaco
S. Kubrick
Fargo
J. Cohen
Manhattan W. Allen

Ao
1961
1977
1997

Categoria
Actor
Director
Guin

OSCAR
Premiado
P. Ustinov
W. Allen
J. Cohen

Pelicula
Espartaco
Annie Hall
Fargo

GUION
Pelicula
Guionista
Annie Hall
W. Allen
Espartaco
H. Fast
Fargo
J. Cohen
Manhattan W. Allen

REPARTO
Pelicula
Actor
Papel
Annie Hall
W. Allen
Alvy Singer
Annie Hall
D. Keaton
Annie Hall
Espartaco
K. Douglas
Espartaco
Espartaco
P. Ustinov
Batiatus
Fargo
F. McDormand Marge
Manhattan W. Allen
Isaac
Manhattan D. Keaton
Mary
a. Formular en clculo relacional las siguientes consultas:
i. Quin dirig Espartaco?
ii. Qu actores han sido compaeros de reparto de P. Ustinov?
iii. Qu cineastas han sido a la vez directores, guionistas e intrpretes en una misma pelcula?
iv. Qu actores no han trabajado en pelculas dirigidas por W. Allen?
b. Mostrar el resultado de las siguientes consultas:
i. { r.Actor | REPARTO(r) AND p (PELICULA(p) AND p.Genero = Aventura
AND r.Pelicula = p.Pelicula) }
ii. { g.Pelicula | GUION (g) AND o (OSCAR(o) AND o.Premiado = g.Guionista) }
iii. { d.Director, r.Actor | DIRECCION(d) AND REPARTO(r) AND d.Pelicula = r.Pelicula
AND NOT o (OSCAR(o) AND o.Pelicula = d.Pelicula) }
iv. { p.Titulo, r.Papel | PELICULA(p) AND p.Genero Comedia AND REPARTO(r)
AND NOT o (OSCAR(o) AND o.Pelicula = r.Pelicula) }

36. Cul es el resultado de las siguientes expresiones de lgebra relacional sobre las relaciones del ejercicio
anterior?
a. Premiado (Ao > 1970 (OSCAR))
b. Director,Actor (Pelicula = Manhattan (DIRECCCION REPARTO))
37. Escribir en lgebra relacional las consultas del ejercicio 35.
38. Escribir en SQL las consultas del ejercicio 35.
39. Escribir en SQL las consultas del ejercicio 36.
40. Un sitio web de msica almacena informacin sobre discos, canciones, msicos y usuarios. Los usuarios pueden
seguirse unos a otros formando una red social asimtrica (tipo Twitter). Cada vez que un usuario escucha una
cancin, el acceso a la misma queda registrado en el sistema. Toda esta informacin se almacena en una base
de datos.

Suponiendo que el estado de la base de datos es el siguiente:


DISCO
Titulo
chate un cantecito
Mosaque
Imagine
Comps

MUSICO
ID
Nombre
555 Kiko Veneno
632 John Lennon
830 Gipsy Kings

USUARIO
Nick
Nombre
charo Rosario
fede Federico
maite Mara Teresa
nacho Ignacio
paco Francisco

SIGUE
Seguidor Usuario
charo
paco
charo
maite
fede
nacho
maite
nacho
nacho
maite
nacho
charo

ID
102
200
460
705

CANCION
Disco Pista
Titulo
102
3 Echo de menos
200
1 Caminando por la calle
200
3 Mosaque
460
9 Julia
460
16 Stand by me
705
11 Di me

Interprete
555
830
830
632
632
830

ESCUCHA
Usuario
Instante
maite
2010-11-29 15:07:35
paco
2010-12-15 22:10:48
nacho 2011-01-02 11:05:44
nacho 2011-01-02 11:40:02
fede
2010-12-15 22:10:48
fede
2011-01-04 12:35:13
maite
2011-01-01 20:14:27

Disco Pista
102
3
200
1
200
3
200
3
460
9
460
16
705
11
a. Escribir en clculo relacional las siguientes consultas:
i. Nombre de los seguidores de maite.
ii. Seguidores de nacho que no han escuchado ninguna cancin titulada Stand by me.
b. Escribir en lgebra relacional las siguientes consultas:
i. Ttulo de las canciones que ha escuchado nacho.
ii. Nombre de los usuarios que han escuchado alguna cancin de John Lennon.
c. Mostrar (con exactitud formal) el resultado de las siguientes consultas:
i. { u, c.Titulo | USUARIO(u) and CANCION(c)
and e (ESCUCHA(e) and e.Disco = c.Disco and e.Pista = c.Pista and e.Usuario = u.Nick)
and m (MUSICO(m) and m.ID = c.Interprete and m.Nombre = John Lennon) }
ii. S Usuario (SIGUE Seguidor = Nick (Nombre = Rosario (USUARIO)))
Nombre, ID (MUSICO ID = Interprete (CANCION (S ESCUCHA)))
Nota: en los apartados a) y b), al escribir consultas se entiende que uno no conoce de antemano los datos de la BD.
41. Escribir en SQL las consultas del ejercicio anterior.
42. Dada la relacin RESERVA del ejercicio 27:
a. Tendra sentido almacenar los datos de la relacin en un fichero con registros de longitud variable?
Explicar la respuesta.
b. Suponiendo que los datos de la relacin RESERVA se almacenan con registros de longitud fija:
i. Cancelar la reserva de Mara.
ii. Cancelar la reserva de Pedro.
iii. Reservar un billete para Mara en el vuelo 321 el 23-12-10, por 280 euros.
Despus de cada operacin, mostrar con detalle el estado del almacenamiento de la tabla de registros, con las
estructuras necesarias para gestionar la eliminacin y la insercin por medio de una lista de registros borrados.
43. En un fichero con registros de longitud variable, el borrado de registros se gestiona con estrategia worst fit.
En un momento dado, la lista de registros borrados es la siguiente (los nmeros indican la longitud de cada
registro):
500

300

Mostrar cmo queda la lista de registros borrados tras cada una de las siguientes operaciones:
a. Se inserta un registro de 300 bytes.

100

b. Se elimina un registro de 250 bytes.


c. Se inserta un registro de 400 bytes.
Nota: aplicar cada operacin sobre el resultado de la operacin anterior.
44. La siguiente tabla representa (de forma simplificada) el registro de trabajos en curso en un taller de mecnica
(las celdas vacas corresponden a valores NULL):
TRABAJO
Matricula
0123ABC
4567DEF
8901GHI
2345JKL
6789MNO

Descripcion
Chapa
Revisin
Cambio de aceite
Substitucin neumticos delanteros
Paralelo y equilibrado

Fecha
12-11-10
12-11-10
15-11-10
15-11-10
15-11-10

Observaciones
Mapfre
Coche de substitucin
Pirelli P6 four seasons

a.

Mostrar con detalle cmo se almacenaran los datos en registros de longitud variable con indicadores
de longitud.
b. Mostrar con detalle el estado del fichero despus de aplicar cada una de las siguientes operaciones,
utilizando la estrategia first-fit:
i. Se finalizan los trabajos con los vehculos 0123ABC, 2345JKL y 8901GHI (por este orden), y se
eliminan por tanto los registros correspondientes.
ii. El 16-11-10 entran al taller dos vehculos: uno con matrcula 2222PQR para hacer una
Revisin, sin observaciones; y poco despus otro con matrcula 5555STU, para una
Reparacin elevalunas, tambin sin observaciones. Insertar los registros correspondientes,
en este orden.
c. Repetir el apartado anterior utilizando la estrategia best-fit.
d. Repetir el apartado con la estrategia worst-fit.
45. Estimar el coste en tiempo necesario para leer 5.000.000 registros de 400B cada uno, en un dispositivo de disco
con las siguientes caractersticas:
Tiempo de seek promedio: 8ms.
Velocidad de rotacin: 15.000 rpm.
Tamao de sector: 1.000B.
N promedio de sectores por pista: 500.
Tamao de bloque: 4 sectores.
Realizar la estimacin suponiendo tres casos diferentes:
a. Los registros se leen con una instruccin del programa que lee los registros de uno en uno.
b. Los registros se leen sobre un buffer de 400.000B.
c. El fichero se lee entero en una sola instruccin del programa.
En los tres apartados, considerar dos situaciones diferentes:
i. El fichero que contiene los registros est almacenado en bloques contiguos (mejor caso).
ii. El fichero est totalmente fragmentado en bloques separados (peor caso).
46. Mostrar con detalle las estructuras necesarias para crear los siguientes ndices simples:
a. Para los datos del ejercicio 27:
i. Un ndice primario para las tablas VUELO y RESERVA.
ii. ndices secundarios por Origen y Destino en la tabla VUELO.
iii. Un ndice secundario por Dni en la tabla reserva.
b. Para la tabla TRABAJO del ejercicio 44:
i. Un ndice primario.
ii. Un ndice secundario por fecha.
Optar razonadamente en cada caso entre una implementacin con registros de longitud variable o fija.

47. Utilizando los ndices del ejercicio anterior, explicar y mostrar cmo se ejecutara una bsqueda de vuelos
entre Charles de Gaulle (CDG) y Heathrow (LHR) utilizando los ndices correspondientes.
48. Explicar qu actualizaciones son necesarias en los ndices del ejercicio 46 al realizar las siguientes operaciones:
a. Las eliminaciones e inserciones del apartado b del ejercicio 44.
b. Cancelar todas las reservas de Isabel (sabiendo su Dni) en la tabla RESERVA.
Mostrar el estado de los ndices despus de cada operacin.
49. En la base de datos del ejercicio 40, y suponiendo que los datos se almacenan en registros de longitud fija,
mostrar con detalle las estructuras necesarias para crear:
a. Un ndice primario de la tabla CANCION (se entiende que una cancin su ttulo se puede reeditar en
discos diferentes).
b. Un ndice por intrprete de la misma tabla.
c. Un ndice por disco de la misma tabla.
Repetir el ejercicio suponiendo que ahora:
Los IDs de discos e intrpretes se guardan con tipo long (4 bytes) en binario.
Los ns de pista se guardan en binario con 1 byte.
Los ttulos de canciones se guardan en modo texto con longitud variable, utilizando un contador de
longitud de tipo short (2 bytes) en binario.
La longitud de los registros se indica con un nmero de 2 bytes.
50. En el ejercicio anterior, sobre la opcin de longitud variable:
a. Modificar el ttulo Mosaque por Luna de fuego.
b. Eliminar el registro Caminando por la calle.
c. Eliminar el registro Stand by me.
d. Modificar Julia por Imagine.
En los apartados a - d, mostrar con detalle el estado del fichero de datos utilizando las siguientes estrategias:
i. First fit.
ii. Best fit.
iii. Worst fit.
51. Mostrar el estado de los ndices del ejercicio 49 al final de todas las operaciones del ejercicio 50.
52. Dado el siguiente rbol B, con pginas de tamao para 4 claves:
D

a. Insertar la clave P.
b. Partiendo del resultado anterior, eliminar L y J.
Mostrar el estado del rbol despus de cada operacin.

53. Dado el siguiente rbol B de orden 6:


15 40 53 74 82 93

22 28 31 34

43 44 47

56 62 63 68 71 72

75 79 80

85 88 92

94 98 99

a. Insertar la clave 60.


b. En el rbol resultante, eliminar 2 y 63.
Mostrar el estado del rbol despus de cada operacin.
54. Dado el siguiente rbol B, con pginas para 4 claves:
3

a. Insertar la clave R.
b. Sobre el rbol resultante, eliminar la clave B.
c. Mostrar cmo se almacenara en un fichero el rbol inicial.
Mostrar el estado del rbol despus de cada operacin.
55. En el siguiente rbol B:
20 30 40

10

25

35

50

a. Insertar la clave 5.
b. En el rbol resultante, eliminar la clave 40.
c. En el rbol resultante, eliminar las claves 50 y 35.
d. Estimar el coste en tiempo de la operacin del apartado a) suponiendo lo siguiente:
Utilizamos un disco con 100 bloques por pista, seek promedio de 3ms y rotacin promedio de 2ms.
Las pginas tienen tamao menor que los bloques. Al principio de la operacin no hay ninguna
pgina en RAM, pero hay espacio suficiente para mantener hasta 5 pginas en RAM
simultneamente.
56. Dado el siguiente rbol B*, con pginas para 5 claves:
D

a. Insertar X.
b. Partiendo del resultado anterior, insertar R.
Mostrar el estado del rbol despus de cada operacin

W Y

57. En el siguiente rbol B de 3 claves por pgina:

84
65 73 80

88 90 96

60 62 63 67 69 71 74 77
a.
b.
c.

81 82

85 86

89

92 93 94 97 98 99

d.

Insertar la clave 40.


En el rbol resultante, insertar la clave 101.
Volviendo al estado inicial del rbol y considerndolo como un rbol B* de 3 claves por pgina,
insertar la clave 70.
En el rbol resultante ahora, insertar la clave 40.

e.

Demostrar que en general la altura, h, de un rbol B viene acotada por 1 + log +1

+1
2

, donde

es el mnimo nmero de claves por pgina y es el nmero de claves contenidas en el rbol.


58. Muestra con detalle cmo se almacenara en un fichero el siguiente rbol B (con pginas para 5 claves), donde
se indica el nmero de pgina junto a cada una.
6

Z
4

59. En un fichero se almacenan los datos de un rbol B con el siguiente contenido (el campo head en la cabecera
es un puntero a la lista de pginas borradas):
Raz
Head
0
1
2
3
4
5
6

3
-1
1
3
3
1
1
1
1

R
A
G
N
S
E
P

C
H

D
J

6
-1
-1
5
-1
1
-1

4
-1
-1
0
-1
2
-1

-1
-1

-1
-1

a.
b.

Dibujar la estructura que tendra el rbol B cuyos datos son los que se almacenan en el fichero.
Mostrar cmo queda el fichero cuando:
i. Se inserta la clave F.
ii. Se elimina la clave R.
iii. Se elimina la clave P.
iv. Se inserta la clave B.
Efectuar cada operacin sobre el resultado de la anterior, y utilizar una lista de pginas borradas para gestionar
la eliminacin e insercin de pginas. Mostrar el resultado despus de cada operacin.
60. Un rbol B de 3 claves por pgina contiene las claves: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O.
a. Dibujar el rbol ptimo (nmero mnimo de pginas) para almacenar estas claves.
b. Insertar la clave P en este rbol.
c. Dibujar el rbol en el peor caso (mximo coste en la bsqueda).

d.

Eliminar la clave L de este rbol.

61. Con las mismas claves del ejercicio anterior, dibujar un rbol B+ ptimo de 3 claves por pgina.
62. Partiendo del ndice primario de la tabla VUELO creado en el ejercicio 46.a.i:
a. Crear el mejor rbol B posible para este ndice con pginas de dos claves.
b. Crear el mejor rbol B+ posible para este ndice con pginas de dos claves.
c. Mostrar el peor rbol B y B+ posible con pginas de dos claves.
d. Mostrar con todo detalle cmo se almacenaran en disco los rboles B y B+ de los apartados a y b
(incluyendo las referencias a las posiciones de registros).
63. Partiendo del rbol B+ de los apartados b y c del ejercicio anterior:
a. Insertar un nuevo vuelo con n 201 en el fichero de registros.
b. A continuacin, eliminar los vuelos 903 y 447.
Mostrar cmo queda el rbol B+ despus de cada operacin, tanto en forma de diagrama como en las
estructuras en disco.
64. Dado un rbol B con pginas de tamao para k claves:
a. Si la altura del rbol es h y todas las pginas estn completamente llenas, cuntas claves hay en total
en el rbol?
b. Cmo cambia la respuesta al apartado anterior si en lugar de ser un rbol B es un rbol B+?
65. Tenemos un campo de una tabla indexado mediante hashing extensible. Utilizamos bloques con capacidad
para dos claves, y una funcin hash que devuelve los siguientes valores para las claves siguientes: () = 3,
() = 9, () = 1, () = 2, () = 7, () = 5, () = 4, () = 10, () = 13. Mostrar paso a paso el
estado de las estructuras de este mtodo de indexacin (directorio y bloques de claves) cuando se realizan las
siguientes operaciones.
a. Partiendo de cero, insertar las claves , , , , , , , , por este orden.
b. Partiendo del resultado del apartado anterior, eliminar , y .
c. Partiendo de cero de nuevo, insertar las claves , y .