Examen BD 2008-09 1C Recetas - Departamento de Lenguajes y

Anuncio
Departamento de Lenguajes y Sistemas Informáticos
E.T.S. Ingeniería Informática. Universidad de Sevilla
Avda Reina Mercedes s/n. 41012 Sevilla
Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es
e.t.s. ingeniería
informática
Bases de Datos (29 Enero 2009)
Teoría
Dado el siguiente grafo de dependencias funcionales:
F
A
B
E
C
D
G
Conteste razonadamente a las siguientes preguntas:
a) ¿Cuál es el cierre de los descriptores {A}, {C} y {A,D}?
b) ¿Qué sentido tiene calcular el cierre de un descriptor?
c) La relación R1 (A ,B ,D) ¿Está en FNBC?
d) La relación R2 (B, C, F) ¿En qué Forma Normal está?
Peso T:
15% (25%, 25%, 25%,25%)
Tiempo: 20 min
P1: Normalización
Se necesita una BD que almacene información sobre alimentos y dietas para las que están indicados
dichos alimentos.
De los alimentos (alimento) se registrará las calorías (calorías) que aportan según medida (cantidad y
unidad) (ej. 100 gr, la cantidad es 100 y la unidad en que se mide son gramos).
Los alimentos se clasifican según su composición nutricional en grupos (ej, cereales, legumbres, etc.).
Cada alimento pertenece a un único grupo.
De cada grupo se registrará además de su denominación (grupo) y descripción (descripción), los
alimentos que lo componen y el nombre de las vitaminas (vitamina) y minerales (mineral) que aportan.
Un grupo puede aportar más de una vitamina y más de un mineral. Una vitamina o mineral puede ser
aportado por más de un grupo de alimentos.
Se han elaborado además una serie de dietas indicadas para diversas afecciones ej. control del colesterol,
baja en calorías, etc. Cada dieta (dieta) está indicada para una única afección (afección).
Las dietas son semanales (se repiten cada semana) y constan de cuatro comidas (desayuno, almuerzo, etc.).
En cada dieta aparece para cada día de la semana (día) y comida (comida) los alimentos que deben de
comer y su medida (cantidad y unidad). Es decir dieta, día, comida y alimento determinan la cantidad y
unidad que se deben tomar.
Por último, para cada dieta se almacenarán los alimentos permitidos y los prohibidos (recomendación).
NOTA: Utilizar sólo aquellos atributos que aparecen en negrita en el enunciado.
Obtener
a) Grafo de dependencias
b) Esquema relacional en 3FN, aplicando la síntesis de Bernstein, (claves primarias, alternativas y
ajenas) con cardinalidad mínima de relaciones (mínimo número de relaciones posibles).
Peso P2:
35% (40%, 60%)
Tiempo: 45 min
Departamento de Lenguajes y Sistemas Informáticos
E.T.S. Ingeniería Informática. Universidad de Sevilla
Avda Reina Mercedes s/n. 41012 Sevilla
Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es
e.t.s. ingeniería
informática
Bases de Datos (29 Enero 2009)
P2: Lenguajes relacionales (Escritura)
Dado el siguiente esquema
Alimentos(alimento, grupo)
Calorias_Alim(alimento, unidad, cantidad, calorías)
Vitaminas(grupo, vitamina)
Minerales(grupo, mineral)
Dietas(dieta,afección)
Comp_dietas(dieta, dia, comida, alimento, unidad, cantidad)
Alim_Dieta(dieta, alimento, recomendación)
Grupos (grupo, descripción)
PK(alimento)
FK (grupo)/Grupos
PK(alimento, unidad, cantidad)
FK (alimento)/Alimentos
PK(grupo, vitamina)
FK (grupo)/Grupos
PK (grupo, mineral)
FK (grupo)/Grupos
PK(dieta)
PK(dieta, dia, comida, alimento)
FK1(dieta)/Dietas
FK2 (alimento)/Alimentos
PK (dieta, alimento)
FK1(dieta) /Dietas
FK2 (alimento)/Alimentos
PK(grupo)
Escriba las siguientes expresiones relacionales:
Minerales y vitaminas que aporta una dieta cuyo campo dieta = “Anemia” (AR, CROT y SQL).
Alimentos prohibidos en todas las dietas que incluyen alimentos del grupo cereales (AR, CROD,
CROT).
Cantidad de pan recomendada para cada día de la semana de una dieta cuyo campo
dieta = “Cardiopatía” (AR,SQL).
a)
b)
c)
Peso
P2: 30% (37,5%, 37,5%,25%)
Tiempo: 45 min.
P3: Lenguajes relacionales (Reescritura)
Dado el siguiente esquema:
Recetas (receta, dificultad, tiempo)
Ingredientes (receta, ingrediente, unidad, cantidad)
Pk(receta)
Pk(receta, ingrediente)
Fk1(receta)/Recetas
Dada la siguiente expresión de una consulta en CROT en WinRDBI:
{Rx.receta|recetas(Rx) and (forall Ix)
(not (ingredientes(Ix) and Ix.receta='gazpacho'
)
or (exists Iy) (ingredientes(Iy) and Iy.ingrediente=Ix.ingrediente and Rx.receta = Iy.receta)) };
a)
b)
Peso:
Exprese en castellano el conjunto de tuplas definidas por dicha consulta.
Rescríbala en SQL, AR y CROD según la notación teórica.
P3: 20% (25%, 75%)
Tiempo: 30 min.
Departamento de Lenguajes y Sistemas Informáticos
E.T.S. Ingeniería Informática. Universidad de Sevilla
Avda Reina Mercedes s/n. 41012 Sevilla
Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es
Bases de Datos (29 Enero 2009)
e.t.s. ingeniería
informática
Solución P1:
Vitamina
Grupo
Calorías
Descripción
Cantidad
Mineral
Unidad
Alimento
Recomendación
Dieta
Afección
Día
Comida
P1{grupo descripción }
P2{alimento
grupo}
P3{(alimento, unidad, cantidad) calorías}
P4{(grupo, vitamina) grupo, vitamina }
P5{(grupo, mineral) grupo, mineral }
P6{ dieta afección}
P7{(dieta, día, comida, alimento) unidad, cantidad }
P8{(dieta, alimento) recomendación }
Relaciones
Relación
Grupos
Alimentos
Calorias
Vitamina
Minerales
Dietas
Comp_dietas
Esquema
grupo, descripción
alimento, grupo
alimento, unidad, cantidad, calorías
grupo, vitamina
grupo, mineral
dieta,afección
dieta, dia, comida, alimento, unidad, cantidad
PK
grupo
alimento
(alimento, unidad, cantidad)
(grupo, vitamina)
(grupo, mineral)
dieta
(dieta, dia, comida, alimento)
Alim_Dieta
dieta, alimento, recomendación
(dieta, alimento)
FK
alimento/Alimentos
grupo/Grupos
grupo/Grupos
dieta /Dietas
alimento/Alimentos
dieta /Dietas
alimento/Alimentos
Departamento de Lenguajes y Sistemas Informáticos
E.T.S. Ingeniería Informática. Universidad de Sevilla
Avda Reina Mercedes s/n. 41012 Sevilla
Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es
Bases de Datos (29 Enero 2009)
Solución P3:
Recetas que contienen, al menos, todos los ingredientes del Gazpacho.
SQL
q:=SELECT R.receta FROM recetas R
WHERE NOT EXISTS (SELECT I1.ingrediente FROM ingredientes I1 WHERE I1.receta='gazpacho'
AND NOT EXISTS (SELECT I2.ingrediente FROM ingredientes I2
WHERE I2.ingrediente=I1.ingrediente
AND I2.receta=R.receta) ) ;
CROD
q(receta:Rx)<-(recetas(receta:Rx )
and (forall Ix)(not (ingredientes(ingrediente:Ix, receta:'gazpacho') )
or ingredientes(ingrediente:Ix, receta:Rx)));
AR
Ingredientes
receta , ingrediente
Ingredientes
ingrediente
receta ' Gazpacho '
e.t.s. ingeniería
informática
Descargar