Professional Documents
Culture Documents
(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.
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
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
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.
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
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
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
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
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)
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
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
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