abstract
| - Aunque la creación de la base de datos de ejemplo se describió en el capítulo anterior, la incluimos la principio de este como referencia: DROP DATABASE IF EXISTS videoteca; CREATE DATABASE videoteca; USE videoteca; DROP TABLE IF EXISTS director; CREATE TABLE director (id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(64) NOT NULL, apellidos VARCHAR(64) NOT NULL, imdb VARCHAR(32) NOT NULL DEFAULT , PRIMARY KEY(id) ) ENGINE = InnoDB; DROP TABLE IF EXISTS genero; CREATE TABLE genero (id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(2) NOT NULL, descripcion VARCHAR(32) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; DROP TABLE IF EXISTS actor; CREATE TABLE actor (id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(64) NOT NULL, apellidos VARCHAR(64) NOT NULL, imdb VARCHAR(32) NOT NULL DEFAULT , PRIMARY KEY(id) ) ENGINE = InnoDB; DROP TABLE IF EXISTS soporte; CREATE TABLE soporte (id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(3) NOT NULL, descripcion VARCHAR(32) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; DROP TABLE IF EXISTS pelicula; CREATE TABLE pelicula (id INT NOT NULL AUTO_INCREMENT, titulo VARCHAR(64) NOT NULL, idsoporte INT NOT NULL, idgenero INT 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) ) ENGINE = InnoDB; DROP TABLE IF EXISTS actores_por_pelicula; CREATE TABLE actores_por_pelicula (idpelicula INT NOT NULL, idactor INT 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) ) ENGINE = InnoDB; DROP TABLE IF EXISTS directores_por_pelicula; CREATE TABLE directores_por_pelicula (idpelicula INT NOT NULL, iddirector INT 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) ) ENGINE = InnoDB; El primer bloque de inserciones necesarias para poder trabajar con este modelo es el siguiente: USE videoteca; 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; INSERT INTO soporte(nombre, descripcion) VALUES('DVD', 'Digital Versatile Disc'); INSERT INTO soporte(nombre, descripcion) VALUES('VHS', 'Video Home System'); 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'); INSERT INTO actor(nombre, apellidos, imdb) VALUES('Harrison', 'Ford', 'nm0000148'); INSERT INTO actor(nombre, apellidos, imdb) VALUES('Russell', 'Crowe', 'nm0000128'); INSERT INTO director(nombre, apellidos, imdb) VALUES('Ridley', 'Scott', 'nm0000631'); INSERT INTO director(nombre, apellidos, imdb) VALUES('Mike', 'Nichols', 'nm0001566'); 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); 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); 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); A continuación, el resto de inserciones: USE videoteca; INSERT INTO soporte(nombre, descripcion) VALUES('LD', 'Laser Disc'); INSERT INTO genero(nombre, descripcion) VALUES('C', 'Comedia'); 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'); INSERT INTO director(nombre, apellidos, imdb) VALUES('Robert', 'Zemekis', 'nm0000709'); INSERT INTO director(nombre, apellidos, imdb) VALUES('Douglas', 'Trumbull', 'nm0874320'); INSERT INTO pelicula(titulo, idsoporte, idgenero) VALUES('Naves misteriosas', 1, 1);
|