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 :
Books & Libraries
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 à laliterature_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 aubook
tableau.author_id
– Référence leauthor
tableau.authorship_role_id
– Fait référence auauthorship_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 aubook
tableau.library_id
– Référence lalibrary
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 lacity
table. Cette connexion nous permettra également de déterminer à la fois la ville et le pays de la maison d'édition. Lepublishing_house_name
–city_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 lacity
table. Lelibrary_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 aucountry
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 lacity
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 lebook_item
tableau.member_id
– Référence lemember
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 ledate_returned
et ledate_due
. Cela peut être NULL car un livre qui est rendu à temps n'a pas d'amende.loan_status_id
– Fait référence auloan_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.