Database
 sql >> Base de Dados >  >> RDS >> Database

Um modelo de dados de biblioteca


Qual ​​modelo de dados permitiria que você procurasse livros confortavelmente e os emprestasse em sua biblioteca local?

Você já foi a uma biblioteca e pegou um livro emprestado? Talvez isso pareça antiquado no mundo atual de conhecimento instantâneo da Internet e e-books. Mas tenho certeza de que ainda existe essa parte analógica de você que ainda gosta de cheirar, tocar e ler livros. Ou talvez você tenha sido forçado a usar uma biblioteca quando não conseguiu encontrar algo na internet! Sim, nem tudo é online.

Então, como um modelo de dados organizaria os livros e empréstimos da biblioteca? Vamos mergulhar nesse modelo e ver como ele funciona!

O modelo de dados


Eu tinha bibliotecas públicas em mente quando criei este modelo de dados. Há uma suposição de que todas as bibliotecas da rede de bibliotecas públicas usam o mesmo modelo/sistema. É centralizado e permite que os membros naveguem na coleção de todas as bibliotecas da rede. Além disso, os membros podem emprestar livros de qualquer biblioteca da rede.

O modelo de dados da biblioteca consiste em treze tabelas divididas em duas áreas temáticas. Essas áreas são:
  1. Books & Libraries
  2. Members & Loans




Passaremos por cada área de assunto separadamente e analisaremos todos os detalhes.

Livros e Bibliotecas


Esta área de assunto armazena informações sobre livros e bibliotecas. É composto por dez tabelas:
  • author
  • authorship_role
  • literature_category
  • book
  • book_authorship
  • book_item
  • publishing_house
  • library
  • city
  • country

A primeira tabela é o author tabela. Ele lista todos os autores (mais seus detalhes relevantes) dos livros que a biblioteca possui em seu acervo. Para cada autor, teremos:
  • id – Um ID exclusivo para esse autor.
  • author_name – O primeiro nome do autor.
  • author_surname – O sobrenome do autor.
  • date_birth – Data de nascimento do autor.
  • date_death – A data da morte do autor.

O authorship_role tabela lista todas as funções que um autor pode ter, por exemplo, autor, coautor etc. Esta tabela possui os seguintes atributos:
  • id – Um ID exclusivo para cada função.
  • role_name – O nome dessa função, por exemplo, “coautor”. Esta é a chave alternativa da tabela.

A tabela literature_category lista todas as categorias de livros, por exemplo, thriller, literatura francesa, realismo russo, filosofia, etc. A tabela contém os seguintes atributos:
  • id – Um ID exclusivo para essa categoria.
  • category_name – O nome da categoria, por ex. "mistério". Esta é a chave alternativa da tabela.

Em seguida, temos o book tabela. Esta tabela armazena todos os detalhes relevantes de cada título que a biblioteca possui em sua coleção. Observe que esta não é a tabela usada para cada livro como um item. Para isso, usaremos outra tabela, a book_item tabela. O book tabela consiste nos atributos:
  • isbn – Um ID exclusivo para cada título de livro, que na indústria editorial é o International Standard Book Number (ISBN).
  • book_title – O título do livro.
  • literature_category_id – Referencia a literature_category tabela.
  • publishing_house_id – Faz referência à publishing_house tabela.
  • year_published – O ano em que o livro foi publicado.

A próxima tabela em nosso modelo é a book_authorship tabela. É uma tabela de interseção que será conectada ao book , author e authorship_role mesas. Ele contém os seguintes atributos:
  • book_id – Faz referência ao book tabela.
  • author_id – Refere-se ao author tabela.
  • authorship_role_id – Refere-se ao authorship_role tabela.

Esses três atributos juntos formam a chave primária composta da tabela. Uma chave primária composta significa que qualquer combinação de todos os três atributos deve ser exclusiva; cada combinação pode ocorrer apenas uma vez.

Agora vamos ver o book_item table, que mencionamos anteriormente como armazenamento de informações para cada livro físico em uma biblioteca. Ele conterá as seguintes informações:
  • id – Um ID exclusivo para cada livro como um item.
  • isbn – Faz referência ao book tabela.
  • library_id – Faz referência à library tabela.

A tabela 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 é a próxima em nosso modelo. Ele lista os editores de todos os livros que a biblioteca possui em sua coleção. Os atributos na tabela são os seguintes:
  • id – Um ID exclusivo para cada editora.
  • publishing_house_name – O nome da editora (por exemplo, Penguin Books, McGraw-Hill, Simon &Schuster, etc.).
  • city_id – Faz referência à city tabela. Essa conexão também nos permitirá determinar a cidade e o país da editora. O publishing_house_namecity_id par é a chave alternativa desta tabela.

Ok, vamos para a library tabela. Esta tabela é referenciada no book_item table, onde define a biblioteca onde se encontra cada exemplar de um livro. Isso é necessário porque os mesmos títulos de livros podem ser encontrados em mais de uma biblioteca em uma rede (por exemplo, cada biblioteca provavelmente tem pelo menos uma cópia de O Senhor dos Anéis ). Portanto, temos que saber qual livro está em qual biblioteca. Para isso, precisaremos dos seguintes atributos:
  • id – Um ID exclusivo para a biblioteca.
  • library_name – O nome dessa biblioteca.
  • address – O endereço dessa biblioteca.
  • city_id – Faz referência à city tabela. O library_name - city_id par é a chave alternativa desta tabela.

A próxima tabela neste modelo é a city tabela. É uma lista simples de cidades que usaremos para obter informações sobre editoras, bibliotecas e membros de bibliotecas. Os atributos são:
  • id – Um ID exclusivo para a cidade.
  • postal_code – O código postal dessa cidade.
  • city_name – O nome dessa cidade.
  • country_id – Refere-se ao country tabela.

Depois disso, resta apenas uma tabela nesta área de assunto:o country tabela. Esta é uma lista de todos os países onde nossas bibliotecas e/ou editoras de livros estão localizadas. É composto pelos seguintes atributos:
  • id – Um ID exclusivo para cada país.
  • country_name – O nome do país. Esta é a chave alternativa para a tabela.

Em seguida, vamos examinar a segunda área de assunto.

Membros e empréstimos


O objetivo desta área temática é gerenciar informações sobre os membros da biblioteca e os livros que eles emprestam. É composto por três tabelas:
  • member
  • loaned_book
  • loan_status

Agora vamos falar sobre as tabelas.

A primeira tabela nesta área é o member tabela. Ele contém todas as informações relevantes sobre os membros da biblioteca. Seus atributos são os seguintes:
  • id – Um ID exclusivo para cada membro.
  • name – O primeiro nome do membro.
  • surname – O sobrenome do membro.
  • address – O endereço do membro.
  • city_id – Faz referência à city tabela.
  • email_address – O endereço de e-mail do membro.
  • phone_number – O número de telefone do membro.

A próxima tabela é o loaned_book tabela. Ele armazena informações sobre todos os livros que já foram emprestados. Dessa forma, podemos acompanhar o inventário da biblioteca e o status de quaisquer livros emprestados. Esta tabela consiste nos seguintes atributos:
  • id – Um ID exclusivo para cada livro emprestado.
  • book_item_id – Faz referência ao book_item tabela.
  • member_id – Refere-se ao member tabela.
  • date_loaned – A data em que este livro foi emprestado.
  • date_due – A data em que este livro deve ser devolvido.
  • date_returned – A data em que o livro foi efetivamente devolvido à biblioteca; isso pode ser NULL porque não saberemos a data até que o livro seja devolvido.
  • overdue_fine – A taxa de atraso (se houver) paga pelo membro, que geralmente é calculada com base na diferença entre o date_returned e o date_due . Isso pode ser NULL porque um livro devolvido no prazo não tem multa.
  • loan_status_id – Faz referência ao loan_status tabela.
  • ts – O carimbo de data/hora em que o status do empréstimo foi inserido.

O loan_status table é a última em nosso modelo de dados. É simplesmente uma lista de todos os status de empréstimo possíveis, por exemplo, ativo, vencido, devolvido, etc. Esta tabela será composta pelos seguintes atributos:
  • id – Um ID exclusivo para cada status de empréstimo.
  • status_name – Um nome que descreve o status do empréstimo. Esta é a chave alternativa para a tabela.

É isso – passamos por todos os detalhes do nosso modelo de dados!

O que você acha do modelo de dados da biblioteca?


Cobrimos os princípios gerais neste modelo, então deve ser (com alguns ajustes) para cada biblioteca. Você conhece algum específico da biblioteca que perdemos? Ou talvez você tenha achado o modelo útil e facilmente aplicável? Dê sua opinião na seção de comentários.