Il est de notoriété publique que la meilleure façon d'apprendre quelque chose est de le pratiquer dans un scénario réel. Évidemment, il en va de même pour la modélisation de base de données. Par conséquent, dans cet article, j'ai décidé de vous apprendre à créer une structure de base de données simple, en prenant un exemple classique d'un système de réservation de chambres d'hôtel. Je vais vous montrer comment démarrer et vous donner quelques idées pour étendre le modèle.
Modélisation de base de données :découvrir, découvrir, découvrir
Dans cet article, nous allons concevoir un modèle de données pour un système de réservation de chambres d'hôtel. Nous recherchons un modèle de données où nous pouvons représenter des informations sur les chambres, les clients et les réservations réservées dans notre hôtel imaginaire VERTABELO*****. Toutes ces informations seront stockées dans des tableaux.
La modélisation de base de données est un processus de découverte cyclique. Nous identifions d'abord les tables principales et ses attributs. Dans notre modèle, les tables principales sont :room
, guest
et reservation
. Puis on continue à affiner nos tableaux en découvrant leurs attributs ou colonnes. Par exemple, la room
la table a des attributs comme :pièce number
, name
et smoke
drapeau entre autres.
Reservation
la table a des attributs date_in
, date_out
, status
(annulé, confirmé) et made_by
(online, in_person, phone, mail), tandis que les attributs de la table guest
sont :first_name
, last_name
et member_since
. Peut-être avez-vous envie de la reservation
la table a besoin de plus d'attributs (comme le type de chambre, le nombre de lits), nous aborderons ce point plus tard, jusque-là, considérez notre reservation
tableau incomplet. Le modèle de données suivant créé dans Vertabelo montre les tables principales.
Types de données :quels sont les domaines des valeurs autorisées pour une colonne ?
Notez que chaque colonne a un type de données (varchar, entier, date, booléen) pour indiquer quel type de valeurs peut être assigné à la colonne. Par exemple, la colonne smoke
sur table room
est booléen type de données, ce qui signifie que seuls vrai ou faux sont les valeurs autorisées.
Clés primaires :le numéro de sécurité sociale de chaque enregistrement
Chaque table doit avoir une colonne (ou plusieurs) servant d'identifiant pour chaque enregistrement de la table. Cette colonne s'appelle la clé primaire (PK), et les meilleures pratiques de conception de base de données suggèrent que chaque table doit avoir une PK.
Si nous jetons un coup d'œil au modèle de données précédent de Vertabelo, nous verrons que chaque table a une colonne appelée id
avec un indicateur PK sur la droite. Ces colonnes id forment le PK (par convention, nous nommons id
la colonne PK).
Un concept important, peut-être évident pour de nombreux lecteurs, est qu'une colonne PK ne peut pas avoir de valeurs en double. En d'autres termes, chaque colonne PK a une contrainte unique, et toute tentative de création d'un nouvel enregistrement avec une valeur dupliquée sera rejetée avec une erreur par le gestionnaire de la base de données.
Continuez à découvrir ; Rechercher de nouveaux objets de base de données
Une réservation est l'un des éléments les plus complexes à représenter dans ce modèle de données. Une réservation peut être associée à plusieurs chambres (par exemple "Je souhaite réserver une chambre double et une chambre séparée avec 3 lits pour mes enfants"). Cette exigence métier ajoute 4 éléments à notre modèle :
Un nouveau tableau : Nous devons créer une nouvelle table appelée room_reserved
, où nous stockons toutes les chambres appartenant à une réservation.
Ajoutez deux références : Une référence est un élément très important dans un modèle de données. Une référence décrit comment une table est liée à une autre table. Dans notre modèle, chaque chambre réservée appartient à une réservation, nous utiliserons donc une référence pour modéliser ce fait. Cette référence est représentée graphiquement par une ligne reliant les deux tables.
De plus, comme chaque réservation appartient à un seul invité, nous devons créer une nouvelle référence reliant le guest
et la reservation
les tables.
Déplacer une colonne : Comme nous pouvons avoir plusieurs chambres appartenant à une réservation, nous devons autoriser l'annulation par chambre individuelle, après quoi nous déplaçons l'attribute
statut de reservation
à reserved_room
tableau.
Le modèle de données mis à jour est illustré dans le diagramme suivant conçu dans Vertabelo :
Qu'advient-il des tables liées par une référence ?
Lorsque nous créons une référence entre deux tables, une nouvelle colonne est ajoutée à l'une des tables. Cette colonne qui vient d'être ajoutée s'appelle une clé étrangère et agit comme un pointeur vers l'autre table permettant les connexions entre les tables. Par exemple, regardez les schémas suivants :
Fig. 1 Tableaux reservation
et guest
avant et après l'ajout d'une référence
Continuez à découvrir ; Optez pour plus
Un point en attente de modélisation est le fait que les chambres peuvent être utilisées par certains clients pendant un certain temps. Pour représenter ce fait commercial, nous avons ajouté 2 tables :hosted_at
et occupied_room
.
Notez que chaque personne ayant séjourné à l'hôtel aura un enregistrement dans hosted_at
. Cet enregistrement comportera une référence à la chambre qu'il/elle occupait et au client. C'est pourquoi hosted_at
a une double référence vers guest
et occupied_room
.
Le tableau occupied_room
aura un enregistrement pour chaque chambre louée, sur cet enregistrement, nous pouvons trouver les champs :check_in
et check_out
de type horodatage indiquant le début et la fin de la location. Un type de données d'horodatage stocke un point dans le temps avec une précision arbitraire. Chaque occupied_room
l'enregistrement aura également une référence au numéro de la chambre louée et indirectement via hosted_at
aux invités qui ont séjourné dans cette chambre.
Nous avons également ajouté le tableau room_type
au modèle de données ; l'idée est de regrouper les chambres par catégorie de chambre ou type de chambre. Par exemple, « standard un lit double », « luxe 2 lits doubles » peuvent être des descriptions de type. Nous avons également un attribut max_capacity ici.
Exercices : La conception de bases de données est une discipline facile à aborder, cependant, il faut du temps pour devenir un expert en la matière. Si vous faites vos premiers pas dans la conception d'une base de données, veuillez essayer de compléter le modèle de données actuel pour permettre :
- Si deux invités ou plus partagent une chambre, autorisez un enregistrement et un départ différents pour chaque invité.
- Dans certains cas, les hôtels peuvent modifier la configuration des chambres (par exemple, passer d'un lit double standard à 2 lits doubles de luxe). Ajoutez au modèle de données les éléments pour représenter ces modifications de configuration, en conservant l'historique de chaque pièce.