Está en la página 1de 81

Cuenta (nombreSucursal, numCta, saldo)

Sucursal (nombreSucursal, ciudad, activos)

Cliente (nombreCliente, calle, numpuerta, ciudad)

CtaCliente (nombreCliente, numCta)

Prestamo (nombreSucursal, numPrestamo, importe)

Prestatario (nombreCliente, numPrestamo)

1 Encontrar la información de todos los préstamos realizados en la sucursal llamada


“Guatemala 1172”

2 Determinar el nombre de los clientes que viven en Montevideo

3 Nombre de los clientes del banco que tienen una cuenta, un préstamo o ambas cosas

4 Relación de clientes que tienen abierta una cuenta pero no tienen ninguna de préstamo.

5 Nombre de todos los clientes que tienen un préstamo y una cuenta abierta.
Álgebra Relacional – Práctico Constructora

Sea una base de datos de una empresa de construcciones con los siguientes esquemas de
relación:

OBRAS(nroObra, director, tipoObra, fechaComienzo)


TRABAJA(nroObrero, nroObra, fecha, codTarea)
PERSONAL(nroObrero, nomObrero, especialidad)
TAREAS(codTarea, descripción, duración)
FK:
(TRABAJA)( nroObrero) -> PERSONAL(nroObrero)
TRABAJA (nroObra)->OBRAS(nroObra)
TRABAJA(codT área)-> TAREAS(codT area)

Se pide resolver las siguientes consultas en Algebra Relacional:

1. Directores de las obras que comenzaron en el 2022 cuyo tipo de obra sea
“Remodelación”.
2. Descripción de las tareas cuya duración sea entre 15 y 25 días.
3. Especialidad del obrero Mario
4. Nro de obra en las que trabaja el obrero Mario
5. Descripción de las tareas que se realizan en la obra nro 23
6. Obtener los números de las obras tales que todas las tareas realizadas en ella tiene
una duración de por lo menos 10.
7. Obtener los números de obra, director y fecha de comienzo de las mismas tal que en
las obras solo participaron obreros cuya especialidad es “Albañil”.
8. Obtener los números de obra, director y fecha de comienzo de las mismas tal que en
las obras participaron obreros cuya especialidad es “Albañil” y obreros de otras
especialidades.
9. Obtener los números de obra, director y fecha de comienzo de las mismas tal que en
las obras participaron obreros con especialidad “Albañil”.
Álgebra Relacional – Práctico Instituto

La siguiente base de datos relacional describe ciertas materias dictadas en centro de formación
docente:

CURSOS (código, 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
PREVIATURAS (código, códigoPrevia) Esta tabla contiene información acerca de las previaturas
entre cursos
ASIGNADOS (código, docente) Esta tabla contiene información acerca de los docentes
asignados a los cursos.
HORARIOS_DICTADO (código, docente, horario, salón) 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, teléfono, departamento) Esta tabla contiene información acerca
de los docentes.
FK: PREVIATURAS(código) -> CURSOS(código)
PREVIATURAS(códigoPrevia) -> CURSOS(código)
ASIGNADOS(código) -> CURSOS(código)
ASIGNADOS (docente)-> DOCENTES (nombre)
HORARIOS_DICTADO(código, docente) -> ASIGNADOS (código, docente)
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
‘Programación’.
d. Encontrar los salones de clase que utiliza el docente Mario M.
e. Encontrar la cantidad de inscriptos promedio.
f. Encontrar la cantidad de inscriptos total en todos los cursos asignados a Mario M.
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 ‘BD1’.
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 código
‘BD1’.
k. Encontrar los códigos de todos los cursos que deben ser aprobados antes de poder cursar
‘BD1’.
l. Mostrar para cada docente el total de inscriptos en los cursos que tiene asignados.
2°N BD I INET 2022

Ejemplo del esquema de una base, conjunto de esquemas de relación.

Y el siguiente podría ser un ejemplo de instancia de ese esquema:

1. Identifique las claves primarias y claves foráneas


2. Analice los dominios de los diferentes atributos.
3. Estudie la viabilidad de INSERTAR los siguientes registros, en caso de no ser posible
explique qué restricción se no se cumple:
a. En la relación ESTUDIANTES
i. Insertar < 31257632, ‘Juan’, ‘Pérez’, ‘01/01/1991’>
ii. Insertar < 12345678, Mario, Montesdeoca, 01/01/1991>
iii. Insertar < ‘12345678’, ‘Mario’, ‘Montesdeoca’, ’01/01/1991’>
iv. Insertar < 12345678, ‘Mario’,’ Montesdeoca’, ‘01/01/1991’>
v. Insertar < 12345678, NULL,’ Montesdeoca’, ‘01/01/1991’>
vi. Insertar < NULL, ‘Mario’,’ Montesdeoca’, ‘01/01/1991’>
b. En la relación CURSOS
i. Insertar <P1, ‘Programación 1’, ‘NO’>
ii. Insertar <P2, ‘Programación 2’, 10>
iii. Insertar <’BD2’, ‘Base de datos 2’, 10>
iv. Insertar <’BD1’, ‘Base de datos 3’, 10>
v. Insertar <’BD3’, ‘Base de datos 3’, NULL>
vi. Insertar <NULL, ‘Programación 3’, 10>
vii. Insertar <’P3’,NULL, NULL>
c. En la relación ESTUDIANTES_TOMAN_CURSOS
i. Insertar <31257632, NULL ,’24/03/2022’>
ii. Insertar <31257632, ‘MDL1’ ,’24/03/2022’>
iii. Insertar <31257632, ‘MDL2’ ,’24/03/2022’>
iv. Insertar <31257632, ‘MDL2’ ,NULL>
v. Insertar <16347894, ‘MDL1’ ,’24/03/2022’>
vi. Insertar <NULL, ‘MDL1’ ,’24/03/2022’>
Tecnólogo en Informática - Base de Datos 1 - Práctico

Práctico 2 - Pasaje de MER a Modelo Relacional

Ejercicio 1

Dado el siguiente Modelo Entidad Relacional y las siguientes Restricciones No Estructurales:

RNE:
 La cantidad de camas de un hospital debe ser igual a la suma de la cantidad de camas de sus salas.
 Un paciente internado en un cierto hospital debe ser atendido exclusivamente por médicos que trabajen en ese
hospital.

Se pide:
Utilizando las reglas vistas en el curso realizar el pasaje a Modelo Relacional especificando el conjunto de tablas y el
conjunto de dependencias de inclusión.

Fuente: Fundamentos de Bases de Datos - Práctico 1 – FING - UdelaR

Página 1 de 3
Tecnólogo en Informática - Base de Datos 1 - Práctico

Ejercicio 2

Dado el siguiente Modelo Entidad Relacional y las siguientes Restricciones No Estructurales:

RNE:
 El producto promovido por cada promotor debe ser producido por la empresa que lo emplea.

Se pide:
Utilizando las reglas vistas en el curso realizar el pasaje a Modelo Relacional especificando el conjunto de tablas y el
conjunto de dependencias de inclusión.

Fuente: Fundamentos de Bases de Datos - Práctico 1 – FING - UdelaR

Página 2 de 3
Tecnólogo en Informática - Base de Datos 1 - Práctico

Ejercicio 3

Dado el siguiente Modelo Entidad Relacional y las siguientes Restricciones No Estructurales:

RNE:
 LUGAR = YATE ∪ LOCAL
 YATE ∩ LOCAL = ∅

Se pide:
Utilizando las reglas vistas en el curso realizar el pasaje a Modelo Relacional especificando el conjunto de tablas y el
conjunto de dependencias de inclusión.

Fuente: Fundamentos de Bases de Datos – Segundo Parcial 2006 – FING - UdelaR

Página 3 de 3
Tecnólogo en Informática - Base de Datos 1 - Solución Práctico 2

Solución Práctico 2 - Pasaje de MER a Modelo Relacional

Ejercicio 2

Conjunto de tablas

EMPRESAS(nroEmp, nomEmp)
PRODUCTOS(nroProd, desc)
PROMOTORES(nroProm, nomProm)
PRODUCE(nroEmp, nroProd)
TRABAJA(nroProm, nroEmp)
PROMUEVE(nroProm, nroProd)

Conjunto de dependencias de inclusión

( ) ⊆ ( )

( ) ⊆ ( )

( ) ⊆ ( )

( ) ⊆ ( )

( ) ⊆ ( )

( ) ⊆ ( )

Página 1 de 2
Tecnólogo en Informática - Base de Datos 1 - Solución Práctico 2

Ejercicio 3

Conjunto de tablas

COMIDA(nomComida)
CONFITERIA(nomConf, dirConf)
CONF_TEL(nomConf, telConf)
CONF_SUC(nomConf, dirSuc)
LUGAR(nomLug, capacidad, nomConf)
YATE(nomLug, puerto)
LOCAL(nomLug, dirLocal)
INGREDIENTE(cod, nomComida, cantidad)
PREPARA(nomConf, nomComida)

Conjunto de dependencias de inclusión

( _ ) ⊆ ( ! ! )

( _ ) ⊆ ( ! ! )

( " ) ⊆ ( ! ! )

(# ) ⊆ ( " )
$%& $%&

( ) ⊆ ( " )
$%& $%&

( ) ⊆ ( ! ! )

( ! ! ) ⊆ ( )

( ) ⊆ ( ! )
' ( ' (

(! " ! ) ⊆ ( ! )
' ( ' (

Página 2 de 2
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
Tecnólogo en Informática - Base de Datos 1 - Solución Práctico 3

Solución Práctico 3 - Álgebra Relacional

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?

SOL = Πbar (SIRVE >< (σbebedor = ’Juan Fernandez’ (LEGUSTA))


$2 = $4

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

SOL = Πbebedor (FRECUENTA >< Πbebedor, bar (SIRVE >< LEGUSTA))


$1 = $3 ∧ $2 = $4 $2 = $4

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)

A= Πbebedor, bar (SIRVE >< LEGUSTA))


$2 = $4

Parejas (bebedor, bar) tal que el bar sirve una cerveza que al bebedor le gusta.

B = FRECUENTA – A

Devuelve las parejas (bebedor, bar) tal que el bebedor frecuenta el bar y en dicho bar no sirven cerveza que le
gusta al bebedor (ninguna de las que le gusta).

SOL = Πbebedor (FRECUENTA) – Πbebedor (B)


El resultado está compuesto por los bebedores que sólo frecuentan bares que sirven alguna cerveza que les
guste.

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.)

SOL = Πbebedor (FRECUENTA) – Πbebedor (FRECUENTA >< Πbebedor, bar (SIRVE >< LEGUSTA))
$1 = $3 ∧ $2 = $4 $2 = $4

Esta consulta devuelve los bebedores que no frecuentan bares que sirven alguna cerveza que les gusta.

Página 1 de 3
Tecnólogo en Informática - Base de Datos 1 - Solución Práctico 3

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 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.

A = ∏idSintoma (SINTOMA) - ∏idSintoma (INDICACIONES)

Identificación de los síntomas que no tienen medicamentos indicados.

B = ∏idpaciente (REPORTA * A)

Identificación de los pacientes que reportan por lo menos un síntoma para el cual no hay medicamentos
indicados

SOL = ∏idpaciente (REPORTA) – B

Página 2 de 3
Tecnólogo en Informática - Base de Datos 1 - Solución Práctico 3

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)

A = ∏idPaciente, idMed, dosis (REPORTA * INDICACIONES)

Paciente, medicamento indicado para un síntoma con su dosis.

B = ∏idPaciente, idMed, dosis (REPORTA * CONTRAINDICACIONES)

Paciente, medicamento contraindicado para un síntoma con su dosis.

C = ∏$1,$2 (A >< B)
$1=$4 ∧ $2=$5 ∧ $6≤$3

Paciente medicamento tal que el medicamento esta indicado para un síntoma del paciente pero esta
contraindicado en una dosis menor o igual a la indicada.

SOL = ∏$1, $2 A - C

Página 3 de 3
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Práctico 4 – SQL

Ejercicio 1
Dada la base de datos del ejercicio 2 del práctico 2:

- CURSOS (codigo, nombre, cant_inscriptos)

- PREVIATURAS (codigo, codigoPrevia)

- ASIGNADOS (codigo, docente)

- HORARIOS_DICTADO (codigo, docente, horario, salon)

- DOCENTES (nombre, oficina, telefono, departamento)

Dar sentencias SQL que permitan realizar las siguientes operaciones:

a. Crear las tablas CURSOS y ASIGNADOS, sabiendo que:


En CURSOS:
código: son cadenas de 7 caracteres
nombre: son cadenas de no más de 30 caracteres
cant_inscriptos: son números enteros

En ASIGNADOS
docente: son cadenas de no más de 30 caracteres
∏ codigo (ASIGNADOS) ⊆ ∏ codigo (CURSOS)

b. Agregar los siguientes datos a la tabla CURSOS

c. Actualizar el nombre del curso con código CSC 324 a "Arquitectura de Computadores".

d. Actualizar los datos de la tabla de cursos de forma de corregir un error del ingreso para lo que es
necesario multiplicar por 1.5 los inscriptos a todos los cursos.

e. Actualizar el teléfono de la oficina 1 pasando a ser el nuevo teléfono: 29789010.

f. Borrar los datos que corresponden a asignaciones al docente: Astro.

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 1 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

g. Resolver las siguientes consultas:

1. Obtener el nombre de los cursos que tienen horarios de dictado en los salones
107, 108, 202, 401 o 105.

2. Obtener el código de los cursos que tienen como prerrequisito (inmediato) cursos del
primer semestre (o sea, que su código comienza con CSC 1....).

3. Obtener las parejas (Nombre_curso, horasdocentes) donde para cada curso se calcula
las horas docentes a dedicar asumiendo que se dedican 5 horas por inscripto al curso.

4. Encontrar la cantidad de inscriptos promedio.

5. Encontrar la cantidad de inscriptos total en todos los cursos dictados por Speedy
González.

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

7. Obtener para cada docente el total de inscriptos en todos sus cursos.

8. Obtener la cantidad de inscriptos para aquellos cursos a los que fueron asignados
más de 5 docentes.

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

Ejercicio 2
Considerando los siguientes esquemas relación:

- COMPAÑIA (nombreComp, ciudadComp)


Representa la información de todas las compañías, nombre de la compañía y ciudad donde se
encuentra la misma.

- TRABAJA (nombreEmp, nombreComp, salario)


Representa la información de la compañía en la cual trabaja cada empleado y el salario que
éste percibe.

- GERENCIA (nombreEmp, nombreGerente)


Representa la información que relaciona a cada empleado con su gerente.

- VIVE (nombre, dirección, ciudad)


Representa la información de los datos personales de los empleados, nombre del empleado,
dirección y ciudad donde vive.

Donde:

∏ nombreEmp (TRABAJA) ⊆ ∏ nombre (VIVE)

∏ nombreComp (TRABAJA) ⊆ ∏ nombreComp (COMPAÑIA)

∏ nombreEmp (GERENCIA) ⊆ ∏ nombreEmp (TRABAJA)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 2 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

∏ nombreGerente (GERENCIA) ⊆ ∏ nombreEmp (TRABAJA)

Resolver las siguientes consultas en SQL:

a. Nombre y ciudad donde viven las personas que trabajan en la compañía de nombre
INCA.

b. Nombre, dirección y ciudad de las personas que trabajan en la compañía de nombre


HLP.SA y ganan más de $800.000.

c. Nombre y dirección de las personas que viven en la misma ciudad en la cual está ubicada
la compañía para la cual trabaja o viven en la misma ciudad que su gerente.

d. Nombre de las personas que no trabajan para la compañía AMIP.

e. Nombre y dirección de las personas que viven en la misma ciudad que su gerente y que no
viven en la ciudad de la compañía RAMF.LTDA.

f. ¿Cómo deberá modificarse el esquema relacional para que una compañía pueda estar
ubicada en varias ciudades? En ese nuevo esquema, encontrar los nombres de las
compañías que están ubicadas en todas las ciudades donde está ubicada la compañía
FARM.SA.

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

Ejercicio 3
Debido a la desorganización reinante en una empresa de plaza, la mesa directiva de la misma
decidió nombrar a un encargado de organización. Este encargado decidió automatizar el
sistema de control de asignaciones de tareas a secciones y empleados de la empresa. Para
esto creó una base de datos con los siguientes esquemas relación:

- FUNCIONARIOS (nroF, nomF, aaIng)


Representa la información de todos los empleados de la empresa. Donde nroF representa el
número de funcionario, nomF el nombre del funcionario y aaIng representa el año de ingreso del
funcionario a la empresa.

- SECCIONES (codS, nomS, local, tel)


Representa la información de todas las secciones que posee la empresa. Donde codS representa
el código de la sección, nomS su nombre, tel número de teléfono de la sección y local el local
donde esta ubicada.
En un local puede haber varias secciones.

-TAREAS (codT, nomT, duración)


Representa la información de todas las tareas de la empresa. Donde codT representa el código de
la tarea, nomT su nombre y duración la duración estimada en días de la misma.

- PREVIAS (codTP, codTS)


Representa la relación de orden que existe entre las tareas.

Una tupla (p,s) de esta relación, significa que la tarea con código p debe realizarse inmediatamente
antes que la tarea con código s.

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 3 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

∏ codTP (PREVIAS) ⊆ ∏ codT (TAREAS)

∏ codTS (PREVIAS) ⊆ ∏ codT (TAREAS)

- TRABAJA (nroF, codS, hsSem, sueldo, cargo)


Representa la cantidad de horas semanales, el cargo que tiene y el sueldo que gana cada
funcionario en cada sección en que trabaja.

∏ nroF (TRABAJA) ⊆ ∏ nroF (FUNCIONARIOS)

∏ codS (TRABAJA) ⊆ ∏ codS (SECCIONES)

- ASIGNACION (nroF, codT, fAsig)


Representa las asignaciones de tareas realizadas.

Una tupla (fun, tar, fe) de esta relación representa que al funcionario de número "fun" se le ha
asignado la tarea con código "tar" en la fecha "fe".

∏ nroF (ASIGNACION) ⊆ ∏ nroF (FUNCIONARIOS)

∏ codT (ASIGNACION) ⊆ ∏ codT (TAREAS)

- OBLIGACIONES (codS, codT)


Representa la relación de obligatoriedad que existe entre las secciones y algunas tareas que
deben realizar.
Una tupla (sec, tar) de esta relación representa que la sección con código "sec" está obligada a
realizar la tarea con código "tar".

∏ codS (OBLIGACIONES) ⊆ ∏ codS (SECCIONES)

∏ codT (OBLIGACIONES) ⊆ ∏ codT (TAREAS)

La mesa directiva de la empresa, le propone a usted que resuelva las siguientes


consultas en SQL. En caso de ser necesario utilice vistas para su resolución.

a. Obtener el código, el nombre y la duración de las tareas que se deben realizar


inmediatamente antes de la tarea con código "c42".

b. Obtener los nombres y año de ingreso de los funcionarios que tienen algún sueldo mayor
que algún sueldo del funcionario con número 812.

c. Obtener las parejas de números de funcionarios tales que el primero tiene asignada una
tarea que debe realizarse inmediatamente antes que una tarea asignada al segundo
funcionario.

d. Obtener los nombres de los funcionarios tales que en la misma fecha le asignaron más de
una tarea.

e. Obtener los códigos, nombre y duración de las tareas que están obligadas a realizar la
sección con nombre "PROMOCION" y/o la sección con nombre "COMPUTOS".

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 4 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

g. Obtener los datos de las tareas inmediatamente previas e inmediatamente sucesoras de las
tareas de mayor duración.

h. Hallar los nombres de los funcionarios que ingresaron antes del año 1986 y sólo fueron
asignados a tareas cuya duración no supera los 60 días.

i. Obtener los datos de las secciones, tal que cada sección está obligada a realizar todas las
tareas con nombre "URGENTE1".

j. Obtener los sueldos totales de los funcionarios que tienen la mayor carga horaria total.

k. Obtener los datos de las tareas asignadas a funcionarios que trabajan en secciones que
están en locales donde hay un sólo teléfono interno para todo el local.

l. Obtener los locales donde trabajan la menor cantidad de funcionarios.

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

Ejercicio 4
Una importante empresa de venta de pinturas con varias sucursales decide formar una sección
que se encargue de realizar las combinaciones de colores requeridas por los clientes. A su vez
mantienen una base de datos con los pedidos para poder obtener estadísticas acerca de las
mezclas más frecuentes.

Dicha base de datos posee las siguientes tablas:

-COLORES (idC, descripcion, tipo, brillo)


Representa la información de cada uno de los colores. IdC es el identificador del color.
Descripcion es el nombre asignado al color. Tipo indica si el color es puro (provisto por los
fabricantes, sin necesidad de realizar mezclas) o mezcla (ese color no se vende, hay que
realizar la mezcla). Brillo indica si el color es brilloso o mate.
Descripcion identifica también al color.

-MEZCLAS (idC, idCPuro, proporcion)


Representa la información de los colores que se obtienen como combinación de colores puros.
IdC es el identificador del color de la mezcla. IdCPuro y proporción indican la proporcion del
color puro para realizar la mezcla.

-PRODUCTOS (IdP, descripcion, marca, tamaño)


Representa la información de los productos (latas de pintura). IdP es un identificador.
Descripcion es el nombre del producto. Marca es la marca del producto. Tamanio es la cantidad
de litros de la lata. Se consideran productos distintos los que tienen diferentes tamaños, pero no
los que tienen diferentes colores, es decir, que IdP no indica el color que tiene la pintura.

-COLOR_PRODUCTO (idP, idC)


Representa la información de los colores puros en que viene cada producto. IdP es el identificador
del producto, e idC es el identificador del color. Sólo se venden latas de colores
puros.

-SOLICITUDES (idSol, fecha, sucursal, idC, tamaño)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 5 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Representa las solicitudes de mezclas realizadas por las diferentes sucursales. Sólo se solicitan
mezclas, no colores puros. IdSol es un identificador. Fecha es la fecha en que se realizó la
solicitud, y sucursal la sucursal de la empresa desde la que se hizo la misma. IdC es el
identificador de color y tamaño es la cantidad de litros de la mezcla pedida.

NOTA: No existen tablas vacías.

Resolver las siguientes consultas en SQL:

a. Dar las marcas, que entre sus productos, tienen todos los colores necesarios para
realizar todas las mezclas.

b. Dar el color puro utilizado en más de 3 mezclas.

c. Dar la lista de mezclas mates solicitadas más de 5 veces, y la cantidad total de litros
solicitados de cada una.

d. Dar la lista de colores que pueden prepararse mezclando, únicamente, colores del
producto P13.

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

Ejercicio 5

Una automotora que se dedica a la comercialización de autos usados utiliza una base de
datos con el siguiente esquema:

- AUTOMOVILES (nroChasis, matricula, marca, modelo, año, disponible?)


Contiene la información de los automóviles manejados por la automotora, el número de
chasis que lo identifica, su matrícula, marca, modelo, año y un atributo que indica si el
automóvil puede ser vendido.

- CLIENTES (ciCliente, nombre, direccion, telefono)


Contiene, para cada cliente registrado en la automotora, su cédula de identidad, nombre
completo, dirección y teléfono.

- VENTAS (nroChasis, fecha, ciCliente, precio)


Contiene la información de las ventas realizadas por la automotora. De cada venta se
registra el número de chasis del automóvil vendido, el cliente comprador, la fecha y el precio
en dólares por el cual se realizó la venta.

- SE_INTERESA (ciCliente, nroChasis)


Contiene la información de aquellos clientes que demostraron interés por algún automóvil.
En este esquema no existen tablas vacías y se cumplen las siguientes dependencias de
inclusión:

∏ ciCliente(VENTAS) ⊆ ∏ ciCliente(CLIENTES)

∏ nroChasis(VENTAS) ⊆ ∏ nroChasis(AUTOMOVILES)

∏ ciCliente(SE_INTERESA) ⊆ ∏ ciCliente(CLIENTES)

∏ nroChasis(SE_INTERESA) ⊆ ∏ nroChasis(AUTOMOVILES)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 6 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Resolver las siguientes consultas en SQL:

a. Cédula de identidad, nombre y teléfono (ordenados por nombre) de los clientes que demostraron
interés sobre todos los autos para los que hay alguna venta por más de U$S 8000.

b. Número de chasis de automóviles marca “Ford” por los cuales han demostrado interés más de 10
clientes pero que no han sido vendidos.

Fuente: Fundamentos de Bases de Datos 2009 Primer Parcial – Fing – Udelar

Ejercicio 6

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
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:

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 7 de 8
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

∏idSintoma,idMed (INDICACIONES) ∩ ∏idSintoma,idMed(CONTRAINDICACIONES) = ∅

Resolver las siguientes consultas en SQL:

a. Parejas nombre del paciente, descripción del síntoma tal que el paciente es el único que reporta ese
síntoma.

b. Nombre de los síntomas junto con la cantidad de medicamentos indicados para ellos, para los
síntomas que han sido reportados por más de 10 pacientes.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 8 de 8
Tecnólogo en Informática – Base de Datos 1 – Solución Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Solución Práctico 4 – SQL

Ejercicio 2

Considerando los siguientes esquemas relación:

- COMPAÑIA (nombreComp, ciudadComp)


Representa la información de todas las compañías, nombre de la compañía y ciudad dónde se encuentra la misma.

- TRABAJA (nombreEmp, nombreComp, salario)


Representa la información de la compañía en la cual trabaja cada empleado y el salario que éste percibe.

- GERENCIA (nombreEmp, nombreGerente)


Representa la información que relaciona a cada empleado con su gerente.

- VIVE (nombre, dirección, ciudad)


Representa la información de los datos personales de los empleados, nombre del empleado, dirección y ciudad donde
vive.

Donde:

∏ nombreEmp (TRABAJA) ⊆ ∏ nombre (VIVE)

∏ nombreComp (TRABAJA) ⊆ ∏ nombreComp (COMPAÑIA)

∏ nombreEmp (GERENCIA) ⊆ ∏ nombreEmp (TRABAJA)

∏ nombreGerente (GERENCIA) ⊆ ∏ nombreEmp (TRABAJA)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 1 de 6
Tecnólogo en Informática – Base de Datos 1 – Solución Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Resolver las siguientes consultas en SQL:

a. Nombre y ciudad dónde viven las personas que trabajan en la compañía de nombre
INCA.

select t.nombreEmp, v.ciudad


from TRABAJA as t, VIVE as v
where t.nombreEmp = v.nombre and t.nombreComp = ‘INCA’

b. Nombre, dirección y ciudad de las personas que trabajan en la compañía de nombre


HLP.SA y ganan más de $800.000.

select t.nombreEmp, v.ciudad, v.direccion


from TRABAJA as t, VIVE as v
where t.nombreEmp = v.nombre and T.nombreComp = ‘HLP.SA’
and t.salario > 800000

c. Nombre y dirección de las personas que viven en la misma ciudad en la cual está ubicada la compañía para la cual
trabaja o viven en la misma ciudad que su gerente.

select v.nombre, v.direccion, P.ciudad


from VIVE as v, TRABAJA as t, COMPAÑIA as c
where t.nombreEmp = v.nombre and t.nombreComp = c.nombreComp
and
(v.ciudad = c.ciudadComp --vive en la misma ciudad de la compañia

or v.ciudad in --o vive en la ciudad de su gerente


(select vG.ciudad --ciudad del gerente
from GERENCIA as g, VIVE as vG
where vG.nombre=g.nombreGerente and g.nombreEmp = v.nombre))

d. Nombre de las personas que no trabajan para la compañía AMIP.

select t.nombreEmp
from TRABAJA as t
where t.nombreEmp not in
(select nombre_emp
from TRABAJA as t
where t.nombreComp = ‘AMIP’)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 2 de 6
Tecnólogo en Informática – Base de Datos 1 – Solución Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

e. Nombre y dirección de las personas que viven en la misma ciudad que su gerente y que no viven en la ciudad de la
compañía RAMF.LTDA.

select v1.nombre, v1.direccion, v1.ciudad


from VIVE as v1, VIVE as v2, GERENCIA as g
where v1..nombre = g.nombreEmp and g.nombreGerente = v2.nombre and
v1.ciudad = v2.ciudad
and v1.ciudad not in(select ciudadComp
from COMPAÑIA as c
where c.nombreComp = ‘RAMF.LTD’)

f. ¿Cómo deberá modificarse el esquema relacional para que una compañía pueda estar ubicada en varias ciudades? En
ese nuevo esquema, encontrar los nombres de las compañías que están ubicadas en todas las ciudades donde está
ubicada la compañía FARM.SA.

select c.nombreComp
from COMPAÑIA as c1
where not exists
(select * From COMPAÑIA as c2 –las que no están en la ciudad que está
FARM
where c2.nombreComp = ‘FARM.SA’
and (c1.nombreComp, c2.ciudad) not in (select * from COMPAÑÍA)
)

Ejercicio 3

Debido a la desorganización reinante en una empresa de plaza, la mesa directiva de la misma decidió nombrar a un
encargado de organización. Este encargado decidió automatizar el sistema de control de asignaciones de tareas a
secciones y empleados de la empresa. Para esto creó una base de datos con los siguientes esquemas relación:

- FUNCIONARIOS (nroF, nomF, aaIng)


Representa la información de todos los empleados de la empresa. Donde nroF representa el número de funcionario,
nomF el nombre del funcionario y aaIng representa el año de ingreso del funcionario a la empresa.

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 3 de 6
Tecnólogo en Informática – Base de Datos 1 – Solución Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

- SECCIONES (codS, nomS, local, tel)


Representa la información de todas las secciones que posee la empresa. Donde codS representa el código de la sección,
nomS su nombre, tel número de teléfono de la sección y local el local donde esta ubicada.
En un local puede haber varias secciones.

-TAREAS (codT, nomT, duración)


Representa la información de todas las tareas de la empresa. Donde codT representa el código de la tarea, nomT su
nombre y duración la duración estimada en días de la misma.

- PREVIAS (codTP, codTS)


Representa la relación de orden que existe entre las tareas.

Una tupla (p,s) de esta relación, significa que la tarea con código p debe realizarse inmediatamente antes que la tarea
con código s.

∏ codTP (PREVIAS) ⊆ ∏ codT (TAREAS)

∏ codTS (PREVIAS) ⊆ ∏ codT (TAREAS)

- TRABAJA (nroF, codS, hsSem, sueldo, cargo)


Representa la cantidad de horas semanales, el cargo que tiene y el sueldo que gana cada funcionario en cada sección
en que trabaja.

∏ nroF (TRABAJA) ⊆ ∏ nroF (FUNCIONARIOS)

∏ codS (TRABAJA) ⊆ ∏ codS (SECCIONES)

- ASIGNACION (nroF, codT, fAsig)


Representa las asignaciones de tareas realizadas.

Una tupla (fun, tar, fe) de esta relación representa que al funcionario de número "fun" se le ha asignado la tarea con
código "tar" en la fecha "fe".

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 4 de 6
Tecnólogo en Informática – Base de Datos 1 – Solución Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

∏ nroF (ASIGNACION) ⊆ ∏ nroF (FUNCIONARIOS)

∏ codT (ASIGNACION) ⊆ ∏ codT (TAREAS)

- OBLIGACIONES (codS, codT)


Representa la relación de obligatoriedad que existe entre las secciones y algunas tareas que deben realizar.
Una tupla (sec, tar) de esta relación representa que la sección con código "sec" está obligada a realizar la tarea con
código "tar".

∏ codS (OBLIGACIONES) ⊆ ∏ codS (SECCIONES)

∏ codT (OBLIGACIONES) ⊆ ∏ codT (TAREAS)

La mesa directiva de la empresa, le propone a usted que resuelva las siguientes consultas en SQL. En caso de ser
necesario utilice vistas para su resolución.

a. Obtener el código, el nombre y la duración de las tareas que se deben realizar inmediatamente antes de la tarea con
código "c42".

select codT, nomT, duracion


from TAREAS, PREVIAS
where codTS = ‘c42’ and codTP = codT;

b. Obtener los nombres y año de ingreso de los funcionarios que tienen algún sueldo mayor que algún sueldo del
funcionario con número 812.

select nomF, aaIng


from FUNCIONARIOS
where nroF in
(select t1.nroF – funcionarios con sueldo mayor al sueldo de ‘812’
from TRABAJA as t1, TRABAJA as t2
where t2.nroF = ‘812’
and t1.sueldo > t2.sueldo)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 5 de 6
Tecnólogo en Informática – Base de Datos 1 – Solución Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

d. Obtener los nombres de los funcionarios tales que en la misma fecha le asignaron más de una tarea.

select f.nomF
from FUNCIONARIOS as f, ASIGNACION as a
where f.nroF = a.nroF
group by f.nroF, f.nomF, a.fAsig
having count (∗) > 1

e. Obtener los códigos, nombre y duración de las tareas que están obligadas a realizar la sección con nombre
"PROMOCION" y/o la sección con nombre "COMPUTOS".

select t.codT, t.nomT, t.duracion


from SECCIONES as s, OBLIGACIONES as o, TAREAS as t
where s.nomS = ‘PROMOCION’ and s.codS = o.codS and o.codT = t.codT
union
select t.codT, t.nomT, t.duracion
from SECCIONES as s, OBLIGACIONES as o, TAREAS as t
where s.nomS = ‘COMPUTOS’ and s.codS = o.codS and o.codT = t.codT

Otra solución, con OR

select t.codT, t.nomT, t.duracion


from SECCIONES as s, OBLIGACIONES as o, TAREAS as t
where (s.nomS = ‘PROMOCION’ or s.nomS = ‘COMPUTOS’ )
and s.codS = o.codS and o.codT = t.codT

h. Hallar los nombres de los funcionarios que ingresaron antes del año 1986 y sólo fueron asignados a tareas cuya
duración no supera los 60 días.

select f.nomF
from FUNCIONARIOS as f, ASIGNACION as a, TAREAS as t
where f.nroF = a.nroF and t.codT = a.codT and
t.duracion < 60 and f.aaIng < 1986
and not exists(select ∗
from ASIGNACION as a1, TAREAS as t1
where a1.nroF = f.nroF and a1.codT = Tt1.codT and t1.duracion >= 60)

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 6 de 6
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Práctico 5 – Diseño Relacional


Aclaraciones:

• A, B, C, D, E, G, H, I son considerados atributos atómicos.


• W, X, Y, Z son considerados conjuntos de atributos atómicos.
• R es considerado un esquema relación
• r es considerado una instancia

Ejercicio 1

Sea R(A,B,C,D,E) con F = { A → B, B → D, C → E, E → B }.

¿Cuáles de las siguientes instancias de R satisfacen F?

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

Ejercicio 2
Sea el siguiente esquema de base de datos, donde se cumplen las dependencias funcionales indicadas
entre llaves:

FABS (#f, nombre, dirección) { #f → nombre,dirección }

PROD (#p, descripción) { #p → descripción }

VENDE (#f, #p, precio) { #f, #p → precio }

Considere la siguiente consulta:

select count(*)
from FABS, VENDE
where FABS.#f=VENDE.#f and #f=4;

a. Sabiendo que no hay tuplas repetidas en las tablas y que el resultado de la consulta anterior es 10,
¿Cuál es el resultado de las siguientes consultas?

1. select count(*)
from FABS where #f=4;

2. select #f, count(*)


from FABS
group by #f
having count(*) > 1;

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 1 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

3. select #f,#p,sum(precio)
from VENDE
group by #f,#p
having count(*) > 1;

b. ¿Qué consulta debe realizarse para saber si no se cumple la dependencia funcional #p → descripción
en PROD y cómo debe interpretarse?

c. Sabiendo que el resultado de la consulta:

select nombre
from FABS, VENDE
where FABS.#f = VENDE.#f and #p = 10;

es:

Dar el resultado de

select nombre, count(*)


from FABS
where nombre="Juan"
group by nombre
having count(*) < 2;

d. ¿Cual es el resultado de la consulta de la parte c si las tuplas (f1 p1 r1) y (f1 p1 r2) son válidas en
VENDE?

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

Ejercicio 3
Sean las siguientes definiciones alternativas de dependencia funcional. Sea R(X, Y, Z), donde X, Y, Z
son conjuntos no vacíos de atributos. Indicar cuales son correctas y cuales no.

X → Y se cumple en R si y solo si:

a. ∀r de R se cumple: ∀t,u ∈ r, si t[X] = u[X], entonces t[Y] = u[Y].

b. ∀r de R se cumple: ¬ (∃ t, u ∈ r tal que t[X] = u[X] y t[Y] ≠ u[Y]).

c. ∀r de R, ∀ t, u ∈ r, t[XY] = u[XY].

d. ∀r de R, no se repiten los valores de X en r.

e. ∀r de R, cada valor de X tiene un único valor asociado de Y.

f. ∀r de R, hay una correspondencia biunívoca (biyectiva) entre valores de X y de Y.

g. ∀r de R, (∀t,u ∈ r , si t y u difieren en Y, deben diferir en X).

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 2 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

h. ∀r de R, (∀t,u ∈ r , si t y u coinciden en Y, deben coincidir en X).

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

Ejercicio 4
Indicar cuales de las siguientes derivaciones de dependencias funcionales son válidas demostrando
mediante las reglas de inferencia para dependencias funcionales o usando un contraejemplo.

a. { X →Y, Z → Y } |- XZ → Y

b. { XZ → Y } |- X → Y

c. { XZ → Y, X → Z } |- X → Y

d. { Z → W , X →Y } |- XZ →YW

e. { XY → Z, Z → X } |- Z → Y

f. { X → Y, Y → Z } |- X → YZ

g. { X → Y, W → Z, W ⊆ Y } |- X → Z

h. { XY →Z, Y →W } |- XW →Z

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

Ejercicio 5

1 - Sea R(A,B,C,D,E,G,H,I) y F = {AB → CH, CD → B, B → GAE, H → DI }. Calcular las siguientes


clausuras

a. A+

b. B+

c. (CD ) +

d. (BEI) +

e. (BE) +

f. (HA) +

g. (ABH) +

2 – Sea R(X, Y, Z) donde X, Y, Z son conjuntos no vacíos de atributos y F un conjunto de dependencias


funcionales que se cumplen en R. Demostrar o dar un contraejemplo de los siguientes enunciados.

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 3 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

a. X+ U Y + = XY +
b. X + U Y + ⊆ XY +
c. XY + ⊆ X + U Y +
Fuente: Fundamentos de Bases de Datos 2011 Práctico 5 – Fing – Udelar

Ejercicio 6

Sea F = { AB → C, C → D, B → C, C → E, HB → D }

Decir cuales de las siguientes dependencias funcionales están en F+:

a. B → D

b. E → D

c. C → DE

d. A → C

e. HA → CD

f. CD → E

g. A → D

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

Ejercicio 7

Sea R(A B C D E G) y F = {AB → D, CD → G, E → A, A → C, BG → C, D → A }

a. Calcular las siguientes clausuras:

1. ( AD) +
2. (D) +
3. (BC ) +
4. (EB ) +
5. (B ) +
6. (EBC ) +

b. ¿Alguno de los conjuntos anteriores es superclave?

c. ¿Alguno es clave?

d. Hallar todas las claves de R según F.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 4 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Ejercicio 8

Para cada uno de los siguientes esquemas relación y sus correspondientes conjuntos de dependencias
funcionales, hallar todas las claves. Justificar la respuesta.

a. R1(A, B, C, D, E, G, H) y
F1 = {AB → CDE, C → A, D → E, H → E, HE → G }

b. R2(A, B, C, D, E, G) y
F2 = { B → CD, ACD → Β, C → AE }

c. R3(A,B,C,D,E,G,H,I) y
F3 = {A → B, B → C, E → I, EGC → B, G → H , B → A }.

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

Ejercicio 9

Sea R(A,B,C,D,E) y F = { AB → C, C → DE, E → C }.

Decir cuáles de los conjuntos de dependencia funcionales son equivalentes a F. En caso de no serlo dar
relaciones de R que ejemplifiquen este hecho.

a. F1 = {AB → CDE, E → CD, C → D}


b. F2 = {AB → D, D → C, C → DE, E → C}
c. F3 = {AB → CDE, C → D, C → E, E → C, E → D}
d. F4 = {A → C, B → C, C → DE, E → C}

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

Ejercicio 10

Hallar cubrimientos minimales de los siguientes conjuntos:


a. {A →B, B →C, C →D, D →E, E →A, A →C, C →E, E →B, B →D, D →A}.
b. {A →B, AE →D, B →C, DH →C, C →D, CG →B, D →A, BI →A}.

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

Ejercicio 11

Una inmobiliaria desea construir una base de datos con las casas que tiene para alquilar, los clientes y
los propietarios. De cada casa se conoce un código que la identifica, su dirección, la cédula de su
propietario, la cantidad de dormitorios, la cantidad de baños y el alquiler mensual.
De los clientes se conoce la cédula de identidad, su nombre, su ultima dirección conocida, su último
teléfono conocido (uno solo) y la cédula del propietario que le sale de garantía (uno solo). De los
propietarios se conoce su cédula, su dirección y su teléfono (único). Para cada casa alquilada se
establece un contrato que tiene un número que lo identifica y registra la cédula del cliente, el código de
la propiedad y la fecha de inicio y de fin del contrato. En una fecha de inicio de un contrato, no se puede
alquilar una misma casa a más de un cliente.
Identificar todas las dependencias funcionales que se cumplen en la realidad descripta.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 5 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico

Solución Práctico 5 – Diseño Relacional

Ejercicio 5:

a. (A)+ = { A }
b. (B)+ = { B, G, A, E, C, H, D, I }
c. (CD) + = { C, D, B, G, A, E, H, I }
d. (BEI) + = { B, E, I, G, A, C, H, D }
e. (BE) + = { B, E, G, A, C, H, D, I }
f. (HA) + = { H, A, D, I }
g. (ABH) + = { A, B, H, C, D, I, B , E }

Ejercicio 6:

Sea F = { AB C, C D, B C, C E, HB D }.


Se van a calcular los X+F correspondientes a cada dependencia funcional X Y F.
Se concluirá que esta dependencia funcional X Y F+ en caso de que Y X+.
a. (B) + = { B, C, D, E }, D B+ (B D) F+.
b. (E) + = { E }, D E+ (E D) F+.
c. (C) + = { C, D, E }, D,E C+ (C DE) F+.
d. (A) + = { A }, C A+ (A C) F+.
e. (HA) + = { H, A }, C,D (HA) + (HA CD) F+.
f. (CD) + = { C, D, E }, E (CD) + (CDE) F+.
g. (A) + = { A }, D A+ (A D) F+.

Ejercicio 7:

Sea R(A B C D E G) y F = { AB D, CD G, E A, AC, BGC, DA }.


a.
1. (AD) + = { A , D, C, G }
2. (D) + = { D, A, C, G }
3. (BC) + = { B, C }
4. (EB) + = { E, B, A, C, D, G }
5. (B) + = { B }
6. (EBC) + = { E, B, C, A, D, G }
b. Los conjuntos (EB) y (EBC) son superclave , ya que su clausura contiene a todos los
atributos de la relación.

c. El conjunto que podría ser clave es (EB), pero primero hay que verificar que no
contiene una clave.
(E) + = { E, A, C } no es clave.
(B) + = { B } no es clave
(EB) es clave

d. B y E no quedan determinados por ningún otro conjunto de atributos, porque nunca


aparecen en la parte derecha de ninguna fd por lo que estarán contenidos en todas las
claves. Pero (BE) es clave (por c.), por lo tanto no habrá otra clave, porque si la hubiera
debería contener a (BE) y entonces sería superclave.
La única clave es (BE)

Ejercicio 9:

F = { AB C, CDE, E C }
a. F1 = { AB CDE, E CD, C D }
No son equivalentes.
(C E) F1+

b. F2 = { AB D, D C, CDE, EC }


No son equivalentes.
(D C) F+

c. F3 = { AB CDE, C D, C E, E C, E D }


Son equivalentes.
Para eso verificaremos que cada fd de un conjunto está en la clausura del otro.
F F3+:
(AB) +F3 = { A, B, C, D, E } (AB C) F3+.
(C) +F3 = { C, D, E } (C DE) F3+.
(E) +F3 = { E, C, D } (E C} F3+.
F3 F+:
(AB) +F = { A, B, C, D, E } (AB CDE) F+.
(C) +F = { C, D, E } {C D,C E} F+.
(E C) F.
(E)+F = { E, C, D } (E D) F+.
Por lo tanto son equivalentes.

d. F4 = { A C, BC, CDE, EC }


No son equivalentes.
(A C, B C) F+
Ejercicio 10:

F es minimal sii

– Toda df en F tiene un solo atributo a la derecha

– No podemos reemplazar ninguna df X->A € F por una df Y->A, donde Y < X , y

seguir teniendo un conjunto de dfs equivalente a F

– No podemos quitar ninguna df de F y seguir teniendo un conjunto de dfs

equivalente a F

a. Los puntos 1 y 2 se satisfacen ya, con respecto al punto 3 las dependencias


ACC EBD, D  son redundates ya que clausurando cada
lado izquierdo de cada una de esas dependecias se llega al lado derecho por lo que
el cubrimiento minimal quedaría:

Fmin = { A BCC DD EEA }


Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Práctico 6 – Diseño Relacional


Aclaraciones:

• A, B, C, D, E, G, H, I son considerados atributos atómicos.


• W, X, Y, Z son considerados conjuntos de atributos atómicos.
• R es considerado un esquema relación
• r es considerado una instancia

Ejercicio 1

Sea el esquema relación R(A,B,C,D,E,G) y ρ = { (AB), (CDE), (EG), (BC) } una descomposición de R.

Indicar en cuáles de los siguientes conjuntos de dfs, la descomposición ρ tiene join sin pérdida.
Si no tiene jsp dar relaciones que ejemplifiquen el hecho.

a. F = { A →C, B →D, E →G, GE →D, C →E, D →G, G →C, CD →A }


b. F = { A → C B →D, E →G, C →E, D →G, G →C, CD →A }
c. F = { B →D, E →G, C →E, D →G, G →C, GE →D, CD →A }

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

Ejercicio 2
Sea el esquema relación R(A,B,C,D,E,G) y F = { A →BC, C →DG, BD →E, AB →D, BC →G } el
conjunto de dependencias funcionales sobre R.

Sean las siguientes descomposiciones de R

ρ1 = {(ABC), (CDG), (BDE)}  ρ2 = {(ADE), (ABC), (ADG)}


ρ3 = {(ABDE), (BCG), (CDG)} ρ4 = {(ABCG), (CD), (ADE)}
ρ5 = {(AB), (AC), (AD), (CG), (BDE)} ρ6 = {(ABCDG), (BE), (DE)}

Para cada una de las descomposiciones anteriores:

a. Determinar que dependencias se proyectan en cada esquema.


b. Determinar si preservan las dependencias funcionales. En caso negativo dar un ejemplo de
problema de inconsistencia en los datos que podría ocurrir.

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

Ejercicio 3
Sean R(A,B,C,D) y F = { A →B, B →C, A →D, D →C }.
Sea la descomposición ρ = {(AB), (AC), (BD)}.

a. Determinar si ρ tiene join sin pérdida respecto a F.


b. Dar las proyecciones de F sobre los esquemas de ρ.
c. Determinar si ρ preserva las dependencias de F.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 1 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Ejercicio 4
Dado un esquema relación R y F un conjunto de dfs sobre R.
Demostrar o dar contraejemplo para las siguientes afirmaciones:

a. Si una descomposición de R tiene join sin pérdida respecto a F, entonces preserva las dfs de F.
b. Si una descomposición de R preserva las dfs de F, entonces tiene join sin pérdida con respecto
a F.

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

Ejercicio 5

Sean R un esquema relación, F un conjunto de dfs sobre R y ρ una descomposición de R obtenida de la


siguiente forma:

Para cada df X →Y en F, se genera un esquema (XY) en ρ.

a. Demostrar o dar contraejemplo de que ρ preserva las dependencias de F.


b. Demostrar o dar contraejemplo de que ρ tiene join sin pérdida respecto F.

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

Ejercicio 6

Sean R un esquema relación, F un conjunto de dependencias funcionales sobre R y ρ una


descomposición de R.

Indicar cuáles de las siguientes afirmaciones son correctas. Justificar la respuesta.

a. La descomposición ρ está en una determinada forma normal si algún esquema de ρ está en esa
forma normal.
a. La descomposición ρ está en una determinada forma normal si a lo sumo hay un esquema de
ρ que no está en esa forma normal.
b. La descomposición ρ está en una determinada forma normal si la mayoría simple (la mitad + 1)
de los esquemas de ρ está en esa forma normal.
c. R está en 3NF según F si y solo si R esta en BCNF según F.
d. Si en F no hay dfs transitivas se cumple que: R esta en 3NF según F si y solo si R esta en 2NF
según F.
e. Si en F hay dfs parciales entonces ni R ni ρ están en BCNF.
f. Si en F hay dfs cuya parte izquierda no es superclave de R, entonces ρ no está en
g. BCNF.
h. Si ∀ Ri ∈ ρ se cumple que en cada ∏ Ri (F) las dfs (todas) tienen en su parte izquierda un
conjunto de atributos que son superclave en Ri, entonces ρ está en BCNF.
i. Si se está en las hipótesis anteriores, entonces ρ está en 3NF.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 2 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Ejercicio 7

Sean R, F y las descomposiciones dadas en el Ejercicio 2.


Determinar en que forma normal se encuentra cada descomposición.

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

Ejercicio 8
Sean R un esquema relación y F un conjunto de dfs sobre R.
Para obtener una descomposición de R en BCNF, se aplica el algoritmo visto en el curso. En cierto
momento se detiene el proceso en un paso del algoritmo que no es el final, obteniendo una
descomposición ρ = {R1,..., Rk}.

a. Determinar cuáles de las siguientes afirmaciones son correctas y cuáles no. Justificar la
respuesta.

1. La descomposición ρ es con join sin pérdida respecto a F.


2. La descomposición ρ está en BCNF respecto a F.
3. La descomposición ρ está en 3NF respecto a F.
4. La descomposición ρ está en 1NF respecto a F.
5. La descomposición ρ preserva las dfs de F.

b. Idem a., pero suponiendo que el proceso se detiene cuando el algoritmo llega al final.

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

Ejercicio 9

Sean R(A,B,C,D,E,G) y F = { AB → CD, A →E, B→G, EG→C}


Sea la descomposición ρ = { R1, R2, R3, R4 } con: R1(A,B,C,D), R2(A,E), R3(B,G), R4(E,G,C).

a. Probar que ρ tiene join sin pérdida y preserva dfs.


b. Mostrar que ρ está en BCNF según F.
c. Dadas las siguientes instancias de R1, R2, R3, R4:

1. ¿Son instancias válidas de los esquemas relación anteriores?


2. Analizar posibles problemas.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 3 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Ejercicio 10

Sea el esquema relación R(A,B,C,D,E,H,G) con A, B, C, D, E, H y G atributos atómicos y el conjunto de


dependencias funcionales:
F = {AB →CED, C→A , D → E, EH →G}

a. Hallar todas las claves. Justificar la respuesta.


b. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.
c. Sea la descomposición: R1(A,B,D,E), R2(A,B,C,H,G)
Decir si:
1. ¿Es una descomposición con join sin pérdida?
2. ¿Preserva las dependencias?
3. ¿En qué forma normal se encuentran R1 y R2?
Justificar adecuadamente todas las respuestas.

d. Llevar R a 3NF con join sin pérdida y preservación de dependencias.


e. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden
dependencias funcionales y cuales.

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

Ejercicio 11

Sea el esquema relación R(A,B,C,D,E,G,H) y el conjunto de dependencias funcionales F:


F = {CDG→EB, AB→C, A→D, ABC→E, B→E, CDE→A }

a. Hallar todas las claves. Justificar la respuesta.


b. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.
c. Dada la descomposición τ = (R1, R2) siendo: R1(A,B,C,E) y R2(C,D,E,G,H)
Decir si:
1. ¿Es una descomposición con join sin pérdida?
2. ¿Preserva las dependencias?
3. ¿En qué forma normal se encuentran R1 y R2?
Justificar adecuadamente todas las respuestas.

d. Utilizando F, llevar R a 3NF con join sin pérdida y preservación de dependencias.


e. Llevar la descomposición de la parte d. a BCNF con join sin pérdida. Indicar si se pierden
dependencias funcionales y cuales.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 4 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

Ejercicio 12

Se quiere modelar una base de datos de información histórico-política e histórico-administrativa de las


calles de una ciudad, así como información sobre los hospitales y canchas de fútbol sobre las mismas.
La información histórico-política de interés se refiera al año en que fue inaugurada la calle así como el
nombre del intendente en ejercicio.

La información histórico- administrativa que se desea mantener es la identificación del plano de


construcción de la calle en cuestión, así como la empresa constructora que estuvo a cargo del diseño de
dicho plano. El plano de construcción de la calle consiste del diseño de la misma y el identificador del
plano es una referencia que se utiliza a fin de ubicarlo en el archivo de planos que mantiene la
intendencia. Desde ahora al plano de construcción lo llamaremos simplemente plano de la calle. Se
sabe que una calle tiene tanto un número de calle como un nombre y que cada uno identifica a la calle.
El número de calle determina en forma única tanto el nombre de la calle como el identificador del plano
de la calle y la empresa constructora.

A su vez el número de la calle y la identificación del plano de la calle y la empresa constructora son
únicos dado el nombre de la calle. El nombre de la calle fue elegido durante el ejercicio de un
intendente, es decir que el nombre del intendente queda determinado por el nombre de la calle. Dado el
nombre y el número de la calle y el nombre del intendente queda determinado el año de inauguración de
la calle.

Se sabe que una identificación del plano de una calle puede describir a distintas calles, pero un plano es
diseñado por una única empresa constructora. Las mismas empresas que se encargaron de diseñar los
planos de las calles, construyeron hospitales y canchas de fútbol. En la construcción de un hospital ó de
una cancha de fútbol designa un único ingeniero responsable. A su vez dichos ingenieros trabajan en
una única empresa constructora.

a. Deducir las dependencias funcionales que se cumplen, justificando a partir de la letra.


Se sugieren los siguientes nombres para los atributos:
(NC) Nombre Calle (EC) Empresa Constructora
(NRO) Número Calle (HO) Hospital
(IP) Identificación Plano (CF) Cancha Fútbol
(NI) Nombre Intendente (ING) Ingeniero
(AI) Año de inauguración de la calle

b. Hallar todas las claves. Justificar la respuesta.


c. Hallar un cubrimiento minimal. Justificar la respuesta.
d. Llevar a 3NF con join sin pérdida y preservando dependencias. Indicar las dependencias
funcionales que se proyectan en cada esquema y las claves de cada uno de éstos.
e. Llevar a BCNF con join sin pérdida. Indicar las dependencias funcionales que se proyectan en
cada uno de éstos. Indicar si se perdieron dependencias funcionales y cuales.

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

. ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Página 5 de 5
Tecnólogo en Informática – Base de Datos 1 – Práctico

Solución Práctico 6 – Diseño Relacional

Ejercicio 1:

a.

Iteramos en las dependencias funcionales hasta que no existan cambios en la tabla


planteada.
En este punto, debido a que se obtiene al menos una tupla toda compuesta por símbolos a's ,
podemos afirmar que la descomposición tiene jsp.

Ejercicio 2:

a. = { (ABC), (CDG), (BDE) }


Debemos proyectar las dependencias de F+ sobre cada uno de los subesquemas formados.
Para ellose deben tomar estas dependencias, y llevar a cada F Ri aquellas de la forma XY,
donde X Y esta incluido entre los atributos de Ri. En este caso , las proyecciones
obtenidas son:
R1(A,B,C) { ABC }
R2(C,D,G) { C DG }
R3(B,D,E) { BD E }
Se debe comprobar ahora si preserva o no las dependencias, esto es
( i=1..nRi(F) )+ = F+ i=1..nRi(F) = { ABC , C DG , BD E } = FP
Se verifica entonces si D (AB)+Fp y G (BC)+Fp
(AB)+Fp = { A,B,C,D,E,G }
(BC)+Fp = { B,C,D,E,G }
Con las clausuras de ambos conjuntos coinciden , ya que el resto de las dependencias están
en ambos. Por lo tanto puede afirmarse que ambos conjuntos de dependencias funcionales
sonequivalentes, con lo que las dependencias se preservan.

b. = { (ADE), (ABC), (ADG) }


Las proyecciones obtenidas son:
R1(A,D,E) { ADE }
R2(A,B,C) { ABC }
R3(A,D,G) { A DG }
i=1..n Ri(F) = { ADE , A BC , ADG } = FP F ?
Verifico si C DG FP+
C+Fp = { C } Con lo que no se conservan las dependencias de F al proyectar. (no es posible
obtener C DG en FP+)
c. = { (ABDE), (BCG), (CDG) }
R1(A,B,D,E) { A BDE , BD E }
R2(B,C,G) { BC G, C G }
R3(C,D,G) { C DG }
i=1..nRi(F) = {ABDE , BDE, BC G, C G, C DG } = FP F ?
Verifico si AC FP+
A+Fp = { A,B,D,E }
Con lo que no se conservan las dependencias de F al proyectar. (no es posible obtener
AC en FP+)

Ejercicio 7:

a. = { (ABC), (CDG), (BDE) }


R1(ABC) {ABC} Clave: (A) R1 esta en BCNF.
R2(CDG) {C DG} Clave: (C) R2 esta en BCNF.
R3(BDG) {BDE} Clave: (BD) R3 esta en BCNF.
esta en BCNF.

b. = { (ADE), (ABC), (ADG) }


R1(ADE) {ADE} Clave: (A) R1 esta en BCNF.
R2(ABC) {ABC} Clave: (A) R2 esta en BCNF.
R3(ADG) {A DG} Clave: (A) R3 esta en BCNF.
esta en BCNF.

c. = { (ABDE), (BCG), (CDG) }


R1(ABDE) {ABDE, BDE} Clave: (A) BDE, BD no es superclave y E no es
primo por lo que viola 3NF. R1 esta en 2NF pues no es una dependencia parcial.
R2(BCG) {C G} Clave: (BC)C G dependencia parcial R2 esta en1NF.
esta en 1NF.

Ejercicio 10:

a.B y H pertenecen a toda clave, ya que no están a la derecha de ninguna dependencia


funcional.
Analizamos la clausura de este conjunto de atributos , a fin de determinar que se obtiene a
partir de ellos, y no debe incluirse el las claves de R.
(BH)+ = { B, H } (BH) no es clave.
Busco entonces claves con 3 atributos:
(BHA)+ = { B,H,A,C,E,D,G } (BHA) es clave
(BHC)+ = { B,H,C,A,E,D,G } (BHC) es clave
(BHD)+ = { B,H,D,E,G } (BHD) no es clave
(BHE)+ = { B,H,E,G } (BHE) no es clave
(BHG)+ = { B,H,G } (BHG) no es clave
Busco claves con 4 atributos:
(BHDE)+ = { B,H,D,E,G } (BHDE) no es clave
(BHDG)+ = { B,H,D,G,E } (BHDG) no es clave
(BHEG)+ = { B,H,E,G } (BHEG) no es clave
Busco claves con 5 atributos:
(BHDEG)+ = { B,H,D,E,G } debido a que (BHDE)+ = { B,H,D,E,G } (BHDE) no es
clave.

Se deduce entonces que las claves son (BHA) y (BHC)

b. 1. Primer paso, llevar todas las dependencias funcionales a la forma X A, donde A es
un solo atributo.
F1 = { ABC, ABE, AB D, C A, D E, EHG }
2. Segundo paso, eliminar atributos redundantes a la izquierda.
(A)+ = {A}B no es redundante en AB C, AB E y AB D
(B) + = {B}A no es redundante en ABC, AB E y AB D
(E) + = {E}H no es redundante en EH G
(H) + = {H}E no es redundante en EH G
F2 = F1
3. Tercer paso, eliminación de dependencias redundantes
F' = F2 { AB C }
(AB)+F, = {A,B,E,D} AB C no es una dependencia redundante en F2
F' = F2 { AB E }
(AB)+F, = {A,B,C,E,D} ABE es una dependencia redundante en F2
F3 = F'
F' = F3 { AB D }
(AB)+F, = {A,B,C} ABD no es una dependencia redundante en F3
F' = F3 { C A }
(C)+F, = {C} C A no es una dependencia redundante en F3
F' = F3 { DE }
(D)+F, = {D} D E no es una dependencia redundante en F3
F' = F3 { EH G }
(EH)+F, = {E,H} EHG no es una dependencia redundante en F3
Se concluye entonces que
Fminimal = F3 = { ABC, AB D, C A, DE, EH G }

c. Sea la descomposición:
R(A,B,C,D,E,H,G) F = { AB CED, C , D, EHG}
R1(A,B,D,E) FR1 = { AB D, D E }
R2(A,B,C,H,G) FR2 = { AB C, C A }
1. ¿ Es una descomposición con join sin pérdida ?
R1 R2 = (AB), R1 R2 = (DE) y R2 R1 = (CHG)
ABDE F+ La descomposición es con join sin pérdida.
2. ¿ Preserva las dependencias ?
R1(F) = FR1 = { ABD, DE }
R2(F) = FR2 = { ABC, C A }
K = { AB D, DE } { AB C, C A }
Conserva las dependencias?, considero la dependencia EH G.
(EH)+K = { E,H }
por lo que al no estar G en el resultado de la clausura, no se conservan las dependencias.
3. ¿ En qué forma normal se encuentran R1 y R2 ?
R1(A,B,D,E), (AB) única clave.
DE, D no superclave y E no primo viola 3NFR1 está en 2NF pues no es
dependencia parcial
R2(A,B,C,H,G), { (ABHG) ,(CBHG) } son claves
ABC , donde (AB) no es superclave viola BCNF. C primo y en C A A primo
R2 está en 3NF
d.
1. Fminimal = F3 = { ABC, AB D, C A, DE, EH G }
2. Se juntan en un único esquema relación todas las dependencias de la forma XAi, para
formar R(X,A1,A2,...,An)
Obtenemos: { R1(A,B,C,D) , R2(C,A) , R3(D,E) , R4(E,H,G) }
3. Se colocan todos los atributos que no se colocaron antes, en un único esquema de
relación.
No se da en este caso. Podemos simplificar la descomposición, quitando los subesquemas
incluidos dentreo de otros.
Obtenemos: { R1(A,B,C,D) , R2(D,E) , R3(E,H,G) }
4. Si ninguno de los subesquemas contiene una clave de R, se agrega un esquema relación
mas que contenga los atributos que forman una clave de R.
Se agrega un esquema con la clave de R,
R5(B,H,A)
Se obtiene entonces:
R(A,B,C,D,E,H,G) F = { AB CED, C , D, EHG}
R1(A,B,C,D) FR1 = { AB CD, C }
R2(D,E) FR2 = { D }
R3(E,G,H) FR3 = { EHG}
R4(A,B,H) FR4 = { }
3NF = { (ABCD), (DE), (EGH), (BHA) }
e. En la descomposición anterior sólo el esquema R1(A,B,C,D) está en 3NF, los demás
están en BCNF.
R1(A,B,C,D) está en 3NF y no en BCNF, ya que la dependencia C A viola BCNF,
porque C noes superclave.
Por lo tanto descompongo está en dos:
R1(A,B,C,D) FR1 = { AB CD, C }, Claves: (AB, BC) , C A viola BCNF
R11(B,C,D) FR11 = { } , Clave: (BCD)
R12(C,A) FR12 = { C A } , Clave: (C)
BCNF = { (BCD), (CA), (DE), (EGH), (BHA) }
Aclaramos que:

Se pierden dependencias, ya que antes de aplicar el algoritmo se disponía de:


R1(A,B,C,D) F1 = { ABC, ABD, C A }
R2(D,E) F3 = { D E }
R3(E,H,G) F4 = { EH G }
R4(B,H,A) F5 = { }
Donde claramente la unión de las proyecciones de las dependencias funcionales, es el
conjunto minimal de partida (Fminimal), por lo que las dependencias se preservan. Sin
embargo, al particionar
R1, se obtiene un:
R11(B,C,D) FR11 = { }
con lo que las dependencias { AB C, ABD } se pierden. (se comprueba a simple vista,
al unir las proyecciones de las dependencias en BCNF, y tratar de deducir AB C de dicho
conjunto).
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Práctico 3
Álgebra Relacional
OBJETIVOS

expresar consultas sobre el modelo relacional, usando álgebra relacional

analizar cómo se construye la consulta o solución usando este lenguaje de consultas

discutir similitudes y diferencias con el cálculo relacional

Ejercicio 1
La siguiente base de datos relacional describe ciertos cursos dictados en una hipotética uni-
versidad:

CURSOS (codigo, nombre, cantInscriptos)


Esta tabla contiene información acerca de los cursos que se ofrecen. De cada curso se co-
noce un código que lo identifica, un nombre y la cantidad de inscriptos.

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.

HORARIOSDICTADO (codigo, docente, horario, salon)


Esta tabla contiene información acerca de los salones y horarios de clase. Para cada do-
cente que dicte clase de un curso en un determinado horario se almacena el salón correspon-
diente.

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 (P REV IAT U RAS) ⊆ Πcodigo (CU RSOS)


ΠcodigoP revia (P REV IAT U RAS) ⊆ Πcodigo (CU RSOS)
Πcodigo (ASIGN ADOS) ⊆ Πcodigo (CU RSOS)
Πdocente (ASIGN ADOS) ⊆ Πnombre (DOCEN T ES)
Πcodigo,docente (HORARIOSDICT ADO) ⊆ Πcodigo,docente (ASIGN ADOS)

a. Resolver las siguientes consultas en álgebra relacional. En caso de que alguna de las con-
sultas no sea expresable, justificar adecuadamente el motivo.
I. Encontrar todos los salones usados por cursos con más de 100 alumnos inscriptos.
II . Encontrar los nombres de los docentes que no están asignados a ningún curso.
III . Encontrar los nombres de todos los cursos asignados a docentes del departamento de
‘Programación’.

Página 1
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

IV . 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).
V. Mostrar los códigos y cantidad de inscriptos de todos los cursos cuya cantidad de
inscriptos sea menor que el promedio.
VI . Encontrar los códigos de todas las previas inmediatamente anteriores al curso con
código ‘1911’.
VII . Mostrar los códigos de todos los cursos que se dictan en algún salón donde se dicta el
curso con código ‘1027’.
VIII . Encontrar los nombres de los docentes que dictan cursos que se dictan en 2 o más
salones.

b. 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 (HORARIOSDICT ADO) − RESV III

donde RESV III es el resultado de la consulta ?? de la parte anterior.


Discutir si la solución planteada resuelve correctamente la consulta. En caso de que sea
correcta demostrarlo y en caso contrario dar un contraejemplo, indicar que resuelve la
expresión planteada y dar una solución correcta a la consulta original.

Ejercicio 2 (*)
Se cuenta con una base de datos relacional con información sobre los campeonatos mundia-
les de fútbol que incluye el año y lugar en que se realizaron y los equipos que participaron.
Para cada equipo se almacena su 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 campeo-
nato, sin necesidad del lugar.

ΠnomEquipo (P ART ICIP A) ⊆ ΠnomEquipo (EQU IP O)


ΠnomEquipo1 (P ART IDO) ⊆ ΠnomEquipo (EQU IP O)
ΠnomEquipo2 (P ART IDO) ⊆ ΠnomEquipo (EQU IP O)
Πanio (P ART IDO) ⊆ Πanio (CAM P EON AT O)
Πanio (P ART ICIP A) ⊆ Πanio (CAM P EON AT O)

a. Resolver los siguientes requerimientos mediante operaciones del álgebra relacional:


I. ¿Qué equipos de su serie le ganaron a Alemania en el mundial 2010?
II . Listar los directores técnicos de los equipos que ganaron el 14/6/10.
III . ¿Cuántos campeonatos han ganado cada uno de los equipos que perdieron en el cam-
peonato del 2010 con el primero de la serie de Inglaterra?

Página 2
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

b. Dada la siguiente consulta en cálculo relacional de tuplas escribir una consulta en Álgebra
Relacional equivalente:
R = {t.nomEquipo/P ART ICIP A(t) ∧ (∃p)(P ART ICIP A(p) ∧ p.nomEquipo = U ruguay
∧ p.anio = t.anio ∧
p.serie = t.serie ∧ p.anio = 2010
)
}

c. Se pretende resolver la siguiente consulta:


“Obtener el nombre del equipo con la mayor cantidad de campeonatos ganados”.
Para esto se propone la siguiente solución:
A = ρnomEquipo,cantCampGanados→nombre,campeonato EQU IP O
RES = ΠnomEquipo (EQU IP O ./ A)
nomEquipo<>nombre∧
cantCampGanados>=campeonatos

Discutir la correctitud de la solución propuesta.


Ejercicio 3 (*)
Considere la realidad descripta en el ejercicio 1 del práctico 2, donde se utiliza la siguiente
base de datos:

Proveedores(#prov, nomProv, categoria, ciudadProv)


Contiene información referente a Proveedores

Productos (#prod, nomProd, color, peso, ciudadProd)


Contiene información referente a las Productos

Proyectos (#proy, nomProy, ciudadProy)


Contiene información referente a los Proyectos

Proveen (#prov, #prod, #proy, cantidad)


Contiene la información de los Proveedores que proveen productos a proyectos (canti-
dad).

En esta base de datos no hay tablas vacías y se cumplen las siguientes restricciones de
inclusión:
{t.#prov / P roveen(t)} ⊆ {t.#prov / P roveedores(t)}
{t.#prod / P roveen(t)} ⊆ {t.#prod / P roductos(t)}
{t.#proy / P roveen(t)} ⊆ {t.#proy / P royectos(t)}

Resolver las siguientes consultas en álgebra relacional:

a. Obtener los números de los proveedores que proveen al proyecto número 1 y al proyecto
número 2. (Deben proveer a los dos proyectos).

b. Obtener los números de proveedores que proveen al proyecto número 1 de algún producto
de color “rojo”.

c. Obtener los números de los proveedores que proveen productos de color “rojo” a algún
proyecto de “Mercedes” o alguno de “Dolores”.

Página 3
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

d. Dar las parejas de ciudades, tales que un proveedor de la primera provee a un proyecto de
la segunda.
e. Dar todas las ternas (ciudad, #prod, ciudad), donde un proveedor de la primera ciudad
provee con el producto especificado 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 producto tales que no hay otro producto 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 el mismo producto a todos los proyectos.
i. Dar los nombres de los proveedores que sólo proveen un producto y que proveen dicho
producto al menos a un proyecto.
Ejercicio 4
Considere la realidad descripta en el ejercicio 2 del práctico 2, donde se utiliza la siguiente
base de datos de una compañía aérea:

VUELOS (nroVuelo, ciudadOrigen, ciudadDestino, horaSal, horaLleg, distancia)


Corresponde con las frecuencias de los vuelos que tiene la compañía.

VIAJES (nroVuelo, fecha, nroAvion, nroPiloto)


Corresponde con los vuelos que efectivamente se realizan y la asignación del avión y el
piloto al mismo.

AVION (nroAvion, tipoAvion, horasVuelo)


Corresponde a los datos de cada avión de la compañía.

PILOTOS (nroPiloto, cantVuelos)


Corresponde a los datos de cada uno de los pilotos que trabaja en la compañía.

En esta base de datos se cumplen las siguientes restricciones de inclusión y no hay tablas
vacías:

ΠnroV uelo (V IAJES) ⊆ ΠnroV uelo (V U ELOS)


ΠnroAvion (V IAJES) ⊆ ΠnroAvion (AV ION )
ΠnroP iloto (V IAJES) ⊆ ΠnroP iloto (P ILOT OS)
Resolver en álgebra relacional las siguientes consultas:

a. Número de los pilotos con menos de 10 vuelos que pilotearon a todos los aviones del tipo
“Boeing 737” de la compañía.
b. Número de los pilotos con la máxima cantidad de vuelos.
c. Número de los pilotos con más de 30 vuelos que pilotearon sólo aviones de tipo “DC-10”.
d. Números de los pilotos que solo realizaron vuelos que tienen a “Montevideo” como ciudad
de origen o ciudad de destino.
e. Número de vuelo de los vuelos con distancia mayor a 7000 km que nunca fueron realiza-
dos por pilotos con 20 vuelos o más.

Página 4
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

f. Parejas número de piloto, número de avión tal que todos los vuelos realizados por el piloto
fueron en ese avión.

Ejercicio 5
Considere la realidad descripta en el ejercicio 3 del práctico 2, donde se utiliza la siguiente
base de datos de locales de maquinitas:

LOCALES ( #local, dirección, cantidadMaq, promFichas, valorFicha )


Los datos de cada local son: su identificación (#local), dirección, la cantidad de máquinas
que posee, el promedio diario de fichas que vende y el valor de la ficha.
JUEGOS ( #juego, origen, tipo)
Los datos de cada juego son: su identificación (#juego), su origen y su tipo (ej.: deportivo,
bélicos, etc.).
MAQUINAS ( #maquina, #juego, #local )
Los datos sobre cada máquina son: su identificación (#maquina), la identificación del
juego que tiene y la identificación del local en el que se encuentra.
En esta base de datos se cumplen las siguientes restricciones de inclusión y no hay tablas
vacías:

Π#local (M AQU IN AS) ⊆ Π#local (LOCALES)


Π#juego (M AQU IN AS) ⊆ Π#juego (JU EGOS)
Con la información almacenada en los esquemas relacionales anteriores:

a. Resolver mediante operaciones de Álgebra Relacional las siguientes consultas:


I. 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.
II . 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.
III . Identificación de los locales que tengan máximo número de máquinas.
IV . Identificación de los locales que tienen exactamente los mismos juegos y distinto pro-
medio de fichas que el local con #local 28.

b. Discutir cuál es el resultado de la siguiente consulta:


RES = A − B
donde
A = Πdireccion (LOCALES ∗ (M AQU IN AS ∗ (σtipo=Aventura (JU EGOS))))
B = Πdireccion (LOCALES ∗ (M AQU IN AS ∗ (σtipo<>Aventura (JU EGOS))))

Página 5
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

c. Dada la siguiente consulta en cálculo relacional dar una expresión en álgebra relacional
equivalente:
R = {t.#juego/JU EGOS(j) ∧ (∀l)(LOCALES(l) ∧ l.valorF icha = 20
→ (∃m)(M AQU IN AS(m) ∧ m.#juego = t.#juego ∧
m.#local = l.#local
)
)
}

d. Dada la siguiente consulta en álgebra relacional dar una expresión en cálculo relacional
de tuplas equivalente:
RES = A − B
A = Π#local (σtipo=Accion (M AQU IN AS ∗ JU EGOS))
B = Π#local (σtipo=Aventura (M AQU IN AS ∗ JU EGOS))

Ejercicio 6
Considere la realidad descripta en el ejercicio 4 del práctico 2, donde se utiliza la siguiente
base de datos de una compañía de construcciones:

OBRAS (nroObra, director, tipoObra, fechaComienzo)

TRABAJA (nroObrero, nroObra, fecha, codTarea)

PERSONAL (nroObrero, nomObrero, especialidad)

TAREAS (codTarea, descripción, duración)

En esta base de datos se cumplen las siguientes restricciones de inclusión y no hay tablas
vacías:
ΠnroObrero (T RABAJA) ⊆ ΠnroObrero (P ERSON AL)
ΠnroObra (T RABAJA) ⊆ ΠnroObra (OBRAS)
ΠcodT area (T RABAJA) ⊆ ΠcodT area (T AREAS)
Resolver las siguientes consultas en álgebra relacional:

a. Dar las ternas (nroObra, codTarea, nroObrero) tales que la tarea corresponde a la obra y
el obrero trabajó en la obra pero no realizó (en dicha obra) la tarea mencionada.

b. Dar los nombres de los obreros que trabajaron en todas las obras que tienen como director
a “AL GUT”.

c. Dar las parejas de números de obreros que trabajan en la misma obra y en la misma tarea.
No debe pertenecer a la solución un obrero con si mismo.

d. Dar las parejas de números de obreros que siempre realizaron las mismas tareas en todas
las obras donde trabajaron juntos.

e. Nombre de los obreros de especialidad “CARPINTERIA” que solo realizaron tareas con
duración menor a 5 en todas las obras de tipo “RECONSTRUCCIÓN”

Página 6
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Ejercicio 7 (*)
Considere la realidad descripta en el ejercicio 7 del práctico 2, donde se utiliza la siguiente
base de datos de una empresa de pinturas:

Colores (idC, descripcion, tipo, brillo)


Representa la información de cada uno de los colores, donde descripcion es el nombre
asignado al color, tipo indica si el color es puro (provisto por los fabricantes, sin necesidad
de realizar mezclas) o mezcla (ese color no viene preparado de fábrica, hay que realizar la
mezcla), brillo indica si el color es brillante o mate. El atributo descripción también identifica
al color.
Mezclas (idC, idCPuro, proporcion)
Representa la información de los colores que se obtienen como combinación de colores
puros. IdC es el identificador del color mezcla, e idCPuro y proporción indican la proporcion
del color puro para realizar la mezcla.

Productos (IdP, descripcion, marca, tamaño)


Representa la información de los productos (latas de pintura). Descripcion es el nombre
del producto, marca es la marca del producto y tamaño es la cantidad de litros de la lata.
Se consideran productos distintos los que tienen diferentes tamaños, pero no los que tienen
diferentes colores, es decir, que IdP no indica el color del producto.
ColorProd (idP, idC)
Representa la información de los colores puros en que viene cada producto. IdP es el
identificador del producto, e idC es el identificador del color. Sólo se venden latas de colores
puros.
Solicitudes (idSol, fecha, sucursal, idC, tamaño)
Representa las solicitudes de mezclas realizadas por las diferentes sucursales. Sólo se
solicitan mezclas, no colores puros. IdSol es un identificador, fecha es la fecha en que se
realizó la solicitud, y sucursal la sucursal de la empresa desde la que se hizo la misma. IdC es
el identificador de color y tamaño es la cantidad de litros de la mezcla pedida.
NOTA: NO existen tablas vacías.

a. Dar relaciones entre expresiones algebraicas que expresen las restricciones indicadas en la
descripción de las tablas (por ejemplo: que los colores que participan en las mezclas son
colores puros.)

b. Resolver las siguientes consultas, en caso de no ser posible justifique el motivo:


I. Dar las marcas, que entre sus productos, tienen todos los colores necesarios para
realizar todas las mezclas.
II . Dar el color puro utilizado en más de 3 mezclas (Observación: puede ser más de uno).
III . Dar la lista de mezclas mate solicitadas más de 5 veces, y la cantidad total de litros
solicitados de cada una.
IV . Dar la lista de colores que pueden prepararse mezclando, únicamente, colores del
producto P13.

Página 7
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Práctico 5
Diseño Relacional (Dependencias Funcionales)
OBJETIVOS Trabajar sobre los siguientes conceptos fundamentales del diseño relacional:

Dependencias funcionales

Axiomas sobre dependencias funcionales

Concepto de clave y superclave

Equivalencia entre conjuntos de dependencia funcionales

Cubrimiento minimal de un conjunto de dependencias funcionales

Identificación de dependencias funcionales

Aclaración:

A, B, C, D, E, G, H, I son atributos atómicos


W, X, Y, Z son conjuntos de atributos atómicos
R es un esquema relación
r es una instancia

Ejercicio 1
Sea R(A,B,C,D,E) con F = { A → B, B → D, C → E, E → B }.

¿Cuáles de las siguientes instancias de R satisfacen F?


1. 2. 3. 4.
A B C D E A B C D E A B C D E A B C D E
a1 b1 c1 d1 e1 a1 b1 c1 d1 e1 a1 b1 c1 d1 e1 a1 b1 c1 d1 e1
a2 b2 c2 d1 e1 a2 b2 c2 d1 e2 a2 b1 c1 d2 e1 a1 b1 c2 d1 e1

Ejercicio 2 (*)
Sean las siguientes definiciones alternativas de dependencia funcional.
Sea R(X, Y, Z), donde X, Y, Z son conjuntos no vacíos de atributos.
Indicar cuales son correctas y cuales no. Justifique su respuesta.

X → Y se cumple en R si y solo si:

a. ∀r de R se cumple: ∀t,u ∈ r, si t[X] = u[X], entonces t[Y] = u[Y].

b. ∀r de R se cumple: ¬ (∃ t, u ∈ r tal que t[X] = u[X] y t[Y] 6= u[Y]).

c. ∀r de R, ∀ t, u ∈ r, t[XY] = u[XY].

d. ∀r de R, no se repiten los valores de X en r.

e. ∀r de R, cada valor de X tiene un único valor asociado de Y.

Página 1
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

f. ∀r de R, hay una correspondencia biunívoca (biyectiva) entre valores de X y de Y.

g. ∀r de R, (∀t,u ∈ r , si t y u difieren en Y, deben diferir en X).

h. ∀r de R, (∀t,u ∈ r , si t y u coinciden en Y, deben coincidir en X).

Ejercicio 3 (*)
Se cuenta con una tabla con esquema R(A, B, C, D) y la siguiente consulta:

select count(distinct C)
from R
where exists (
select A
from R Aux
where Aux.A = R.A and Aux.B <> R.B
)

Si se asume que el sistema de bases de datos puede controlar todas las restricciones nece-
sarias, indicar cuales de las siguientes afirmaciones son verdaderas o falsas. Fundamentar las
respuestas.

a. Si en una instancia r determinada de R se cumple que el resultado de la consulta anterior


es 0, entonces se puede afirmar que se cumple la dependencia A → B.

b. Si se cumple A → C, se puede afirmar que el resultado de la consulta anterior es menor o


igual que el resultado de la siguiente consulta?

select count(distinct A)
from R

Ejercicio 4
Sea el siguiente esquema de base de datos, donde se cumplen las dependencias funcionales
indicadas entre llaves:

FABS (#f, nombre, dirección) { #f → nombre,dirección }


PROD (#p, descripción) { #p → descripción }
VENDE (#f, #p, precio) { #f, #p → precio}

Considere la siguiente consulta:

select count(*)
from FABS, VENDE
where FABS.#f=VENDE.#f and #f=4;

a. Sabiendo que no hay tuplas repetidas en las tablas y que el resultado de la consulta ante-
rior es 10. ¿Cuál es el resultado de las siguientes consultas?
I. select count(*)
from FABS where #f=4;

Página 2
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

II .
select #f, count(*)
from FABS
group by #f
having count(*) > 1;
III .
select #f,#p,sum(precio)
from VENDE
group by #f,#p
having count(*) > 1;

b. ¿Qué consulta debe realizarse para saber si no se cumple la dependencia funcional


#p → descripción en PROD y cómo debe interpretarse?

c. Sabiendo que el resultado de la consulta:

select nombre
from FABS, VENDE
where FABS.#f = VENDE.#f and #p = 10;

es:

nombre
Juan
Juan

Dar el resultado de:

select nombre, count(*)


from FABS
where nombre="Juan"
group by nombre
having count(*) < 2;

d. ¿Cuál es el resultado de la consulta de la parte c si las tuplas (f1 p1 r1) y (f1 p1 r2) son
válidas en VENDE?
Ejercicio 5
Indicar cuales de las siguientes derivaciones de dependencias funcionales son válidas de-
mostrando mediante las reglas de inferencia para dependencias funcionales o usando un
contraejemplo.

a. { X →Y, Z → Y } ` XZ → Y

b. { XZ → Y } ` X → Y

c. { XZ → Y, X → Z } ` X → Y

d. { Z → W , X →Y } ` XZ →YW

Página 3
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

e. { XY → Z, Z → X } ` Z → Y

f. { X → Y, Y → Z } ` X → YZ

g. { X → Y, W → Z, W ⊆ Y } ` X → Z

h. { XY →Z, Y →W } ` XW →Z

Ejercicio 6
Sea R(X, Y, Z) donde X, Y, Z son conjuntos no vacíos de atributos y F un conjunto de depen-
dencias funcionales que se cumplen en R. Demostrar o dar un contraejemplo de los siguientes
enunciados.
X+ U Y+ = (XY)+
X+ U Y+ ⊆ (XY) +
(XY) + ⊆ X+ U Y+

Ejercicio 7 (*)
Sea F = {AB → C, C → D, B → C, C → E, HB → D}, determinar cuales de las siguientes
dependencias funcionales están en F + . Justifique su respuesta.

a. B → D

b. E → D

c. C → DE

d. A → C

e. HA → CD

f. CD → E

g. A → D

Ejercicio 8 (*)
Sea R(A B C D E G) y F = { AB → D, CD → G, E → A, A → C, BG → C, D → A }

a. Calcular las siguientes clausuras:


I. (AD)+
II . (D)+
III . (BC)+
IV . (EB)+
V. (B)+
VI . (EBC)+

b. ¿Alguno de los conjuntos anteriores es superclave?

c. ¿Alguno es clave?

d. Hallar todas las claves de R según F.

Página 4
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Ejercicio 9 (*)
Considere un esquema relacional R donde X es un conjunto de atributos de R, A un atributo
de R y existe un conjunto de dependencias funcionales F que se cumplen en R. Demostrar o
dar un contraejemplo de los siguientes enunciados:

a. Sea R un esquema relación y F un conjunto de dependencias funcionales que se cumplen


en R, tal que X ⊆ R, A ∈ R y A 6∈ X, X → A ∈ F+ , entonces existe Y → Z ∈ F con A ∈ Z.

b. Si un atributo A de R es tal que no aparece en ninguna dependencia funcional de F,


entonces A está en toda clave de R según F.
Generalizar para el caso de un conjunto de atributos X que no aparece en ninguna depen-
dencia funcional de F.

c. Si un atributo A de R es tal que no está a la derecha de ninguna dependencia funcional


de F, entonces A está en toda clave de R según F.
Generalizar para el caso de un conjunto de atributos X que no aparece a la derecha de
ninguna dependencia funcional de F.

d. Si existe X tal que ninguno de los atributos de X está a la derecha de ninguna dependencia
funcional de F, entonces X es clave de R según F y es única.

e. Si existe X tal que ninguno de los atributos de X está a la derecha de ninguna dependencia
funcional de F y X es superclave de R según F, entonces X es clave de R según F y es única.

f. Si existe X tal que todos los atributos de X aparecen a la izquierda de alguna dependencia
funcional de F y X es superclave de R según F, entonces hay una sola clave de R según F y
es X.

g. Si el atributo A solo aparece del lado derecho de las dependencias funcionales, entonces
no aparece en ninguna clave.

Ejercicio 10
Para cada uno de los siguientes esquemas relación y sus correspondientes conjuntos de de-
pendencias funcionales, hallar todas las claves. Justificar la respuesta.

a. R1 (A, B, C, D, E, G, H) y F1 = {AB → CDE, C → A, D → E, H → E, HE → G }

b. R2 (A, B, C, D, E, G) y F2 = { B → CD, ACD → B, C → AE }

c. R3 (A,B,C,D,E,G,H,I) y F3 = {A → B, B → C, E → I, EGC → B, G → H , B → A }.

Ejercicio 11 (*)
Sea R(A,B,C,D,E) y F = { AB → C, C → DE, E → C }.

Decir cuáles de los siguientes conjuntos de dependencia funcionales son equivalentes a F.


En caso de no serlo dar relaciones de R que ejemplifiquen este hecho.

a. F1 = {AB → CDE, E → CD, C → D}

b. F2 = {AB → D, D → C,C → DE, E → C}

Página 5
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

c. F3 = {AB → CDE, C →D, C → E, E → C, E → D}

d. F4 = {A → C, B → C,C → DE, E → C}

Ejercicio 12 (*)
Hallar cubrimientos minimales de los siguientes conjuntos:

a. F1 = {A →B, B →C, C →D, D →E, E → A, A → C, C →E, E →B, B→D, D →A}.

b. F2 ={A →B, AE →D, B →C, DH →C, C →D, CG →B, D →A, BI →A}.

Ejercicio 13
Se define como cubrimiento superminimal de F al cubrimiento minimal de F que sólo tie-
ne un atributo en la parte izquierda de cada una de las dependencias funcionales que lo compone.

Demostrar o dar un contraejemplo de que todo conjunto de dependencias funcionales


tiene un cubrimiento superminimal asociado.

Ejercicio 14
Se desea llevar el control del consumo de agua de una zona balnearia. Cada predio está
identificado, tanto por el número de padrón como por el número de manzana y solar. En
cada solar, pueden existir uno o más contadores de los que se conoce un número, y un tipo
(A, B, C). Un contador nunca es compartido, es decir, no pertenece a más de un predio. Para
cada contador y padrón, se tiene un número de contrato y para cada contrato se conoce la
cédula de identidad de quien realiza el contrato con la empresa. Además cada contrato es
para un único contador. Para cada contador, se conoce los metros cúbicos consumidos en el
mes (de un año). Tenga en cuenta que se mantiene información de varios años.
Para el esquema relación R (P, M, S, C, T, N, I, R, A, E), identificar todas las dependencias
funcionales que se cumplen en la realidad descripta, siendo cada atributo, los que se presen-
tan a continuación.

P 7→ número de padrón M 7→ número de manzana S 7→ solar


C 7→ número de contador T 7→ tipo de contador N 7→ número de contrato
I 7→ cédula identidad R 7→ metros cúbicos consumidos A 7→ año
E 7→ mes

Ejercicio 15 (*)
Una inmobiliaria desea construir una base de datos con las casas que tiene para alquilar, los
clientes y los propietarios. De cada casa se conoce un código que la identifica, su dirección,
la cédula de su propietario, la cantidad de dormitorios, la cantidad de baños y el alquiler
mensual. De los clientes se conoce la cédula de identidad, su nombre, su ultima dirección
conocida, su ultimo teléfono conocido (uno solo) y la cédula del propietario que le sale de
garantía (uno solo). De los propietarios se conoce su cédula, su dirección y su teléfono (úni-
co). Para cada casa alquilada se establece un contrato que tiene un número que lo identifica
y registra la cédula del cliente, el código de la propiedad y la fecha de inicio y de fin del
contrato. En una fecha de inicio de un contrato, no se puede alquilar una misma casa a más
de un cliente.

Identificar todas las dependencias funcionales que se cumplen en la realidad descripta.

Página 6
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Práctico 6
Diseño Relacional - Descomposiciones y Formas
Normales
Contenido:
Cubrimiento minimal.
Descomposición con join sin pérdida (jsp).
Concepto de clave y superclave.
Descomposición preservando dependencias funcionales.
Formas normales para esquemas relación (definición y algoritmos)
Identificación de dependencias funcionales.

Aclaración:
A, B, C, D, E, G, H, I son considerados atributos atómicos.
W, X, Y, Z son considerados conjuntos de atributos atómicos.
R es considerado un esquema relación.
r es considerado una instancia.

Ejercicio 1 (*)
Sea el esquema relación R(A,B,C,D,E,G) y ρ = { (AB),(CDE), (EG), (BC) } una descomposi-
ción de R. Indicar en cuáles de los siguientes conjuntos de dfs, la descomposición ρ tiene join
sin pérdida. Si no tiene jsp dar relaciones que ejemplifiquen el hecho.
a. F = {A → CB → D, E → G, C → E, D → G, G → C, CD → A}
b. F = {B → D, E → G, C → E, D → G, G → C, GE → D, CD → A}

Ejercicio 2

a. Probar que la relación R(A,B,C) es igual al join de sus proyecciones R1 (A,B), R2 (A,C) sii
la df A→B se cumple en R.
b. Sean R un esquema relación, F conjunto de dfs sobre R y X una clave de R según F. Sea ρ
una descomposición de R tal que existe Ri ∈ ρ y X ⊆ Ri . Demostrar o dar contraejemplo
de que ρ tiene jsp respecto a F.

Ejercicio 3 (*)
Sea el esquema relación R(A,B,C,D,E,G) y F = {A → BC, C → DG, BD → E, AB →
D, BC → G} el conjunto de dependencias funcionales sobre R. Sean las siguientes descom-
posiciones de R:
ρ1 = { (ABC), (CDG), (BDE) }
ρ2 = { (ADE), (ABC), (ADG) }
ρ3 = { (ABCDG), (BE), (DE) }
Para cada una de las descomposiciones anteriores:

Página 1
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

a. Determinar que dependencias se proyectan en cada esquema.

b. Determinar si preservan las dependencias funcionales. En caso negativo dar un ejemplo


de problema de inconsistencia en los datos que podría ocurrir.

Ejercicio 4
Dado un esquema relación R y F un conjunto de dfs sobre R, demostrar o dar contraejemplo
para las siguientes afirmaciones:

a. Si una descomposición de R tiene join sin pérdida respecto a F, entonces preserva las
dependencias funcionales de F.

b. Si una descomposición de R preserva las dependencias funcionales de F, entonces tiene


join sin pérdida con respecto a F.

Ejercicio 5
Sean R un esquema relación, F un conjunto de dfs sobre R y ρ una descomposición de R
obtenida de la siguiente forma:

Para cada df X →Y en F, se genera un esquema (XY) en ρ.

a. Demostrar o dar contraejemplo de que ρ preserva las dependencias de F.

b. Demostrar o dar contraejemplo de que ρ tiene join sin pérdida respecto F.

Ejercicio 6
Sean R un esquema relación, F un conjunto de dependencias funcionales sobre R y ρ una
descomposición de R. Indicar cuáles de las siguientes afirmaciones son correctas. Justificar la
respuesta.

a. La descomposición ρ está en una determinada forma normal si algún esquema de ρ está


en esa forma normal.

b. La descomposición ρ está en una determinada forma normal si a lo sumo hay un esquema


de ρ que no está en esa forma normal.

c. La descomposición ρ está en una determinada forma normal si la mayoría simple (la mitad
+ 1) de los esquemas de ρ está en esa forma normal.

d. R está en 3NF según F si y solo si R esta en BCNF según F.

e. Si en F no hay dfs transitivas se cumple que:

R esta en 3NF según F si y solo si R esta en 2NF según F.

f. Si en F hay dfs parciales entonces ni R ni ρ están en BCNF.

g. Si en F hay dfs cuya parte izquierda no es superclave de R, entonces ρ no está en BCNF.

Página 2
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

h. Si (∀Ri ∈ ρ) se cumple que en cada ΠRi (F ) todas las dfs tienen en su parte izquierda un
conjunto de atributos que son superclave en Ri , entonces ρ está en BCNF.

i. Si se está en las hipótesis anteriores, entonces ρ está en 3NF.

Ejercicio 7 (*)
Dado el esquema relación R(A,B,C,D,E,G,H) y el conjunto de dependencias F sobre R.
F = {AB → CE, B → GH, D → A, H → BD}
Para cada una de las siguientes afirmaciones indicar si son verdaderas o falsas. Justificar todas
las respuestas:

a. (BD) es clave de R según F.

b. Las únicas claves de R según F son B y H.

c. Sea F1 = {AB → C, AB → E, B → G, B → H, D → A, H → B, H → D}. F1 es un


cubrimiento minimal de F

d. R esta en tercera forma normal con respecto a F.

e. ΠR1 F = {D → A} siendo R1 (A,B,D,E)

Ejercicio 8
Sea el esquema relación R (A,B,C,D,E,G,H). F es un conjunto de dependencias funcionales
que se cumplen en R, tales que en todas ellas el lado derecho de la dependencia esta formado
por un único atributo.

Una persona P1 aplica un primer paso del algoritmo visto en el curso que permite obtener
una descomposición de R en BCNF obteniendo la siguiente descomposición:
ρ1 = (R1 (A, B, C), R2 (A, B, D, E, G, H)).
Una persona P2 aplica un primer paso del mismo algoritmo también sobre R obteniendo
la siguiente descomposición:
ρ2 = (R3 (A, D, G), R4 (D, E, A, B, C, H))

a. Sabiendo que todas las claves de R según F son de un único atributo dar una superclave
de R según F que no tenga más de 4 atributos. Justificar su respuesta.

b. Sea r una instancia de R y


r1 = ΠR1 r
r2 = ΠR2 r
r3 = ΠR3 r
r4 = ΠR4 r
Determinar el resultado de la siguiente consulta:
r1 ∗ r2 ∗ r3 ∗ r4 . Justificar su respuesta.

Página 3
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Ejercicio 9 (*)
Sean R(A,B,C,D,E,G) y F = {AB → CD, A → E, B → G, EG → C}

Sea la descomposición:
ρ = {R1, R2, R3, R4} con: R1 (A, B, C, D), R2 (A, E), R3 (B, G), R4 (E, G, C).

a. Probar que ρ tiene join sin pérdida y preserva dfs.

b. Mostrar que ρ está en BCNF según F.

c. Dadas las siguientes instancias de R1, R2, R3, R4 :


R1 r1 R2 r2 R3 r3 R4 r4
A B C D A E B G C E G
a1 b1 c1 d1 a1 e1 b1 g1 c2 e1 g1
I. ¿Son instancias válidas de los esquemas relación anteriores?
II . Analizar posibles problemas.

Ejercicio 10
Considere las siguientes partes:

a. Sea R un esquema relación y F conjunto de dfs sobre R. Demostrar que si en R hay una
única clave X según F y R está en 3NF según F entonces R está en BCNF según F.

b. Demostrar que todo esquema relación R con dos atributos está en BCNF según cualquier
conjunto de dependencias sobre ese esquema.

c. Sea R un esquema relación, F un conjunto de dfs sobre R y ρ una descomposición de R.


Demostrar que si X ⊆ R es clave de R según F entonces es superclave de cada uno de los
esquemas de ρ. Dar un ejemplo de R, F y ρ tal que una clave de R según F es superclave
(no clave) en alguno de los subesquemas de la descomposición y clave en otro.

Ejercicio 11
Sean R un esquema relación y F un conjunto de dfs sobre R.

Para obtener una descomposición de R en BCNF, se aplica el algoritmo visto en el curso. En


cierto momento se detiene el proceso en un paso del algoritmo que no es el final, obteniendo
una descomposición: ρ = {Ri , ..., Rk }.

a. Determinar cuáles de las siguientes afirmaciones son correctas y cuáles no. Justificar la
respuesta.
I. La descomposición ρ es con join sin pérdida respecto a F.
II . La descomposición ρ está en BCNF respecto a F.
III . La descomposición ρ está en 3NF respecto a F.
IV . La descomposición ρ está en 1NF respecto a F.
V. La descomposición ρ preserva las dfs de F.

Página 4
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

b. Idem a., pero suponiendo que el proceso se detiene cuando el algoritmo llega al final.

Ejercicio 12 (*)
Sea R(A,B,C,D) y F conjunto de dfs sobre R con un solo atributo a la derecha.

Sean R1 (A,B) y R2 (B,C,D) obtenidos al aplicar un paso del algoritmo para llegar a BCNF con
join sin pérdida.
Q Q
Supongamos que se tiene una relación r de R tal que: r1 = R1 (r) y r2 = R2 (r) son
relaciones para R1 y R2 .
Decir cual debe ser el resultado de las siguientes consultas (si es que se puede predecir dicho
resultado); sino explicar porque no es posible.

a. select count(*)
from R1,R2
where R1.B = R2.B and not exists
(select *
from R
where R1.A = R.A and R1.B = R.B and R2.C = R.C and R2.D = R.D
)

b. select count(*)
from R1
group by B
having count(*) > 1

c. select count(*)
from R1
group by A
having count(*) > 1

d. select count(*)
from R2
group by B
having count(*) > 1

Página 5
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Ejercicio 13
Sea el siguiente algoritmo para descomponer a 3NF con join sin pérdida.

Entrada:

Esquema relación R
F un conjunto de dependencias funcionales sobre R.

Salida:

Una descomposición de R en 3NF con join sin pérdida según F.

Pseudocodigo

% Se construye una descomposición R tal que en todo momento tiene join


% sin pérdida con respecto a F.

Rho = {R}
Mientras (existe S perteneciente a Rho que no esta en 3NF)
hacer

Sea X -> A la df que viola 3NF


sustituir en Rho, el esquema S por S1 y S2 donde
S1 = (X,A)
S2 = (S -A)

finhacer
finMientras
% Al salir del loop todos los esquemas estarán en 3NF
Devolver(Rho)

a. Mostrar que es correcto.

b. Determinar si asegura la preservación de dfs. Justificar la respuesta

Página 6
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

Ejercicio 14
Sea el esquema relación R(A,B,C,D,E,H,G) con A, B, C, D, E, H y G atributos atómicos y el
conjunto de dependencias funcionales:

F = {AB → CED, C → A, D → E, EH → G}

a. Hallar todas las claves. Justificar la respuesta.

b. Hallar un cubrimiento minimal de F en R. Mostrar los pasos seguidos.

c. Sea la descomposición: R1 (A,B,D,E), R2 (A,B,C,H,G). Decir si:


I. ¿Es una descomposición con join sin pérdida?
II . ¿Preserva las dependencias?
III . ¿En qué forma normal se encuentran R1 y R2 ?

Justificar adecuadamente todas las respuestas.

d. Llevar R a 3NF con join sin pérdida y preservación de dependencias.

e. Llevar la descomposición de la parte d a BCNF con join sin pérdida. Indicar si se pierden
dependencias funcionales y cuales.

Ejercicio 15 (*)
Dado el esquema relación R (A,B,C,D) y el conjunto de dependencias F = {AB → CD}

a. Verificar que R se encuentra en BCNF según F.

b. Agregue las dependencias que considere necesarias al conjunto F original de forma tal que
la máxima forma normal en que se encuentra R según el nuevo conjunto de dependencias
sea 3NF.

c. Agregue las dependencias que considere necesarias al conjunto F original de forma tal que
la máxima forma normal en que se encuentra R según el nuevo conjunto de dependencias
sea 1NF.
Justifique todas las respuestas.

Ejercicio 16
Una empresa de alquiler de vehículos desea implementar una base de datos con la informa-
ción de su negocio. Se tienen vehículos identificados por su nro de matrícula, y de los que
se conoce su marca, color, modelo y año. También se tienen clientes identificados por su nro
de cédula de identidad, y de los que se conoce su nombre, dirección y teléfono. Un contrato
de alquiler de vehículo está identificado por un número de contrato y se realiza en una fecha
dada entre un cliente y un vehículo, registrándose el período de alquiler en días y el precio
del servicio. Se considera que en una misma fecha no se puede alquilar más de una vez el
mismo vehículo al mismo cliente.
a. Determinar que dependencias funcionales (no triviales) se cumplen.

Página 7
Instituto de Computación Facultad de Ingeniería Fundamentos de Base de Datos 2022

b. Dar una descomposición en BCNF con JSP. Justificar ambas propiedades.

c. Determinar si en la descomposición anterior se pierden dependencias funcionales.

Ejercicio 17 (*)
Un club esta organizando un campeonato de tenis individual. A cada persona que se inscribe
se le pide el nombre, la edad, la cédula y la fecha de vencimiento de la ficha medica. El torneo
se juega en un determinado conjunto de canchas de las que se conoce la dirección de cada
una, un código que las identifica, y si tienen iluminación o no. A partir de estos datos, se
organizan los partidos del campeonato con los siguientes criterios.

A cada partido se le asigna un código que lo identifica dentro del torneo, una hora, una
cancha, dos inscriptos diferentes (local y visitante), una etapa (eliminatorias, octavos, cuar-
tos, semifinales y final) y un ganador. No se pueden jugar dos partidos a la misma hora en la
misma cancha. En cada etapa, cada jugador juega un solo partido.

a. Indicar todas las dependencias funcionales que se cumplen en esta realidad.

b. ¿Que problemas se presentan en la realidad anterior?

c. Hallar todas las claves. Justificar la respuesta.

d. Hallar un cubrimiento minimal. Justificar la respuesta.

e. Teniendo en cuenta las dependencias encontradas, indicar en que forma normal se en-
cuentra el esquema que contiene todos los atributos. Si no se encuentra en una forma
normal aceptable, lleve el esquema a la forma normal que considere adecuada. Justifique
las respuestas.

Página 8

También podría gustarte