Vous êtes sur la page 1sur 11

EJEMPLO BASE DE DATOS

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.

MODELO ENTIDAD RELACION

Entidades
Para cada film se dispone de los datos:

Id_Film: este atributo clave identificara a cada film.


Nombre: corresponde al nombre del film.
Tipo: indica si se trata de una pelcula, documental o corto.
Gnero: indica el gnero (drama, aventura, sci-fi, etc.).
Ao: esto corresponde al ao de estreno del film
Pas: es el pas de procedencia del film

Para cada actor se dispone de los datos:

Id_actor: atributo clave que identificara individualmente a cada actor.


Nombre: corresponde al nombre completo del actor.
Pas: indica el pas donde naci.
Ao_Nac: indica el ao de nacimiento.
Seudnimo: este atributo es usado para los casos que el actor use algn seudnimo, si no
es el caso se usa el nombre de pila y el apellido.

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:

ID_Escritor: atributo clave que identificara individualmente a cada escritor.


Nombre: corresponde al nombre completo del escritor.
Pas: indica el pas donde naci.
Ao_Nac: indica el ao de nacimiento.
Seudnimo: este atributo es usado para los casos que el escritor use algn seudnimo, si
no es el caso se usa el nombre de pila y el apellido.

Para el caso del Director, tenemos los siguientes datos:

ID_Director: atributo clave que identificara individualmente a cada director.


Nombre: corresponde al nombre completo del director.
Pas: indica el pas donde naci.
Ao_Nac: indica el ao de nacimiento.
Seudnimo: este atributo es usado para los casos que el director use algn seudnimo, si
no es el caso se usa el nombre de pila y el apellido.

La siguiente entidad participante es el Estudio, cada estudio tiene los siguientes campos

Nombre: es el nombre nico para cada estudio


Ubicacin: corresponde al pas para cada estudio.

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:

Ao: este es el ao en que cada pelcula gano un premio.


Nombre: es el nombre nico para cada premio, por ejemplo Oscar, Venecia, etc.
Categora: este corresponde a al categora de cada premio, mejor actor, mejor pelcula,
mejor director, etc.

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:

Nickname: representa individualmente a cada usuario, no se pueden repetir los nicknames


en la BD.
Pas: pas de procedencia del usuario.

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

En la imagen siguiente se aprecian las referencias de las claves forneas

Las primary key se encuentran en negrita y subrayadas.

Las dependencias funcionales en el esquema normalizado a tercera forma normal

Para el caso de AMIGO_DE la dependencias seran (nick1,nick2)->nick1 y (nick1,nick2)-> nick2

COMPROBACION DE LA PROPIEDAD NO ADITIVA

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}

Y las dependencias funcionales


DF film:{id_fil-> (nombre, pas, ao, genero, tipo, id_dire, n_estudio)}
DF actua:{id_act,id_filme-> rol}
DF estudio:{n_estudio->pais_e}

Para el primer paso del algoritmo tenemos:


R/A id_film nombre pas ao genero tipo id_dire n_estudio id_act rol pais_e
R1
b11
b12
b13 b14 b15 b16 b17
b18
b19 b110 b111
R2
b21
b22
b23 b24 b25 b26 b27
b28
b29 b210 b211
R3
b31
b32
b33 b34 b35 b36 b37
b38
b39 b310 b311

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

b33 b34 b35

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:

una simple que incluya al menos un join.


una que incluya joins y funciones agregadas.
una que incluya subconsultas y que no tenga una versin trivial ms simple (sin
subconsultas).

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:

Vous aimerez peut-être aussi