abstract
| - Aunque la creación de la base de datos de ejemplo se describió en el capítulo anterior, la incluimos la principio de éste como referencia: DROP DATABASE IF EXISTS videoteca; CREATE DATABASE videoteca; USE videoteca; DROP TABLE IF EXISTS director; CREATE TABLE director ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nombre VARCHAR(64) NOT NULL, apellidos VARCHAR(64) NOT NULL, imdb VARCHAR(32) NOT NULL DEFAULT '', PRIMARY KEY(id) ) TYPE=InnoDB; DROP TABLE IF EXISTS genero; CREATE TABLE genero ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nombre VARCHAR(2) NOT NULL, descripcion VARCHAR(32) NOT NULL, PRIMARY KEY(id) ) TYPE=InnoDB; DROP TABLE IF EXISTS actor; CREATE TABLE actor ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nombre VARCHAR(64) NOT NULL, apellidos VARCHAR(64) NOT NULL, imdb VARCHAR(32) NOT NULL DEFAULT '', PRIMARY KEY(id) ) TYPE=InnoDB; DROP TABLE IF EXISTS soporte; CREATE TABLE soporte ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nombre VARCHAR(3) NOT NULL, descripcion VARCHAR(32) NOT NULL, PRIMARY KEY(id) ) TYPE=InnoDB; DROP TABLE IF EXISTS pelicula; CREATE TABLE pelicula ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, titulo VARCHAR(64) NOT NULL, idsoporte INTEGER UNSIGNED NOT NULL, idgenero INTEGER UNSIGNED NOT NULL, PRIMARY KEY(id), INDEX p_FK1(idsoporte), INDEX p_FK2(idgenero), FOREIGN KEY(idsoporte) REFERENCES soporte(id), FOREIGN KEY(idgenero) REFERENCES genero(id) ) TYPE=InnoDB; DROP TABLE IF EXISTS actores_por_pelicula; CREATE TABLE actores_por_pelicula ( idpelicula INTEGER UNSIGNED NOT NULL, idactor INTEGER UNSIGNED NOT NULL, PRIMARY KEY(idpelicula, idactor), INDEX app_FK1(idpelicula), INDEX app_FK2(idactor), FOREIGN KEY(idpelicula) REFERENCES pelicula(id), FOREIGN KEY(idactor) REFERENCES actor(id) ) TYPE=InnoDB; DROP TABLE IF EXISTS directores_por_pelicula; CREATE TABLE directores_por_pelicula ( idpelicula INTEGER UNSIGNED NOT NULL, iddirector INTEGER UNSIGNED NOT NULL, PRIMARY KEY(idpelicula, iddirector), INDEX dpp_FK1(idpelicula), INDEX dpp_FK2(iddirector), FOREIGN KEY(idpelicula) REFERENCES pelicula(id), FOREIGN KEY(iddirector) REFERENCES director(id) ) TYPE=InnoDB; Las inserciones necesarias para poder trabajar con este modelo son las siguientes: USE videoteca; -- Antes de realizar todas las inserciones, -- borraremos todos los registros de las -- tablas de la base de datos. DELETE FROM actores_por_pelicula; DELETE FROM directores_por_pelicula; DELETE FROM actor; DELETE FROM director; DELETE FROM pelicula; DELETE FROM soporte; DELETE FROM genero; -- Inserciones de soportes para las películas. INSERT INTO soporte(nombre,descripcion) VALUES('DVD','Digital Versatile Disc'); INSERT INTO soporte(nombre,descripcion) VALUES('VHS','Video Home System'); -- Inserciones de géneros INSERT INTO genero(nombre,descripcion) VALUES('CF','Ciencia Ficción'); INSERT INTO genero(nombre,descripcion) VALUES('A','Aventuras'); INSERT INTO genero(nombre,descripcion) VALUES('D','Drama'); -- Inserciones de actores INSERT INTO actor(nombre,apellidos,imdb) VALUES('Harrison','Ford','nm0000148'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Russell','Crowe','nm0000128'); -- Inserciones de directores INSERT INTO director(nombre,apellidos,imdb) VALUES('Ridley','Scott','nm0000631'); INSERT INTO director(nombre,apellidos,imdb) VALUES('Mike','Nichols','nm0001566'); -- Inserciones de películas INSERT INTO pelicula(titulo,idsoporte,idgenero) VALUES('Blade Runner',1,1); INSERT INTO pelicula(titulo,idsoporte,idgenero) VALUES('Gladiator',1,2); INSERT INTO pelicula(titulo,idsoporte,idgenero) VALUES('A propósito de Henry',2,3); -- Asociación de actores a cada película. INSERT INTO actores_por_pelicula( idpelicula,idactor ) VALUES(1,1); INSERT INTO actores_por_pelicula( idpelicula,idactor ) VALUES(2,2); INSERT INTO actores_por_pelicula( idpelicula,idactor ) VALUES(3,1); -- Asociación de directores por película. INSERT INTO directores_por_pelicula( idpelicula,iddirector ) VALUES(1,1); INSERT INTO directores_por_pelicula( idpelicula,iddirector ) VALUES(2,1); INSERT INTO directores_por_pelicula( idpelicula,iddirector ) VALUES(3,2); Algunas inserciones más: USE videoteca; -- Inserciones de soportes para las películas. INSERT INTO soporte(nombre,descripcion) VALUES('LD','Laser Disc'); -- Inserciones de géneros INSERT INTO genero(nombre,descripcion) VALUES('C','Comedia'); -- Inserciones de actores INSERT INTO actor(nombre,apellidos,imdb) VALUES('Lee','Marvin','nm0001511'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Clint','Eastwood','nm0000142'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Jean','Seberg','nm0781029'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Bruce','Dern','nm0001136'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Bruce','Boxleitner','nm0000310'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Rutger',' Hauer','nm0000442'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Sean','Young','nm0000707'); INSERT INTO actor(nombre,apellidos,imdb) VALUES('Matthew','McConaughey','nm0000190'); -- Inserciones de directores INSERT INTO director(nombre,apellidos,imdb) VALUES('Robert','Zemekis','nm0000709'); INSERT INTO director(nombre,apellidos,imdb) VALUES('Douglas','Trumbull','nm0874320'); -- Inserciones de películas INSERT INTO pelicula(titulo,idsoporte,idgenero) VALUES('Naves misteriosas',1,1); El modelo para DBDesigner puede encontrarse en la sección de descargas.
|