8.2 Tipos de enlace
8.3.13. Base de datos de cine
Conceptos a tratar
• Plural finito.
• Enlace singular de plural por posición. • Actualizaciones.
• Creación de históricos.
Descripción
Con esta aplicación vamos a gestionar una base de datos de cine. Para su diseño hemos establecido los puntos siguientes:
• Una persona puede participar en muchas películas, mientras que en una película, una persona sólo participará una vez ejerciendo la misma fun- ción (sea actor, director, guionista, etc.). Lo anterior no excluye que en una misma película una persona realice dos trabajos distintos (por ejem- plo, guionista y actor). Además, en una película puede haber varios di- rectores, varios guionistas, varios actores, etc.
• Una persona puede recibir varios premios por haber participado en una película, mientras que un mismo premio puede otorgarse a distintas per- sonas. Análogamente, una película puede recibir distintos premios, mientras que un mismo premio puede otorgarse a distintas películas.
• Una película puede incluirse en varios géneros, mientras que a un mis- mo género pertenecen distintas películas. Lo mismo ocurre con las pro- ductoras: una película puede ser una colaboración entre distintas pro- ductoras, mientras que a una productora pertenecen distintas películas. • Una película puede ser estrenada en varios países, mientras que en un
país pueden estrenarse muchas películas.
Esquema de la aplicación
Comenzaremos creando la tabla central de la aplicación: PELICULAS, que declararemos de tipo maestro normal con clave numérica. En ella incluimos los campos Título original, Duración, Año, Síntesis, Foto, Óscars, etc. A continuación crearemos la tabla PERSONAS, de tipo maestro normal con clave numérica. En ella incluiremos los campos Nombre real, Sexo, Foto,
Óscars, etc.
En cada registro de la tabla PELICULAS vamos a guardar los actores de la misma. Como éstos son un número limitado, usaremos la técnica del plural finito. Para ello en PELICULAS creamos el campo Actor1, declarándolo en- lazado a la tabla de datos maestra PERSONAS. Copiamos y pegamos este campo tantas veces como actores queramos incluir. Después creamos el índice Actores, lo declaramos de múltiples claves y lo componemos con to- dos los campos Actor que acabamos de crear, añadiendo el campo Año pa- ra que cuando busquemos todas las películas de un actor Velázquez nos las ordene por el año de la película.
Ahora nos vamos a la tabla PERSONAS, en la que declaramos un histórico contra PELICULAS usando el índice Actores.
08
Desarrollo completo de una aplicaciónDe igual modo que con los actores, una película puede tener más de un di- rector y más de un guionista. Para solucionar este problema repetimos la técnica del plural finito, creando varios campos Director y varios campos
Guionista en la tabla PELICULAS, incluyéndolos en su correspondiente ín-
dice de clave múltiple y declarando los históricos correspondientes en la ta- bla PERSONAS.
Hasta el momento, nuestra aplicación tiene el siguiente esquema:
Hasta el momento hemos declarado tres históricos en PERSONAS contra PELICULAS, en virtud de los cuales obtenemos todas las películas en las que una persona ha trabajado como director, todas en las que su trabajo fue de actor y todas en las que fue guionista. Pero nos interesaría conocer to- das las películas en las que una persona trabajó, independientemente de lo que hiciera. Para ello declaramos, en la tabla PELICULAS, el índice Perso-
na-Año, declarándolo de múltiples claves y componiéndolo por todos los
campos Actor, Director y Guionista, además del Año. A continuación de- claramos en PERSONAS un histórico contra PELICULAS mediante el índi- ce Persona-Año.
Ahora creamos dos campos en PERSONAS: Película-primera y Película-úl-
histórico recién creado (Películas/Persona-Año). Para el primero introduci- mos como fórmula 1, para el segundo n. Mediante estos campos podremos atrapar las películas primera y última en las que haya participado la perso- na, independientemente de su trabajo.
Vamos a ir un poco más lejos. Para ello añadimos en la tabla PERSONAS los campos Pelis-actor, Pelis-guionista y Pelis-director. Serán de tipo nu- mérico y su cometido va a ser el de guardar el número de películas en las que una persona ha participado como director, actor o guionista.
Se alimentarán gracias a actualizaciones declaradas en PELICULAS, de modo que creamos una actualización para cada campo Actor, Director y
Guionista de PELICULAS. El funcionamiento es el siguiente: cada vez que
una persona aparece en algunos de los campos Actor, Director o Guionista de una película, la actualización correspondiente sumará una unidad al campo Pelis-actor, Pelis-guionista o Pelis-director, según corresponda (o a más de uno, si la persona realiza más de un trabajo).
Por ejemplo, la actualización correspondiente al campo Actor 1 sería:
08
Desarrollo completo de una aplicaciónPara agilizar las búsquedas y reflejar los trabajos que ha desarrollado una persona creamos los campos Director, Guionista y Actor, los tres de tipo booleano, y los índices por nombre correspondientes asociados al boolea- no. Es decir, creamos un índice para cada uno por nombre y en el Campo
condición para indexar usamos Director, Actor o Guionista, respectivamen-
te, y marcamos Estado del campo para indexar, para que indexe aquellos cuyo booleano respectivo esté a uno. Esto nos servirá para cargar listas o realizar búsquedas de directores, actores o guionistas. Para que estos cam- pos se pongan a uno, por ejemplo el campo Actor, usamos los campos que acabamos de crear, Pelis-Actor, por ejemplo. Cuando este campo sea ma- yor que 0, entonces el booleano se pondrá a uno, condición que ponemos como contenido inicial del booleano: %PELIS-ACTOR%>0.
Vamos a añadir otras dos tablas al diseño: MATERIAS, que declararemos de tipo arbolado (los géneros de las películas se adaptan a una estructura ar- bolada) y PRODUCTORAS, de tipo maestro normal con clave numérica. Vamos a contemplar el caso de que una película pueda pertenecer a más de un género y a más de una productora. De nuevo aparece un plural en los dos sentidos que resolveremos con la técnica del plural finito. Enlazamos las tablas PRODUCTORAS y PELICULAS mediante un enlace singular-plu- ral (PELICULAS haciendo de histórico). Hecho esto copiamos y pegamos el campo Productora de la tabla PELICULAS, apareciendo Productora2, y componemos con estos dos campos el índice Productoras, declarándolo de múltiples claves (hemos contemplado el caso de que hubiera sólo dos productoras). Con la tabla PELICULAS actuaremos de modo idéntico.
08
Desarrollo completo de una aplicaciónCreamos ahora la tabla PAISES, que declararemos maestro normal con cla- ve numérica. ¿Cómo la encajamos en el esquema? Veamos: una película puede estrenarse en mucho países, mientras que en un país se estrenan muchas películas. Este doble plural lo resolvemos intercalando una tabla de tipo histórico que llamaremos TITULOS, pues aprovecharemos para guar- dar en ella el título de cada película en el idioma de cada país.
También aprovecharemos la tabla PAISES para capturar desde PELICU- LAS los países participantes en la cinta. Aquí surge de nuevo un plural en los dos sentidos que solucionaremos mediante la técnica del plural finito, ya que el número de países coproductores no va a ser grande. Para ello enlazamos las tablas PAISES y PELICULAS con un enlace singular-plural, a continuación copiamos y pegamos el campo País que se ha creado en PELICULAS al enlazar, apareciendo País2, y añadimos estos dos campos y el campo Año en el índice Países de PELICULAS, que declararemos de múltiples claves.
Sólo nos queda por añadir una tabla: PREMIOS. La manera usual de es- tructurar los premios justifica que la definamos de tipo arbolado (Goya al mejor actor, Goya a la mejor actriz, Goya al mejor actor secundario, Goya a la mejor actriz secundaria, etc.).
En base a lo expuesto en el apartado Descripción, PREMIOS mantiene una relación de doble plural con PELICULAS y PERSONAS, lo que justifica la in- troducción de una tabla intermedia de tipo histórico, PREMIADAS, que re- suelva el problema. En PREMIADAS creamos el campo Año.
Desde PREMIADAS vamos a actualizar el contenido de los campos Óscars de las tablas PERSONAS y PELICULAS. La actualización para PELICULAS es:
Con esta actualización sumamos una unidad al campo Óscars de PELICU- LAS, siempre que el premio otorgado a la película sea un óscar. Esto se comprueba en la Fórmula condición para modificar, en la que se verifica que la primera parte del código del premio sea 1, que precisamente es el co-
08
Desarrollo completo de una aplicaciónrrespondiente a los óscars (si la condición no se cumple, no se realiza la ac- tualización).
Por último, vamos a actualizar el contenido del campo Óscars de PER- SONAS. En el caso más general, dos personas podrían recibir el mismo premio, por la misma película, por el mismo trabajo y el mismo año: se- ría el caso de una película con dos directores, ganadora del óscar al me- jor director. Se nos plantea entonces un doble plural (las personas del premio, los premios de la persona), que resolvemos por la técnica del plural finito.
En la tabla PREMIOS copiamos y pegamos el campo Persona, apareciendo
Persona2, que también estará enlazado a tabla de datos maestra. Ahora
componemos el índice Personas con los dos campos anteriores, le añadi- mos el campo Año y el campo Premio y lo declaramos de clave múltiple, con lo que ya está resuelto el doble plural.
Ahora declaramos la primera actualización (la que usa el campo Persona) del contenido del campo Óscars de PERSONAS del siguiente modo:
Ahora nos faltaría otra actualización, idéntica a la anterior, pero que usara el campo Persona2.