Database
 sql >> Base de données >  >> RDS >> Database

Un modèle de données de bibliothèque

Quel modèle de données vous permettrait de rechercher confortablement des livres et de les emprunter dans votre bibliothèque locale ?

Êtes-vous déjà allé dans une bibliothèque et avez-vous emprunté un livre ? Peut-être que cela semble démodé dans le monde actuel de la connaissance instantanée d'Internet et des livres électroniques. Mais je suis sûr qu'il y a toujours cette partie analogique de vous qui aime toujours sentir, toucher et lire des livres. Ou peut-être avez-vous été obligé d'utiliser une bibliothèque alors que vous ne pouviez pas trouver quelque chose sur Internet ! Oui, tout n'est pas en ligne.

Alors, comment un modèle de données organiserait-il les livres de bibliothèque et les prêts ? Plongeons-nous directement dans ce modèle et voyons comment cela fonctionne !

Le modèle de données

J'avais en tête les bibliothèques publiques lorsque j'ai créé ce modèle de données. On suppose que chaque bibliothèque du réseau de bibliothèques publiques utilise le même modèle/système. Il est centralisé et permet aux membres de parcourir la collection de chaque bibliothèque du réseau. De plus, les membres peuvent emprunter des livres dans n'importe quelle bibliothèque du réseau.

Le modèle de données de la bibliothèque se compose de treize tableaux divisés en deux domaines. Ces zones sont :

  1. Books & Libraries
  2. Members & Loans



Nous examinerons chaque domaine séparément et analyserons tous les détails.

Livres et bibliothèques

Ce domaine stocke des informations sur les livres et les bibliothèques. Il se compose de dix tableaux :

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

La première table est le author table. Il répertorie tous les auteurs (ainsi que leurs détails pertinents) des livres que la bibliothèque possède dans sa collection. Pour chaque auteur, nous aurons :

  • id – Un identifiant unique pour cet auteur.
  • author_name – Le prénom de l'auteur.
  • author_name – Le nom de famille de l'auteur.
  • date_birth – La date de naissance de l'auteur.
  • date_death – La date du décès de l'auteur.

Le authorship_role Le tableau répertorie tous les rôles qu'un auteur peut avoir, par ex. auteur, co-auteur, etc. Cette table a les attributs suivants :

  • id – Un ID unique pour chaque rôle.
  • role_name – Le nom de ce rôle, par ex. "coauteur". Il s'agit de la clé alternative de la table.

Le tableau literature_category répertorie toutes les catégories de livres, par ex. thriller, littérature française, réalisme russe, philosophie, etc. Le tableau contient les attributs suivants :

  • id – Un identifiant unique pour cette catégorie.
  • category_name – Le nom de la catégorie, par ex. "mystère". Il s'agit de la clé alternative de la table.

Ensuite, nous avons le book table. Cette table stocke tous les détails pertinents de chaque titre que la bibliothèque possède dans sa collection. Veuillez noter qu'il ne s'agit pas du tableau utilisé pour chaque livre en tant qu'élément. Pour cela, nous allons utiliser une autre table, à savoir le book_item table. Le book table se compose des attributs :

  • isbn – Un identifiant unique pour chaque titre de livre, qui dans l'industrie de l'édition est le numéro international normalisé du livre (ISBN).
  • book_title – Le titre du livre.
  • literature_category_id – Fait référence à la literature_category tableau.
  • publishing_house_id – Fait référence à publishing_house tableau.
  • year_published – L'année de publication du livre.

Le tableau suivant dans notre modèle est le book_authorship table. C'est une table de croisement qui sera connectée au book , author , et authorship_role les tables. Il contient les attributs suivants :

  • book_id – Fait référence au book tableau.
  • author_id – Référence le author tableau.
  • authorship_role_id – Fait référence au authorship_role tableau.

Ces trois attributs forment ensemble la clé primaire composée de la table. Une clé primaire composite signifie que toute combinaison des trois attributs doit être unique ; chaque combinaison ne peut se produire qu'une seule fois.

Regardons maintenant le book_item table, que nous avons mentionnée précédemment comme stockant des informations pour chaque livre physique dans une bibliothèque. Il contiendra les informations suivantes :

  • id – Un identifiant unique pour chaque livre en tant qu'élément.
  • isbn – Fait référence au book tableau.
  • library_id – Référence la library tableau.

La table 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 est la suivante dans notre modèle. Il répertorie les éditeurs de tous les livres que la bibliothèque possède dans sa collection. Les attributs du tableau sont les suivants :

  • id – Un identifiant unique pour chaque maison d'édition.
  • publishing_house_name – Le nom de la maison d'édition (par exemple Penguin Books, McGraw-Hill, Simon &Schuster, etc.).
  • city_id – Référence la city table. Cette connexion nous permettra également de déterminer à la fois la ville et le pays de la maison d'édition. Le publishing_house_namecity_id paire est la clé alternative de cette table.

Bon, passons à la library table. Ce tableau est référencé dans le book_item table, où il définit la bibliothèque où se trouve chaque copie d'un livre. Cela est nécessaire car les mêmes titres de livres peuvent être trouvés dans plusieurs bibliothèques d'un réseau (par exemple, chaque bibliothèque a probablement au moins un exemplaire de Le Seigneur des Anneaux ). Par conséquent, nous devons savoir quel livre se trouve dans quelle bibliothèque. Pour ce faire, nous aurons besoin des attributs suivants :

  • id – Un identifiant unique pour la bibliothèque.
  • library_name – Le nom de cette bibliothèque.
  • address – L'adresse de cette bibliothèque.
  • city_id – Référence la city table. Le library_name - city_id paire est la clé alternative de cette table.

Le tableau suivant dans ce modèle est la city table. Il s'agit d'une simple liste de villes que nous utiliserons pour obtenir des informations sur les éditeurs, les bibliothèques et les membres de la bibliothèque. Les attributs sont :

  • id – Un identifiant unique pour la ville.
  • postal_code – Le code postal de cette ville.
  • city_name – Le nom de cette ville.
  • country_id – Fait référence au country tableau.

Après cela, il ne reste qu'un seul tableau dans ce domaine :le country table. Voici une liste de tous les pays où se trouvent nos bibliothèques et/ou éditeurs de livres. Il se compose des attributs suivants :

  • id – Un identifiant unique pour chaque pays.
  • country_name – Le nom du pays. Il s'agit de la clé alternative de la table.

Examinons ensuite le deuxième domaine.

Membres et prêts

Le but de ce domaine est de gérer les informations sur les membres de la bibliothèque et les livres qu'ils empruntent. Il se compose de trois tableaux :

  • member
  • loaned_book
  • loan_status

Parlons maintenant des tables.

Le premier tableau de cette zone est le member table. Il contient toutes les informations pertinentes sur les membres de la bibliothèque. Ses attributs sont les suivants :

  • id – Un identifiant unique pour chaque membre.
  • name – Le prénom du membre.
  • surname – Le nom de famille du membre.
  • address – L'adresse du membre.
  • city_id – Référence la city tableau.
  • email_address – L'adresse e-mail du membre.
  • phone_number – Le numéro de téléphone du membre.

Le tableau suivant est le loaned_book table. Il stocke des informations sur tous les livres qui ont déjà été prêtés. De cette façon, nous pouvons suivre l'inventaire de la bibliothèque et le statut de tous les livres prêtés. Ce tableau est composé des attributs suivants :

  • id – Un identifiant unique pour chaque livre prêté.
  • book_item_id – Référence le book_item tableau.
  • member_id – Référence le member tableau.
  • date_loaned – La date à laquelle ce livre a été prêté.
  • date_due – La date à laquelle ce livre doit être rendu.
  • date_returned – La date à laquelle le livre a été effectivement rendu à la bibliothèque; cela peut être NULL car nous ne connaîtrons pas la date tant que le livre ne sera pas rendu.
  • overdue_fine – Les frais de retard (le cas échéant) payés par le membre, qui sont généralement calculés en fonction de la différence entre le date_returned et le date_due . Cela peut être NULL car un livre qui est rendu à temps n'a pas d'amende.
  • loan_status_id – Fait référence au loan_status tableau.
  • ts – L'horodatage auquel ce statut de prêt a été saisi.

Le loan_status table est la dernière de notre modèle de données. Il s'agit simplement d'une liste de tous les statuts de prêt possibles, par ex. actif, en retard, renvoyé, etc. Ce tableau comprendra les attributs suivants :

  • id – Un identifiant unique pour chaque statut de prêt.
  • status_name – Un nom décrivant le statut du prêt. Il s'agit de la clé alternative de la table.

C'est tout - nous avons passé en revue tous les détails de notre modèle de données !

Que pensez-vous du modèle de données de la bibliothèque ?

Nous avons couvert les principes généraux de ce modèle, il devrait donc en être ainsi (avec quelques ajustements) pour chaque bibliothèque. Connaissez-vous des détails de bibliothèque que nous avons manqués? Ou peut-être avez-vous trouvé le modèle utile et facilement applicable ? Exprimez-vous dans la section des commentaires.