Ejercicios Diseñar Diseñar la la base base de de datos datos de de una una pequeña pequeña biblioteca: biblioteca: consultar los datos de un libro: código del libro, título, autor(es), temática y en caso de estar prestado, el socio que lo tiene actualmente en préstamo consultar la información sobre un socio: código del socio, nombre, dirección, teléfono y libros que actualmente tiene en préstamo así como la fecha de préstamo consultar los préstamos históricos de un socio: código del libro, fecha del préstamo y fecha de la devolución dar de alta, dar de baja y modificar los datos de un socio gestionar los préstamos: prestar un libro a un socio y registrar la devolución de un libro. (Se supone que un préstamo dura al menos un día, es decir un libro no se puede prestar el mismo día más de una vez) Bases de Datos Curso 2005/06 DSIC-UPV 1 Ejercicios Diseñar Diseñar la la base base de de datos datos de de una una pequeña pequeña biblioteca: biblioteca: Restricciones Restricciones:: el código del libro identifica unívocamente al libro el código del socio identifica unívocamente al socio el conjunto de temas utilizados para clasificar un libro son: física, electricidad, mecánica y óptica la fecha de devolución de un libro debe ser posterior a la fecha de préstamo el número total de libros que tiene prestados un socio es un dato derivado que será mantenido automáticamente por el sistema Bases de Datos Curso 2005/06 DSIC-UPV 2 1 Solución Existen dos posibles soluciones: Solución 1: La relación Préstamo almacena sólo el préstamo histórico. Solución 2: La relación Préstamo almacena el préstamo actual y el histórico. Bases de Datos Curso 2005/06 DSIC-UPV 3 Solución 1 SOCIO(scod:char(5), scod:char(5) nombre:varchar2(60), SOCIO(scod:char(5), nombre:varchar2(60), dirección:varchar2(50), dirección:varchar2(50), tel:varchar2(20), tel:varchar2(20), libros:number(3)) libros:number(3)) LIBRO(lcod:char(5), lcod:char(5) titulo:varchar(100), LIBRO(lcod:char(5), titulo:varchar(100), tematica:varchar(15), scod:char(5), tematica:varchar(15), scod:char(5) scod:char(5), fecha_pre:date) fecha_pre:date) AUTORES(lcod:char(5), autor:varchar2(40)) lcod:char(5) autor:varchar2(40) AUTORES(lcod:char(5), autor:varchar2(40)) PRESTAMO(scod:char(5), lcod:char(5), scod:char(5) lcod:char(5) PRESTAMO(scod:char(5), lcod:char(5), fecha_pre:date, fecha_pre:date fecha_pre:date, fecha_dev:date) fecha_dev:date) Bases de Datos Curso 2005/06 DSIC-UPV 4 2 Solución 2 SOCIO(scod:char(5), scod:char(5) nombre:varchar2(60), SOCIO(scod:char(5), nombre:varchar2(60), dirección:varchar2(50), dirección:varchar2(50), tel:varchar2(20), tel:varchar2(20), libros:number(3)) libros:number(3)) LIBRO(lcod:char(5), lcod:char(5) titulo:varchar(100), LIBRO(lcod:char(5), titulo:varchar(100), tematica:varchar(15)) tematica:varchar(15)) AUTORES(lcod:char(5), autor:varchar2(40)) lcod:char(5) autor:varchar2(40) AUTORES(lcod:char(5), autor:varchar2(40)) PRESTAMO(scod:char(5), lcod:char(5), scod:char(5) lcod:char(5) PRESTAMO(scod:char(5), lcod:char(5), fecha_pre:date, fecha_pre:date fecha_pre:date, fecha_dev:date) fecha_dev:date) Bases de Datos Curso 2005/06 DSIC-UPV 5 Ejercicios Tareas: Tareas: a) Cargar una solución de la base de datos en el sistema ORACLE9i. b) Crear los disparadores necesarios para mantener el dato derivado de forma automática. c) Realizar actualizaciones y consultas sobre la base de datos creada Bases de Datos Curso 2005/06 DSIC-UPV 6 3