Está en la página 1de 8

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

FUNDAMENTOS DE BASES DE DATOS Solucion - Examen Julio 2002


Presentar la resolucin del examen: Con las hojas adicionales numeradas y escritas de un solo lado. Con las hojas escritas a lpiz. Poner cdula de identidad y nombre en cada hoja (incluidas estas). Escrito en forma prolija. Las opciones elegidas se deben marcar poniendo el identificador de la opcin en un crculo claramente identificado. Poner la cantidad de hojas adicionales entregadas en la primer hoja.

Ejercicio 1 Modelo Entidad-Relacin

(30 puntos)

Se desea modelar la informacin sobre las publicaciones existentes en una biblioteca perteneciente a un instituto de enseanza e investigacin
Las publicaciones se identifican por un cdigo y adems se guarda su nombre y los nmeros de copias existentes y disponibles en la biblioteca. Las publicaciones pueden ser de tres tipos: libros, revistas y publicaciones del instituto. Sobre las revistas interesa saber la fecha de publicacin. Sobre las publicaciones del instituto interesa saber si son tesis de grado, tesis de posgrado o reporte tcnico. Algunos libros son compendios de artculos presentados en conferencias. Las revistas estn formadas por un conjunto de artculos.

Los artculos tienen un nmero que los identifica dentro de la revista o del libro del que forman parte. Adems tienen una descripcin (el resumen del artculo) y un conjunto de palabras clave. Los artculos de conferencia tienen tambin el dato de la sesin de la conferencia en la que fueron presentados. La informacin de los autores es muy importante para todas las publicaciones. En el caso de los libros que no son de artculos y las publicaciones del instituto interesa saber los autores que les corresponden. Para las publicaciones integradas por artculos no se guardan autores, sino que los autores se llevan con respecto a cada artculo. Sobre los autores interesa saber el nombre (que los identifica), nacionalidad y la institucin a la cual pertenecen. Tambin se guarda informacin sobre los socios de la biblioteca, los prstamos y reservas de stos. De los socios interesa la cdula de identidad, el nombre, la direccin, el telfono, y si son estudiante o docente. Los socios pueden sacar una publicacin en prstamo o reservarla. En el caso de los prstamos interesa la fecha de retiro de la publicacin y la fecha de devolucin. La cantidad de publicaciones prestada no puede ser mayor que la cantidad de copias existentes en la biblioteca. Cada libro es editado por al menos una editorial. Una editorial puede editar un mismo libro en distintas fechas, siendo stas distintas ediciones para una misma pareja libro-editorial. De cada editorial se guarda un cdigo que la identifica, el nombre, la direccin y el telfono. Para cada edicin interesa saber en qu idioma est escrita.
Se pide: Modelo Entidad-Relacin completo.

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

#cop-exist nombre-pub cod-pub #cop-disp


N N

PRESTAMO
fecha-ret fecha-dev
N N

dir

tel est/doc

AUT-INST

PUBLICACIONES

SOCIOS
ci nombre-soc

RESERVA

fecha

DEL-INSTITUTO
tipo

REVISTAS
AUT-LIBRO

institucion
N N

AUTORES
N

tel-edit nombre-aut

nacionalidad

EDITORIALES
codigo-edit nombre-edit

EDITAN

LIBROS

dir-edit

PERTENECIENTE COMPENDIO CORRESPOND.


sesion numero-art

DE-CONF EDICIONES
fecha-edit idioma numero-art descripcion pal-claves*

DE-REVISTA

ARTICULOS

AUT-ART

RNE: La cantidad de publicaciones prestadas no puede ser mayor que la cantidad existente en la biblioteca. DE-CONF DE-REVISTA = ARTICULOS Sea s SOCIOS p PUBLICACIONES, <s,p> RESERVA <s,p> PRESTAMO <s,p> PRESTAMO <s,p> RESERVA

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

Ejercicio 3 Consultas (30 puntos)


La ciudad universitaria es un conjunto de residencias estudiantiles ubicadas en un mismo predio, que dan alojamiento a jvenes universitarios de todo el pas. Cada residencia se construy con fondos de una institucin, que puede ser una Intendencia Departamental o una fundacin particular. En cada residencia pueden habitar estudiantes de cualquier departamento del pas, que estn estudiando en cualquier facultad o escuela de la Universidad de la Repblica. Para alojarse en una residencia, un estudiante debe hacer un contrato que tiene validez por ese ao. Para alojarse al ao siguiente debe hacer un nuevo contrato. Las instituciones otorgan algunas becas para alojar gratuitamente a estudiantes con pocos recursos econmicos. Se tiene una base de datos con las siguientes relaciones: RESIDENCIAS (cod-res, nom-res, cod-ins, ao-constr, arquitecto, num-hab) Esta relacin contiene los datos de todas las residencias de la ciudad universitaria. Sus atributos son: cdigo de la residencia, nombre de la residencia, cdigo de la institucin que la construy, ao de construccin, arquitecto que la proyect y nmero de habitaciones. INSTITUCIONES (cod-ins, nom-ins, cant-becas) Esta relacin contiene los datos de las instituciones que construyeron residencias, ya sean intendencias departamentales o fundaciones de particulares. Sus atributos son: cdigo de la institucin, nombre de la institucin y cantidad de becas que otorga. I-INTENDENCIAS (cod-ins, departamento, programa, encargado, tel-contacto) Esta relacin contiene los datos de las instituciones que corresponden a proyectos de Intendencias Departamentales. Todas las instituciones de esta tabla estn tambin en la tabla instituciones. Sus atributos son: cdigo de la institucin, departamento, programa o proyecto de la intendencia, encargado del proyecto y telfono de contacto. I-PARTICULARES (cod-ins, nom-fundador, encargado, tel-contacto) Esta relacin contiene los datos de las instituciones que corresponden a fundaciones de particulares (los que no corresponden a Intendencias Departamentales). Todas las instituciones de esta tabla estn tambin en la tabla instituciones. Sus atributos son: cdigo de la institucin, nombre del fundador, encargado del proyecto y telfono de contacto. ESTUDIANTES (CI, nombre, depto-origen, edad) Esta relacin contiene los datos de todos los estudiantes que se han alojado en alguna residencia de la ciudad universitaria. Sus atributos son: CI del estudiante, nombre del estudiante, departamento del que viene, y edad.

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

EST-FAC (CI, facultad, ao-curso, promedio) Esta relacin indica en qu facultades (o escuelas) estudia cada estudiante. Cada estudiante de la relacin estudiantes debe estudiar en al menos una facultad, y cada estudiante de esta relacin debe estar en la relacin estudiantes. Sus atributos son: CI del estudiante, nombre de la facultad, ao que est cursando y promedio de notas. CONTRATOS (cod-res, CI, ao, becado, habitacion, telfono)
Esta relacin indica en qu residencia se ha alojado cada estudiante en cada ao, ya que los contratos de alojamiento son anuales. Las residencias y estudiantes estn en las tablas correspondientes. Sus atributos son: cdigo de la residencia, CI del estudiante, ao del contrato, indicacin de existencia de una beca (valores SI o NO), habitacin que ocupa y telfono de la habitacin.

SE PIDE: 1) Escribir en Algebra Relacional las siguientes consultas: a) Devolver cdigo de institucin y telfono de contacto de todas las instituciones que otorgan 10 o ms becas.

cod-ins, tel-contacto (I-INTENDENCIAS) cod-ins, tel-contacto (I-PARTICULARES) B = cod-ins ( cant_becas 10 (INSTITUCIONES)


A= Res = A * B

b) Devolver los cdigos de las residencias construidas por intendencias, que slo han alojado a estudiantes del mismo departamento que la intendencia.

cod-res, departamento (RESIDENCIAS * I-INTENDENCIAS) B = departamento <> depto_origen (A * CONTRATOS * ESTUDIANTES) Res = cod_res (A) - cod_res (B)
A=

2) Escribir en Clculo Relacional las siguientes consultas: a) Devolver CI y nombre de los estudiantes que slo se han alojado un ao.
{ e.CI, e.nombre / ESTUDIANTES(e) (c) (CONTRATOS(c) c.CI = e.CI

(!u) (CONTRATOS(u) u.CI = e.CI u.ao c.ao)) }

b) Devolver los cdigos de las instituciones, para las cuales todas sus residencias han alojado algn becado.
{ i.cod-ins / INSTITUCIONES(i) (r) (RESIDENCIAS(r) r.cod-ins = i.cod-ins

(c) (CONTRATOS(c) c.cod-res = r.cod-res c.becado = SI)) }

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

3) Escribir en SQL las siguientes consultas: a) Listar los cdigos y nombres de las residencias construidas por la Fundacin Juan Perez que tienen ocupadas todas sus habitaciones en el 2002.
select R.cod-res, R.nom-res from RESIDENCIAS R, INSTITUCIONES I, CONTRATOS C where R.cod-ins = I.cod-ins and I.nom-ins = Fundacin Juan Perez and C.cod-res = R.cod-res and C.ao = 2002 group by R.cod-res, R.nom-res having count(*) = R.num-hab

b) Listar cdigo de residencia y cdigo de institucin de las residencias con ms de 100 habitaciones en las que no se ha alojado ningn estudiante mayor de 25 aos.
select from where and R.cod-res, R.cod-ins RESIDENCIAS R R.num-hab > 100 R.cod-res not in ( select C.cod-res from CONTRATOS C, ESTUDIANTES E where C.CI = E.CI and C.cod-res = R.cod-res and E.edad > 25

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

Ejercicio 4 Optimizacin

(20 puntos)

Dados el esquema relacional del Ejercicio 3 y la siguiente consulta nombre, nom-res [ (edad > 25 Estudiantes) |><| Contratos |><| ( ao-constr = 1990 Residencias ) ] 1) Dar un plan lgico de la consulta, aplicando las heursticas y calculando los tamaos intermedios. 2) Elegir una implementacin para el primer join que se ejecuta segn el plan lgico y calcular su costo estimado. (Aclaracin: No tener en cuenta las proyecciones para el clculo.) DATOS: ESTUDIANTES Cantidad tuplas Indices primarios Indices secundarios (B+) Cantidad de tuplas por bloque Observaciones 4500 ci (niveles: 2) edad (niveles: 3) 50 CONTRATOS 6000 RESIDENCIAS 54 cod-res (niveles: 1)

60

30

- Edades: entre 18 y 35. Distribucin uniforme.

- Residencias distintas: 54. - Estudiantes distintos: 2300 - Distribucin uniforme.

- Aos distintos en que se construyeron residencias: 27. Distribucin uniforme.

ESTUDIANTES |><| CONTRATOS Cantidad de tuplas por bloque 30

CONTRATOS |><| RESIDENCIAS 20

Frmulas para clculo de costo y de tamaos: Join (R,S) Nested Loop (ciclo anidado) sin utilizar ndices Nested Loop (ciclo anidado) utilizando ndice secundario para recuperar tuplas que matchean Nested Loop (ciclo anidado) utilizando ndice primario para recuperar tuplas que matchean Join (R,S) bR + bR * bS bR + |R| * (x + s)

bR + |R| * (x + 1)

Escribir resultados en disco Selectividad

(js * |R| * |S|)/ fblRS

Seleccin (atrib. A) Join (atrib. A)

1 / V(A,R) 1/ Max (V(A,R), V(A,S))

Facultad de Ingenieria Instituto de Computacin

Examen de Fundamentos de Bases de Datos Julio de 2002

Notacin: b cantidad de bloques fbl factor de bloqueo x cantidad de niveles del ndice |R| - cantidad de tuplas de R s selectividad de la seleccin js selectividad del join V(A,R) - cantidad de valores distintos del atributo A en R Solucin: 1) nombre, nom-res |><| ci ci, nombre

|><| cod-res cod-res cod-res, nom-res ao-constr = 1990 RESIDENCIAS CONTRATOS

edad > 25

ESTUDIANTES

Tamaos: (en cantidad de tuplas) T (Residencias) = 54 T ( ao-constr = 1990 ) = 2 T (Contratos) = 6000 T (1er. |><|) = (2 * 6000) * js = (2 * 6000) / 54 = 222 T (Estudiantes) = 4500 T ( edad > 25 ) = (4500 * s) * (35 25) = (4500 / 18) * 10 = 2500 T (2. |><|) = (222 * 2500) * js = (222 * 2500) / 2500 = 222

Vemos que el orden de las tablas en el rbol esta correcto, ya que en los joins nos quedan del lado izquierdo las que tienen menor cantidad de tuplas.

Facultad de Ingenieria Instituto de Computacin 2) Implementacion del 1er. join: R = (ao-constr = 1990 Residencias) R |><| Contratos

Examen de Fundamentos de Bases de Datos Julio de 2002

Se implementa con un Nested Loop sin ndices, ya que el ndice que haba en Residencias se pierde luego de la seleccin. Costo (R |><| Contratos) = bR + bR * bS + costo-grabar- resultado = 1 + 1 * 100 + 222 / 20 = 112,1

También podría gustarte