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

Conception d'un modèle de données pour un système de réservation de chambres d'hôtel

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.