Diseñar la base de datos biblioteca – Soluciones: EN PRIMER LUGAR, CREAMOS LA BASE DE DATOS BIBLIOTECA: create database Biblioteca; 1.- Crea la tabla editorial. create table Editorial( claveeditorial smallint primary key, nombre varchar(60), direccion varchar(60), telefono varchar(15) ); 2.- Crea la tabla libro sin su clave foránea. create table Libro( clavelibro int primary key, titulo varchar(60), idioma varchar(15), formato varchar(15) ); 3.- Borra la clave principal de la tabla editorial. alter table editorial drop primary key; 4.- Crea la clave foránea de la tabla libro. 1º.- Hay que añadir la clave principal de la tabla a la que se referencia desde la tabla Libro , es decir, la clave principal de Editorial, que ha sido borrada en el apartado 3: alter table editorial add primary key (claveeditorial); 1 2º.- Se crea la en Libro la columna que va a ser clave foránea: alter table libro add column claveeditorial smallint; 3º.- Se crea la clave foránea que se pide en este apartado 4: alter table libro add constraint fk_claveeditorial foreign key (claveEditorial) references editorial(claveEditorial); 5.- Crea la tabla ejemplar sin su clave foránea. create table ejemplar( claveejemplar int primary key, numeroorden smallint, edicion smallint, ubicacion varchar(15), categoria char ); 6.- Añade la clave foránea a la tabla ejemplar. 1º.- Se crea la en la tabla Ejemplar, la columna que va a ser clave foránea: alter table ejemplar add column clavelibro int; 2º.- Se crea la clave foránea que pide el enunciado, en esa columna (claveeditorial): alter table ejemplar add constraint fk_clavelibro foreign key (clavelibro) references libro(clavelibro); 7.- Borra la tabla libro. 1º.- Se elimina la restricción la clave foránea que tiene la tabla ejemplar sobre la tabla libro. alter table ejemplar drop foreign key fk_clavelibro; 2º.- Se borra la tabla libro drop table libro; 8.- Crea la tabla socio sin sus atributos dirección y teléfono. create table socio ( clavesocio int primary key, nombre varchar(60), categoria char 2 ); 9.- Crea la tabla préstamo. create table prestamo( clavesocio int , claveejemplar int, numeroorden smallint, fecha_prestamo date, fecha_devolucion date, notas blob, constraint pk primary key (clavesocio, claveejemplar, numeroorden), constraint fk_clavesocio foreign key (Clavesocio) references Socio (ClaveSocio), constraint fk_ejemplar foreign key (claveejemplar) references Ejemplar(ClaveEjemplar) ); (*) En el entorno gráfico solo se visualiza una clave foránea. Sin embargo quedan las dos creadas tal como las dos, se indica en el anterior código de MySQL. Incluso en la ventana Diseñador pueden verse la clave primaria múltiple (tres atributos: clavesocio, claveejemplar y numeroorden y las dos claves foráneas. 10.- Añade los atributos direccion de tipo varchar(20) y teléfono de tipo varchar(3) a la tabla socio. alter table socio add column Direccion varchar(20); alter table socio add column Telefono varchar(3); 11.- Añade una columna a la tabla libro que indique su fecha de publicación. 1º.- La tabla libro no existe, hay que crearla: create table Libro( clavelibro int primary key, titulo varchar(60), idioma varchar(15), formato varchar(15), claveeditorial smallint, 3 constraint fk_claveeditorial foreign key (claveeditorial) references Editorial (claveeditorial) ); 2º.- Añadimos la nueva columna que se pide: alter table libro add column Fech_Publicacion date; 12.- Cambia el tipo del atributo dirección de la tabla socio. Pon su tipo inicial. alter table Socio change Direccion Direccion varchar(60); 13.- Borra la tabla biblioteca. Este enunciado es erróneo, biblioteca no es una tabla, es la base de datos. 14.- Añade la columna teléfono con su tipo original a la tabla socio. alter table Socio change Telefono Telefono varchar(15); 15.- Borra la clave foránea de la tabla libro. alter table libro drop foreign key fk_claveeditorial; 16.- Crea la tabla biblioteca sin su clave primaria. Este enunciado es erróneo, biblioteca no es una tabla, es la base de datos. 17.- Borra la clave foránea de la tabla ejemplar No existe, se perdió al borrar la tabla libro, y cuando se creó nuevamente libro no se generó la clave foránea de la tabla Ejemplar que “apuntaba” a la tabla Libro. De haber existido sería: alter table ejemplar drop foreign key fk_clavelibro; 18.- Crear la tabla biblioteca. Este enunciado es erróneo, biblioteca no es una tabla, es la base de datos. 19.- Añade la clave foránea de la tabla libro. alter table libro add constraint fk_claveeditorial foreign key (ClaveEditorial) references Editorial(ClaveEditorial); 20.- Añade la clave foránea de la tabla ejemplar. Finalmente: Solicita una descripción de cada una de las tablas de la base de datos. Verifica si están todas creadas y con todas sus columnas y tipos. Añade o elimina lo necesario para dejar cada tabla tal como se especifica en el diagrama relacional inicial. 4 Descripción de cada tabla: describe Libro; --------------> Tiene la columna Fech_Publicacion de tipo date, que no la tenía inicialmente. describe Editorial; ----------> Está igual . describe Ejemplar; ----------> Está igual . describe Socio; ----------> Está igual . describe Prestamo; ----------> Está igual . Eliminamos la columna Fech_Publicacion de tipo date de la tabla Libro: alter table Libro drop column Fech_Publicacion; 5