Práctico 3 – Algebra Relacional

Práctico 3 – Algebra Relacional Ejercicio 1 Se cuenta con una base de datos relacional con información sobre los campeonatos mundiales de...

5 downloads 420 Views 33KB Size
Tecnólogo en Informática – Base de Datos 1 – Práctico ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Práctico 3 – Algebra Relacional Ejercicio 1 Se cuenta con una base de datos relacional con información sobre los campeonatos mundiales de fútbol que incluye el año y lugar en que se realizaron y los equipos que participaron. Con relación a los equipos se almacena el nombre y la cantidad de campeonatos que ganó. - CAMPEONATO (año, pais) - EQUIPO (nomEquipo, cantCampGanados) - PARTICIPA (nomEquipo, año, serie, direcTecnico, posicionEnLaSerie) - PARTIDO (nomEquipo1, nomEquipo2, año, estadio, fecha, golesEq1, golesEq2) Nota: como sólo se consideran los campeonatos mundiales el año determina el campeonato, sin necesidad del lugar.

∏ nomEquipo (PARTICIPA) ⊆ ∏ nomEquipo (EQUIPO)

∏ nomEquipo1 (PARTIDO) ⊆ ∏ nomEquipo (EQUIPO) ∏ nomEquipo2 (PARTIDO) ⊆ ∏ nomEquipo (EQUIPO)

∏ año (PARTIDO) ⊆ ∏ año (CAMPEONATO) ∏ año (PARTICIPA) ⊆ ∏ año (CAMPEONATO) Resolver los siguientes requerimientos mediante operaciones del álgebra relacional: a. ¿Qué equipos de su serie le ganaron a Alemania en el mundial 2006? b. Listar los directores técnicos de los equipos que ganaron el 14/6/06. c.

¿Cuántos campeonatos han ganado cada uno de los equipos que perdieron en el campeonato del 86 con el primero de la serie de Uruguay?

Fuente: Fundamentos de Bases de Datos 2011 Práctico 2 – Fing - Udelar

Ejercicio 2 La siguiente base de datos relacional describe ciertas materias dictadas en una hipotética universidad: - CURSOS (codigo, nombre, cant_inscriptos) Esta tabla contiene información acerca de los cursos que se ofrecen. De cada curso se conoce un código que lo identifica, un nombre y la cantidad de inscriptos

. –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Página 1 de 6

Tecnólogo en Informática – Base de Datos 1 – Práctico –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– - PREVIATURAS (codigo, codigoPrevia) Esta tabla contiene información acerca de las previaturas entre cursos - ASIGNADOS (codigo, docente) Esta tabla contiene información acerca de los docentes asignados a los cursos. - HORARIOS_DICTADO (codigo, docente, horario, salon) Esta tabla contiene información acerca de los salones y horarios de clase. Para cada docente que dicte clase de un curso en un determinado horario se almacena el salón correspondiente. - DOCENTES (nombre, oficina, telefono, departamento) Esta tabla contiene información acerca de los docentes. En esta base de datos se cumplen las siguientes restricciones de inclusión:

∏ codigo (PREVIATURAS) ⊆ ∏ codigo (CURSOS)

∏ codigoPrevia (PREVIATURAS) ⊆ ∏ codigo (CURSOS) ∏ codigo (ASIGNADOS) ⊆ ∏ codigo (CURSOS)

∏ docente (ASIGNADOS) ⊆ ∏ nombre (DOCENTES) ∏ codigo, docente (HORARIOS_DICTADO) ⊆ ∏ codigo, docente (ASIGNADOS) Parte 1 Resolver las siguientes consultas en álgebra relacional. En caso de que alguna de las consultas no sea expresable, justificar adecuadamente el por qué. a.

Encontrar todos los salones usados por cursos con más de 100 alumnos inscriptos.

b.

Encontrar los nombres de los docentes que no están asignados a ningún curso.

c.

Encontrar los nombres de todos los cursos asignados a docentes del departamento de ‘Programacion’.

d.

Encontrar todos los pares de códigos de cursos que tienen una previatura en común. Nota: si el par (c1,c2) aparece en la respuesta, el par (c2,c1) no debe aparecer; ni tampoco el par(c1,c1).

e.

Encontrar la cantidad de inscriptos promedio.

f.

Encontrar la cantidad de inscriptos total en todos los cursos asignados a Speedy González.

g.

Mostrar los códigos y cantidad de inscriptos de todos los cursos cuya cantidad de inscriptos sea menor que el promedio.

h.

Mostrar los códigos de todos los cursos que se dictan en algún salón donde se dicta el curso con código ‘CSC434’.

i.

Encontrar los nombres de los docentes que dictan cursos que se dictan en 2 o más salones.

j.

Encontrar los códigos de todas las previas inmediatamente anteriores al curso con

. –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Página 2 de 6

Tecnólogo en Informática – Base de Datos 1 – Práctico –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– código ‘CSC444’. k.

Encontrar los códigos de todos los cursos que deben ser aprobados antes de poder cursar ‘CSC434’.

l.

Mostrar para cada instructor el total de inscriptos en los cursos que tiene asignados.

Parte 2 Se pretende resolver la siguiente consulta: Encontrar los nombres de todos los docentes que dictan cursos que se dictan en exactamente un salón. Se propone la siguiente solución:

∏ docente (HORARIOS_DICTADO) - RESi donde RESi es el resultado de la consulta i) de la parte 1 de este ejercicio. Discutir la correctitud de la solución planteada. En caso de que sea correcta demostrarlo y en caso contrario dar un contraejemplo, indicar qué resuelve la expresión planteada y dar una solución correcta a la consulta original. Fuente: Fundamentos de Bases de Datos 2011 Práctico 2 – Fing – Udelar

Ejercicio 3 Se cuenta con una base de datos con las siguientes relaciones: - FRECUENTA (bebedor, bar) - SIRVE (bar, cerveza) - LEGUSTA (bebedor, cerveza) La primera relación indica los bares que cada bebedor visita, la segunda la cerveza que sirve cada bar, y la tercera las cervezas que le gustan a cada bebedor. Expresar mediante operaciones de álgebra relacional los requerimientos: a.

¿Qué bares sirven alguna cerveza que le gusta al bebedor Juan Fernández?

b.

¿Cuáles son los bebedores que frecuentan un bar que sirve al menos alguna cerveza que les guste?

c.

¿Cuáles son los bebedores que solo frecuentan bares que sirven alguna cerveza que les gusta? (Asumir que a cada bebedor le gusta al menos una cerveza y frecuenta al menos un bar)

d.

¿Cuáles son los bebedores que no frecuentan ningún bar que sirva una cerveza que les guste? (Asumir lo mismo que en c.)

Fuente: Fundamentos de Bases de Datos 2011 Práctico 2 – Fing – Udelar

. –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Página 3 de 6

Tecnólogo en Informática – Base de Datos 1 – Práctico –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Ejercicio 4 Se posee información sobre una empresa que tiene distintos locales con maquinitas. Los datos de cada local son: su identificación (#local), dirección, la cantidad de maquinitas que posee, el promedio diario de fichas que vende y el valor de la ficha; y se encuentran en el esquema relación: - LOCALES (#local, dirección, cantidad_maq, prom_fichas, valor_ficha ) Los datos de cada juego son: su identificación (#juego), su origen y su tipo (ej.: deportivo, bélicos, etc.); y se encuentran en el esquema relación: - JUEGOS (#juego, origen, tipo) Los datos sobre cada maquinita son: su identificación (#maquina), la identificación del juego que tiene y la identificación del local en el que se encuentra; y se encuentran en el esquema relación: - MAQUINAS (#maquina, #juego, #local ) Una máquina tiene un único juego y está en un solo local. En esta base de datos se cumplen las siguientes restricciones de inclusión:

∏ #local (MAQUINAS) ⊆ ∏ # local

(LOCALES)

∏ # juego (MAQUINAS) ⊆ ∏ # juego

(JUEGOS)

Aclaración: no hay tablas vacías. Con la información almacenada en los esquemas relacionales anteriores resolver mediante operaciones de Álgebra Relacional las siguientes consultas: a.

Las parejas (identificación del local, promedio de fichas del local) tal que entre los juegos del local estén todos los juegos de origen "JAPONES".

b.

Identificación de los locales que tienen por lo menos un juego de cada uno de los tipos de juego relacionados con los juegos de origen "COREANO". Observar que no necesariamente los locales solución tienen algún juego de origen "COREANO".

c.

Identificación de los locales que tengan máximo número de máquinas.

d.

Identificación de los locales que tienen exactamente los mismos juegos y distinto promedio de fichas que el local con #local 28.

Fuente: Fundamentos de Bases de Datos 2011 Práctico 2 – Fing - Udelar

Ejercicio 5 Sean las siguientes tablas pertenecientes a una base de datos: Proveedores: - PRV (#prov, nom_prov, categoria, ciudad_prov) Partes: - PRT (#par, nom_par, color, peso, ciudad_par) Proyectos:

. –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Página 4 de 6

Tecnólogo en Informática – Base de Datos 1 – Práctico –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– - PRY (#proy, nom_proy, ciudad_proy) Proveedores proveen partes a proyecto (cantidad): - PPC (#prov, #par, #proy, cantidad) Resolver las siguientes consultas en álgebra relacional. a.

Obtener los números de los proveedores que proveen a los proyectos número 1 y al mismo tiempo al proyecto número 2.

b.

Obtener los números de proveedores que proveen al proyecto número 1 de alguna parte roja.

c.

Obtener los números de los proveedores que proveen con partes rojas a algún proyecto de Londres o alguno de París.

d.

Dar las parejas de ciudades, tales que un proveedor de la primera provee a un proyecto de la segunda.

e.

Dar todas las triplas (ciudad, #par, ciudad), donde un proveedor de la primera ciudad provee con la parte especificada a un proyecto de la segunda ciudad, con la condición de que las ciudades no deben ser la misma.

f.

Obtener todos los números de partes tales que no hay otra parte con peso menor.

g.

Dar los números de los proyectos provistos solamente por el proveedor número 9.

h.

Dar los nombres de los proveedores que proveen alguna parte (pero la misma) a todos los proyectos.

i.

Dar los nombres de los proveedores que solo proveen una parte.

Fuente: Fundamentos de Bases de Datos 2011 Práctico 2 – Fing - Udelar

Ejercicio 6 En un centro clínico se dispone de información de apoyo a los médicos de la misma. La información se encuentra almacenada en una base de datos con los siguientes esquemas relación: - SINTOMA (idSintoma, nomSintoma, descSintoma) En esta tabla se describen los síntomas conocidos. Los mismos tienen un identificador, un nombre y la descripción del mismo. - MEDICAMENTOS (idMed, nomMed, descMed, costo) En esta tabla se describen los medicamentos conocidos. Los mismos tienen un identificador, un nombre, una descripción y el costo por unidad del mismo. - INDICACIONES (idSintoma,idMed, dosis) En esta tabla se tiene para cada síntoma los medicamentos indicados para su tratamiento. Para cada uno de ellos se conoce la dosis (cantidad de unidades) del medicamento indicado para el tratamiento del síntoma. - CONTRAINDICACIONES (idSintoma,idMed, dosis) En esta tabla se tiene para cada síntoma los medicamentos contraindicados para su tratamiento. Para cada uno de ellos se conoce la dosis (cantidad de unidades) a partir de la

. –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Página 5 de 6

Tecnólogo en Informática – Base de Datos 1 – Práctico –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– cual el medicamento es contraindicado para el tratamiento del síntoma. - PACIENTES (idPaciente, nomPaciente, edad) En esta tabla se describen los pacientes conocidos. Los mismos tienen un identificador, un nombre y la edad de los mismos. - REPORTA (idPaciente, idSintoma) En esta tabla se tiene la información de los síntomas reportados por los pacientes.

En este esquema no existen tablas vacías y se cumplen las siguientes dependencias de inclusión:

∏ idSintoma (INDICACIONES) ⊆ ∏ idSintoma (SINTOMA)

∏ idMed

(INDICACIONES)

⊆ ∏ idMed

(MEDICAMENTOS)

∏ idSintoma (CONTRAINDICACIONES) ⊆ ∏ idSintoma (SINTOMA) ∏ idMed

(CONTRAINDICACIONES)

⊆ ∏ idMed

(MEDICAMENTOS)

∏ idSintoma (REPORTA) ⊆ ∏ idSintoma (SINTOMA) ∏ idPaciente

(REPORTA)

⊆ ∏ idPaciente

(PACIENTES)

y la siguiente restricción:

∏ idSintoma,idMed

(INDICACIONES)

∩ ∏ idSintoma,idMed

(CONTRAINDICACIONES) =

φ

Resolver las siguientes consultas en Álgebra Relacional: 1)

Identificación de los pacientes tales que existe algún medicamento indicado para cada uno de los síntomas reportados por el paciente.

2)

Parejas de identificador de paciente e identificador de medicamento tal que el medicamento está indicado para algún síntoma reportado por el paciente y no se encuentra contraindicado para ninguno de sus síntomas en una dosis menor o igual a la indicada. (Tratamiento de cada paciente)

Fuente: Fundamentos de Bases de Datos 2010. Ejercicio Primer Parcial – Fing - Udelar

. –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Página 6 de 6