Repaso
English
Bases de datos y SQLIntermedioDB-49

Diseña un esquema relacional para una biblioteca (libros, autores, socios, préstamos). Explica las relaciones.

Respuesta

  • authors(id, name), books(id, title, isbn UNIQUE), members(id, name, email UNIQUE).
  • Libro y autor es muchos a muchos (un libro puede tener varios autores): tabla de unión book_authors(book_id, author_id).
  • Un libro puede tener varias copias físicas: copies(id, book_id FK, status).
  • loans(id, copy_id FK, member_id FK, loaned_at, due_at, returned_at NULL): uno a muchos de socio a préstamos y de copia a préstamos.
  • Restricciones: primary keys, foreign keys, NOT NULL, UNIQUE (isbn, email), CHECK (due_at > loaned_at).
  • Índices en las foreign keys y en las columnas de búsqueda (title). Normaliza hasta 3NF; desnormaliza solo con un motivo medido.
  • Ejemplo de consulta: socios con préstamos vencidos: WHERE returned_at IS NULL AND due_at < now().

Términos clave

Practica esta pregunta en Repaso