sql >> Base de Datos >  >> RDS >> Database

Un modelo de datos de biblioteca

¿Qué modelo de datos le permitiría buscar cómodamente libros y pedirlos prestados en su biblioteca local?

¿Alguna vez has ido a una biblioteca y has pedido prestado un libro? Tal vez eso parezca anticuado en el mundo actual de conocimiento instantáneo de Internet y libros electrónicos. Pero estoy seguro de que todavía existe esta parte analógica de ti a la que todavía le gusta oler, tocar y leer libros. ¡O tal vez se vio obligado a usar una biblioteca cuando no pudo encontrar algo en Internet! Sí, no todo es en línea.

Entonces, ¿cómo organizaría un modelo de datos los libros y préstamos de la biblioteca? ¡Vamos a sumergirnos en este modelo y ver cómo funciona!

El modelo de datos

Tenía bibliotecas públicas en mente cuando creé este modelo de datos. Se supone que todas las bibliotecas de la red de bibliotecas públicas utilizan el mismo modelo/sistema. Está centralizado y permite a los miembros navegar por la colección de todas las bibliotecas de la red. Además, los miembros pueden tomar prestados libros de cualquier biblioteca de la red.

El modelo de datos de la biblioteca consta de trece tablas divididas en dos áreas temáticas. Esas áreas son:

  1. Books & Libraries
  2. Members & Loans



Revisaremos cada área temática por separado y analizaremos todos los detalles.

Libros y Bibliotecas

Esta área temática almacena información sobre libros y bibliotecas. Consta de diez tablas:

  • author
  • authorship_role
  • literature_category
  • book
  • book_authorship
  • book_item
  • publishing_house
  • library
  • city
  • country

La primera tabla es el author mesa. Enumera todos los autores (más sus detalles relevantes) de los libros que la biblioteca tiene en su colección. Para cada autor, tendremos:

  • id – Una identificación única para ese autor.
  • author_name – El primer nombre del autor.
  • author_surname – El apellido del autor.
  • date_birth – La fecha de nacimiento del autor.
  • date_death – La fecha de la muerte del autor.

El authorship_role La tabla enumera todos los roles que puede tener un autor, p. autor, coautor, etc. Esta tabla tiene los siguientes atributos:

  • id – Una identificación única para cada rol.
  • role_name – El nombre de ese rol, p. "coautor". Esta es la clave alternativa de la tabla.

La tabla literature_category enumera todas las categorías de libros, p. thriller, literatura francesa, realismo ruso, filosofía, etc. La tabla contiene los siguientes atributos:

  • id – Una identificación única para esa categoría.
  • category_name – El nombre de la categoría, p. "misterio". Esta es la clave alternativa de la tabla.

A continuación, tenemos el book mesa. Esta tabla almacena todos los detalles relevantes de cada título que la biblioteca tiene en su colección. Tenga en cuenta que esta no es la tabla utilizada para cada libro como elemento. Para eso, usaremos otra tabla, a saber, el book_item mesa. El book la tabla consta de los atributos:

  • isbn – Una identificación única para cada título de libro, que en la industria editorial es el Número Estándar Internacional de Libros (ISBN).
  • book_title – El título del libro.
  • literature_category_id – Hace referencia a la literature_category mesa.
  • publishing_house_id – Hace referencia a la publishing_house mesa.
  • year_published – El año en que se publicó el libro.

La siguiente tabla en nuestro modelo es book_authorship mesa. Es una tabla de intersección que estará conectada al book , author y authorship_role mesas. Contiene los siguientes atributos:

  • book_id – Hace referencia al book mesa.
  • author_id – Hace referencia al author mesa.
  • authorship_role_id – Hace referencia al authorship_role mesa.

Estos tres atributos juntos forman la clave primaria compuesta de la tabla. Una clave principal compuesta significa que cualquier combinación de los tres atributos debe ser única; cada combinación puede ocurrir solo una vez.

Ahora veamos el book_item table, que mencionamos anteriormente como almacenamiento de información para cada libro físico en una biblioteca. Contendrá la siguiente información:

  • id – Una identificación única para cada libro como un artículo.
  • isbn – Hace referencia al book mesa.
  • library_id – Hace referencia a la library mesa.

La tabla The publishing_house table is the next one in our model. It lists the publishers of all the books that the library has in its collection. The attributes in the table are as follows: table es la siguiente en nuestro modelo. Enumera los editores de todos los libros que la biblioteca tiene en su colección. Los atributos de la tabla son los siguientes:

  • id – Un ID único para cada editorial.
  • publishing_house_name – El nombre de la editorial (por ejemplo, Penguin Books, McGraw-Hill, Simon &Schuster, etc.).
  • city_id – Hace referencia a la city mesa. Esta conexión también nos permitirá determinar tanto la ciudad como el país de la editorial. El publishing_house_namecity_id par es la clave alternativa de esta tabla.

Bien, pasemos a la library mesa. Se hace referencia a esta tabla en el book_item table, donde define la biblioteca donde se guarda cada ejemplar de un libro. Esto es necesario porque los mismos títulos de libros se pueden encontrar en más de una biblioteca en una red (por ejemplo, cada biblioteca probablemente tenga al menos una copia de El Señor de los Anillos ). Por lo tanto, tenemos que saber qué libro está en qué biblioteca. Para lograr eso, necesitaremos los siguientes atributos:

  • id – Una identificación única para la biblioteca.
  • library_name – El nombre de esa biblioteca.
  • address – La dirección de esa biblioteca.
  • city_id – Hace referencia a la city mesa. El library_name - city_id par es la clave alternativa de esta tabla.

La siguiente tabla en este modelo es la city mesa. Es una lista simple de ciudades que usaremos para obtener información sobre editores, bibliotecas y miembros de bibliotecas. Los atributos son:

  • id – Una identificación única para la ciudad.
  • postal_code – El código postal de esa ciudad.
  • city_name – El nombre de esa ciudad.
  • country_id – Hace referencia al country mesa.

Después de eso, solo queda una tabla en esta área temática:el country mesa. Esta es una lista de todos los países donde se encuentran nuestras bibliotecas y/o editoriales de libros. Consta de los siguientes atributos:

  • id – Una identificación única para cada país.
  • country_name – El nombre del país. Esta es la clave alternativa para la tabla.

A continuación, examinemos la segunda área temática.

Miembros y Préstamos

El propósito de esta área temática es administrar la información sobre los miembros de la biblioteca y los libros que toman prestados. Consta de tres tablas:

  • member
  • loaned_book
  • loan_status

Ahora hablemos de las tablas.

La primera tabla en esta área es el member mesa. Contiene toda la información relevante sobre los miembros de la biblioteca. Sus atributos son los siguientes:

  • id – Una identificación única para cada miembro.
  • name – El nombre del miembro.
  • surname – El apellido del miembro.
  • address – La dirección del miembro.
  • city_id – Hace referencia a la city mesa.
  • email_address – La dirección de correo electrónico del miembro.
  • phone_number – El número de teléfono del miembro.

La siguiente tabla es el loaned_book mesa. Almacena información sobre todos los libros que se han prestado alguna vez. De esta manera, podemos realizar un seguimiento del inventario de la biblioteca y el estado de los libros prestados. Esta tabla consta de los siguientes atributos:

  • id – Una identificación única para cada libro prestado.
  • book_item_id – Hace referencia al book_item mesa.
  • member_id – Hace referencia al member mesa.
  • date_loaned – La fecha en que se prestó este libro.
  • date_due – La fecha en que se debe devolver este libro.
  • date_returned – La fecha en que el libro fue efectivamente devuelto a la biblioteca; esto puede ser NULL porque no sabremos la fecha hasta que se devuelva el libro.
  • overdue_fine – El recargo por pago atrasado (si lo hubiere) pagado por el miembro, que normalmente se calcula en función de la diferencia entre el date_returned y el date_due . Esto puede ser NULL porque un libro que se devuelve a tiempo no tiene multa.
  • loan_status_id – Hace referencia al loan_status mesa.
  • ts – La marca de tiempo cuando se ingresó el estado del préstamo.

El loan_status La tabla es la última en nuestro modelo de datos. Es simplemente una lista de todos los estados de préstamo posibles, p. activo, vencido, devuelto, etc. Esta tabla constará de los siguientes atributos:

  • id – Una identificación única para cada estado de préstamo.
  • status_name – Un nombre que describa el estado del préstamo. Esta es la clave alternativa para la tabla.

Eso es todo:¡hemos revisado todos los detalles de nuestro modelo de datos!

¿Qué opina sobre el modelo de datos de la biblioteca?

Hemos cubierto los principios generales en este modelo, por lo que debería ser (con algunos ajustes) para cada biblioteca. ¿Conoces algún detalle de la biblioteca que nos hayamos perdido? ¿O tal vez encontró el modelo útil y fácilmente aplicable? Dé su opinión en la sección de comentarios.