Académique Documents
Professionnel Documents
Culture Documents
RELACIONAL
BUSCAPELI
MINIMUNDO
El mundo del cine es un mundo cada vez ms grande, es por esto que para encontrar una pelcula
o documental que sea interesante para una persona es necesario reunir informacin sobre todas
las producciones en un solo lugar y a travs de este lugar buscar la informacin sobre un film,
escritor, actor, director o estudio.
La plataforma pensada es una pgina web con una base de datos que contenga esta informacin.
En esta pgina cada usuario podr registrarse con un Nickname nico que lo identificar. Cada
usuario tendr tambin la posibilidad de evaluar films y entablar amistad con otros usuarios
adems de buscar informacin sobre films, actores, directores, escritores y estudios.
Si el usuario decide buscar por actor, deber proporcionar algn dato sobre este para poder
mostrar resultados, lo mismo para director, escritor, estudio u otro usuario para lo cual ser
necesario ingresar el Nickname.
Por ejemplo se busca la pelcula "Avatar" del ao 2009. Los resultados obtenidos son el director,
los escritores, estudio donde se filmo, premios, todos los actores que actuaron en el film adems
de la nota promedio de los usuarios que han evaluado esa pelcula.
Si el usuario decide que quiere ver otros films del mismo director basta con que elija el director y
se mostraran los datos, procedimiento similar para actores, escritores y estudio.
Entidades
Para cada film se dispone de los datos:
Otra entidad que participa es el Escritor, que participa como escritor de los guiones para cada film.
Para este se dispone de los siguientes datos:
La siguiente entidad participante es el Estudio, cada estudio tiene los siguientes campos
Los premios otorgados a cada film tambin son informacin necesaria para algunos usuarios, ya
que es practica recurrente querer conocer, por ejemplo, los ganadores del Oscar a mejor pelcula
del ao. Cada premio tiene los siguientes atributos:
Y finalmente tenemos al usuario, esta entidad es la que representa cada usuario de la base de
datos que busque informacin sobre algn film en especial, tambin puntuar dichos films segn su
criterio. Usuario tiene los siguientes campos:
El resto de datos que podran tener los usuarios no son relevantes en este mini mundo ya que solo
importa la puntuacin que le dar a cada film.
Relaciones
La relacin binaria ESCRIBE representa la relacin que existe entre el film y el o los escritores que
escribieron el guion para ese film en particular. Tiene el atributo categora que especifica si el
escritor participo como autor, coautor, etc. Tiene cardinalidad n:m ya que un escritor puede
escribir muchos films como tambin un film puede tener muchos escritores. La participacin es
total por ambas entidades ya que en propsitos del minimundo no puede existir un guion sin
pelcula, como tambin una pelcula sin guion.
La relacin binaria ACTUA representa la relacin existente entre actor y los films que ha actuado.
Tiene el atributo rol el cual especifica el rol que cumpli en ese film. Tambin tiene cardinalidad
n:m y participacin total de las dos entidades.
La relacin binaria DIRIGE representa al relacin existente entre un film y su director. Su
cardinalidad es 1:n ya que un film tiene un solo director para propsitos de este minimundo y la
participacin de las dos entidades es total.
La relacin binaria PERTENECE representa la relacin entre el film y el estudio al que pertenece. Su
cardinalidad es 1:n ya que un film tiene un solo estudio dueo de los derechos pero un estudio
puede poseer los derechos para n films. La participacin de film es parcial ya que un film puede no
tener estudio, como es el caso de algunas producciones independientes y cortos.
La relacin binaria EVALUA representa el proceso en que un usuario evala un film. Tiene el
atributo nota el cual especifica la nota puesta por un usuario en una escala de 1 a 10 para una film
en particular. Su cardinalidad es n:m ya que un usuario puede evaluar n films y un film ser
evaluado por m usuarios. En este caso las participaciones son parciales.
La relacin AMIGO_DE representa la relacin de amistad ente un usuario y otro. Con cardinalidad
n:m ya que un usuario puede tener muchos amigos.
La relacin binaria GANA especifica la relacin entre un film y lo premios que ha ganado. Tiene el
atributo Ganador el cual especifica el nombre del ganador de un premio en particular (nombre
pelcula, seudnimo actor, etc.). Su cardinalidad es 1:n ya que un film puede tener n premios.
MODELO RELACIONAL
Luego de aplicar el algoritmo de mapeo se obtienen las siguientes tablas
Para comprobar esta propiedad se eligieron las tablas Film, Actua y Estudio. Entonces sea R1=
Film, R2=Actua, R3=Estudio tenemos.
R1:{ id_film, nombre, pais,ao, genero, tipo, id_dire, n_estudio}
R2:{id_act, id_filme, rol}
R3:{n_estudio, pais_e}
Luego reemplazando con aj las celdas correspondientes a las relaciones que tienen el atributo de
la columna j:
R/A id_film nombre pas ao genero tipo id_dire n_estudio id_act
rol
pais_e
R1
a1
a2
a3
a4
a5
a6
a7
a8
b19
b110 b111
R2
a1
b22
b23 b24
b25
b26
b27
b28
a9
a10
b211
R3
b31
b32
b33 b34
b35
b36
b37
a8
b39
b310
a11
Luego para cada dependencia y utilizando el atributo x de X repetimos el bucle hasta obtener:
R/A id_film nombre pas ao genero tipo id_dire n_estudio id_act rol
pais_e
R1
a1
a2
a3
a4
a5
a6
a7
a8
b19
a10
a11
R2
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
R3
b31
b32
a8
b39
b310 a11
b36 b37
Se obtiene una fila solo con a en todas sus columnas, lo que nos indica segn el algoritmo aplicado
que la descomposicin elegida cumple con la propiedad de concatenacin no aditiva.
CONSULTAS EN SQL
Se piden tres consultas:
Primera Consulta: Cual es el nombre y el pas del estudio dueo de los derechos de distribucin
del film "Avatar" estrenado el 2010?
Se requiere un join entre Estudio y Film.
SELECT e.nombre, e.pais
FROM estudio e, film f
WHERE f.nombre='avatar' and f.anio=2010 and f.n_estudio=e.nombre;
Esta consulta devuelve el siguiente resultado
Segunda Consulta: Cuantos actores actuaron en el film "Avatar" y quien fue el director de este
film?
Tenemos un join entre las tablas Actua, Director y Film.
SELECT count(act.id_act) as cant_actores, d.seudonimo as director
FROM actua act, director d, film f
WHERE f.nombre='avatar' and act.id_filme=f.id_fil and f.id_dire=d.id_director
GROUP BY d.seudonimo;
El resultado es para la base de datos de prueba
Tercera Consulta: Quienes son los amigos de los usuarios que han evaluado con nota mayor a
6.0 las pelcula dirigidas por James Cameron?
Tenemos una subconsulta primero para obtener la id_film de las pelculas dirigidas por James
Cameron, luego una consulta que usa estas id para encontrar los usuarios que han evaluado con
nota mayor a 6.0 las pelculas con esa id y posteriormente mediante un join encontrar sus amigos.
SELECT am.nick2
FROM amigo_de am, evalua ev
WHERE ev.nota>6.0 and nick=nick1 and ev.id_filme in(
SELECT f.id_fil
FROM film f, director d
WHERE d.seudonimo='James Cameron' and d.id_director=f.id_dire);
El resultado para esta consulta: