Ejercicios de modelado lógico relacional de bases de datos · Ejercicio: (avanzado) biblioteca

Ejercicio: (avanzado) biblioteca

Puedes preparar tu diagrama. .

Enunciado #

Una biblioteca universitaria necesita gestionar su catálogo y los préstamos realizados a los estudiantes. Los libros pueden tener varios autores, pertenecen a una categoría y pueden prestarse varias veces a lo largo del tiempo. Un préstamo puede incluir varios libros.

Datos que debes almacenar #

  • Estudiante: id_estudiante (entero, identificador), nombre (texto), apellido (texto), fecha_nacimiento (fecha) y carrera (texto).
  • Categoria: id_categoria (entero, identificador) y nombre (texto; ciencia, literatura, historia, etc.).
  • Libro: id_libro (entero, identificador), titulo (texto), anio_publicacion (entero), numero_paginas (entero) e id_categoria (entero).
  • Autor: id_autor (entero, identificador), nombre (texto), apellido (texto) y nacionalidad (texto).
  • LibroAutor: id_libro (entero) e id_autor (entero).
  • Prestamo: id_prestamo (entero, identificador), fecha_inicio (fecha), fecha_fin (fecha, opcional hasta la devolución) e id_estudiante (entero).
  • DetallePrestamo: id_prestamo (entero) e id_libro (entero).

Reglas del negocio #

  1. Cada libro pertenece a una única categoría y una categoría puede contener varios libros.
  2. Un libro puede tener uno o varios autores y un autor puede escribir varios libros. Usa (id_libro, id_autor) como PK compuesta de LibroAutor.
  3. Cada préstamo corresponde a un único estudiante y un estudiante puede realizar muchos préstamos.
  4. Cada préstamo incluye uno o varios libros y un libro puede aparecer en varios préstamos a lo largo del tiempo. Usa (id_prestamo, id_libro) como PK compuesta de DetallePrestamo.
  5. El mismo libro no puede repetirse dentro de un préstamo, pero sí aparecer en un préstamo posterior. No marques DetallePrestamo.id_libro como único.
  6. Las fechas corresponden al préstamo completo. Para concretar el significado de la fecha final, se considera la devolución efectiva de todos los libros de ese préstamo; no se contemplan devoluciones parciales ni fechas de vencimiento separadas.
  7. Si existe fecha_fin, no puede ser anterior a fecha_inicio. La existencia de al menos un autor por libro y de una línea por préstamo requiere validación adicional al implementar la base de datos.

Diseña las siete tablas y resuelve las dos relaciones N:N. Se mantiene el alcance del documento: no se añade gestión separada de ejemplares físicos, reservas o multas.

Criterios para el challenge #

Conserva los nombres de tablas y campos indicados; los nombres de campos están escritos sin tildes y con guiones bajos. Los tipos entre paréntesis corresponden a las opciones del editor. Todos los campos son obligatorios (NN), salvo los marcados como opcionales; marca las claves primarias (PK), foráneas (FK) y las restricciones de unicidad que se deducen de las reglas.

Deja desactivados autoincremento, clave alternativa e índice. Deja vacíos el valor por defecto, las acciones ON DELETE y ON UPDATE y, salvo que se indique expresamente, CHECK. Usa los extremos 1 y n, o 1 y 1, en las conexiones; una FK opcional tiene NN desmarcado.

Una PK compuesta identifica por la combinación de sus campos: no marques cada componente como único por separado. Si una FK referencia una PK compuesta, dibuja una conexión por cada pareja de campos; todas juntas representan una única referencia a la misma fila. En una implementación SQL se debe declarar una sola FOREIGN KEY con todas esas columnas, no varias referencias independientes. El editor no comprueba por sí solo las reglas sobre varias filas ni todas las restricciones compuestas.

Cargando actividad al acercarte…