Quel rôle joue la conception de bases de données dans la gestion d'un restaurant ? À quoi pourrait ressembler le modèle de données d'une base de données de restaurants ? Découvrez-le dans cet article.
Un restaurant sert aux gens des plats cuisinés. C'est un type d'entreprise qui prospère partout dans le monde, et souvent avec beaucoup de dynamisme. Les gens se sentent très à l'aise d'aller au restaurant et ils commencent à s'attendre à un large éventail d'options pour leur prochain repas.
Rien qu'à New York, il y a plus de 24 000 établissements de restauration. Ceux-ci incluent les plats à emporter (c'est-à-dire les pizzas, les sous-magasins, les plats à emporter chinois), les épiceries fines, les cafés et les restaurants gastronomiques. Le dicton suivant correspond très bien à l'industrie de la restauration ; c'est pratiquement leur énoncé de mission universel :
Faites ce que vous faites si bien qu'ils voudront le revoir et amener leurs amis et leur famille avec vous.
Walt Disney
Pourquoi les restaurants ont-ils besoin de bases de données ?
La gestion d'un restaurant n'est pas une tâche facile. Lorsqu'il s'agit de suivre et d'exécuter les tâches quotidiennes, même le restaurateur le plus expérimenté peut en avoir plus qu'il ne peut facilement gérer. Gérer un restaurant rentable nécessite de gérer les stocks, de minimiser les déchets, de gérer les tables (en particulier aux heures de pointe), de maintenir un menu convivial, d'exécuter efficacement les commandes et de superviser le personnel du restaurant. C'est beaucoup !
Un système de gestion de restaurant doit effectuer la plupart de ces activités avec une intervention manuelle minimale. Il doit présenter aux gestionnaires des informations précises afin qu'ils puissent satisfaire les clients. Cela peut signifier apporter des modifications appropriées au menu et même au fonctionnement du restaurant.
Le modèle de données des restaurants
Cet article porte sur la conception d'un modèle de données complet pour un restaurant (sur place ou à emporter). Nous aborderons également deux gros problèmes que les gens de la restauration rencontrent dans leurs activités quotidiennes. Enfin, nous réfléchirons aux changements nécessaires pour intégrer ces fonctionnalités dans un système existant.
En plongeant dans le modèle de données, je mentionnerai certains rôles d'utilisateur. Ces rôles sont en fait pour les membres du personnel, tels que :
- Gestionnaire :gère l'inventaire, la paie, la planification des employés et les statistiques du restaurant
- Hôte – Place les invités et affecte les serveurs aux tables
- Serveur (également appelé serveur) :prend les commandes des clients en cuisine et livre la commande préparée au client
- Superviseur (également connu sous le nom de chef ou chef cuisinier) – Supervise les tâches dans la cuisine et attribue des tâches aux cuisiniers
- Cuisinier :lit les détails de la commande reçus du superviseur, prépare la nourriture et informe le superviseur lorsqu'elle est prête
- Busboy – Garde une trace des tables utilisées ; nettoie les tables et met à jour leur statut si nécessaire
Un modèle de données pour une entreprise de restauration doit avoir les caractéristiques élémentaires suivantes :
- Gestion des KOT (Kitchen Order Token)
- Gestion des KOD (Kitchen Order Delivery)
- Gestion des menus
Examinons chacune de ces fonctionnalités en détail.
Gestion des KOT (Kitchen Order Token)
Il s'agit de la partie la plus importante de notre modèle de données :il s'agit de collecter les détails des commandes des clients via différents canaux. Pourquoi plusieurs canaux ? Parce qu'il existe plusieurs façons de passer des commandes - en ligne ou via une application mobile, par des appels téléphoniques ou par l'intermédiaire de serveurs ou d'autres employés. Chaque fois qu'une commande est passée par un client, un KOT (Kitchen Order Token) est généré. A terme, le KOT sera préparé par le personnel de cuisine.
Je vais créer un tableau, kot
, pour conserver les détails de la commande préliminaire. Ce tableau comporte les colonnes suivantes :
Nom de colonne | Description |
---|---|
Id | La clé primaire de cette table |
order_channel_id | Le canal par lequel la commande est passée. |
dine_in_table_sitting_id | La table d'où provient la commande. Cette colonne sera renseignée uniquement dans le cas des commandes au restaurant. |
order_in_time | L'horodatage lorsque la commande est enregistrée dans le système |
order_out_time | L'horodatage lorsque la commande est livrée par le personnel de cuisine |
staff_id | L'identifiant de la personne qui récupère la commande. Dans le cas des commandes au restaurant, cette colonne contient l'identifiant du serveur qui récupère la commande. Dans d'autres paramètres, cet ID serait "SYSTEM". |
kot_status_id | Définit l'état actuel d'un KOT. |
Je tiens à souligner qu'une commande collectée à partir d'une table à la fois est étiquetée sous un kot_id
. Si la même table commande plus tard plus d'articles, le système générera un autre kot_id et marquera tous ces nouveaux articles sous cet ID. Au final, tous les kot_ids
pour une même table seront additionnés dans la facture finale.
La gestion de KOT nécessite des tables statiques et transactionnelles supplémentaires, qui sont :
order_channel
– Ce tableau contient des détails sur les canaux qu'un restaurant utilise pour accepter les commandes. Les exemples courants incluent en ligne, sur place, à emporter (à emporter), etc.-
dine_in_table_sitting
– Il s'agit d'une table transactionnelle qui stocke les données d'occupation de la table. Ses colonnes incluentdine_in_table_id
,dine_in_time
,dine_out_time
,num_person_sitting
, etcustomer_id
. Dès que l'hébergeur affecte un client à une table et saisit les informations dans le système, un enregistrement est inséré dans cette table. Pour récupérer le statut d'occupation actuel des tables à un moment donné, c'est la table qui sera utilisée.Supposons que vous souhaitiez créer cette fonctionnalité. Voici le SQL qui vous indiquera le statut d'occupation actuel pour toutes les tables du restaurant :
SELECT b.id as table_id, c.area_desc, CASE WHEN a.dine_in_table_id IS NULL THEN ‘VACANT’ ELSE ‘OCCUPIED’ END AS current_table_status FROM dine_in_table_sitting a, dine_in_table b, dine_in_table_area WHERE a.dine_in_table_id (+) = b.id AND b.dine_in_table_area = c.id AND a.dine_out_time IS NULL;
kot_status
– Ce tableau contient tous les statuts possibles pour un KOT :commande reçue , commande en cours , commande livrée , etc.kot_menu_item
– Cette table transactionnelle stocke les détails de tous les éléments d'un KOT. Il définit également la relation entre le KOT et unmenu_item
. Lemenu_item_id
etquantity
champs contre unkot_id
indiquer l'article commandé et la quantité nécessaire.
Gestion des KOD (Kitchen Order Delivery)
Une grande partie de la performance d'un restaurant se résume à la gestion de KOT à l'intérieur de la cuisine. Habituellement, un superviseur collecte les KOT auprès des serveurs, d'autres employés ou d'un système en ligne. Ensuite, le superviseur attribue les éléments du menu à un ou plusieurs cuisiniers. Le cuisinier prépare les articles et les remet au superviseur. Ensuite, le serveur ou un autre membre du personnel récupère la commande et la livre au client.
Mais ce n'est pas tout ce que comprend la gestion KOD. La gestion des ressources, le stockage des ingrédients, la mise à jour régulière de l'inventaire restant et la demande d'un nouvel inventaire au besoin font également partie du fonctionnement quotidien de la cuisine. Le superviseur joue un rôle de premier plan dans le bon fonctionnement de la cuisine, en particulier pendant les heures de pointe. Un système est considéré comme « intelligent » ou « intelligent » s'il peut reproduire les fonctions d'un superviseur, ce qui est presque impossible dans la plupart des endroits.
Pour créer un modèle pour cet élément de gestion complexe, je vais créer une autre table, nommée KOD
. Ce tableau se compose des colonnes suivantes :
Nom de colonne | Description |
---|---|
Id | Clé primaire pour cette table |
kot_menu_item_id | Signifie l'élément KOT sur lequel le personnel de cuisine travaille actuellement |
staff_id | Stocke l'ID du cuisinier qui prépare l'article |
kod_status_id | Affiche l'état actuel de l'élément |
Gestion des menus
Ce composant est aussi important que la gestion des KOT et KOD. Le menu – tant dans sa présentation visuelle que dans les plats qu'il propose – est l'une des premières choses qui attire les clients. Ainsi, chaque restaurateur essaie de garder son menu aussi attrayant que possible.
Créons une autre table pour contenir les détails du menu. Je vais ajouter des colonnes pour tous les détails que nous voyons habituellement sur un menu :
Nom de colonne | Description |
---|---|
Id | La clé primaire de la table |
Item_name | Un nom court pour un élément de menu |
Item_category_id | Indique la catégorie de cuisine de l'article :italienne, continentale, etc. |
Item_desc | Contient des détails sur l'article, comme une liste d'ingrédients ou la façon dont l'article est préparé (cuit, cuit à la vapeur, etc.) |
Item_image | Une image flashy de l'article. |
cost | Coût de l'article |
Résoudre les problèmes réels des restaurants grâce aux données
Certains problèmes sont extrêmement courants dans le monde de la restauration. En particulier, je pense aux longs délais d'attente, tant pour s'asseoir à une table que pour obtenir sa nourriture. Ces problèmes peuvent souvent être au moins partiellement résolus par une meilleure organisation et utilisation des données des restaurants.
Dans un restaurant, peu de choses sont plus ennuyeuses pour les clients que de devoir attendre longtemps pour une table. Minimiser les temps d'attente des clients pendant les heures de pointe nécessite de surveiller de près l'état des tables individuelles. S'il n'y a pas une bonne gestion des tables et du personnel, les temps d'attente des clients commencent à augmenter. Si les temps d'attente sont trop longs, les clients peuvent partir et chercher un autre restaurant qui les servira rapidement.
On peut répondre à cette préoccupation en introduisant certaines modifications à ce modèle de données. Ces changements :
- Ajoutez la gestion des tables en temps réel, une manière numérisée de gérer la disponibilité des tables, le suivi de l'état et les taux d'utilisation.
- Réduire le temps de traitement des tables en mesurant l'efficacité du personnel et en permettant une planification efficace des effectifs, par exemple en constituant une équipe de nettoyage et en affectant le personnel à une table ou à un groupe de tables.
- Publier l'état en temps réel des tables individuelles sur les écrans des responsables, afin qu'ils puissent garder un œil sur les activités en attente depuis longtemps.
Un autre problème est de faire attendre les clients pour leur nourriture. Pour les clients des restaurants et des plats à emporter, cela peut être facilité en fournissant des mises à jour de statut directement au restaurant. La surveillance de l'état des KOT individuels est ici vitale. Au fur et à mesure que le KOT progresse dans la cuisine, son statut est mis à jour dans le KOT
table. Ce mécanisme donne une mise à jour en temps réel aux clients sur l'état de leurs commandes.
Comment pouvons-nous améliorer ce modèle de données de restaurant ?
Il y a tellement d'idées innovantes que les restaurateurs et les exploitants proposent pour attirer et fidéliser leurs clients. Par exemple :
- Beaucoup proposent des programmes de fidélisation de la clientèle. Ceux-ci maintiennent un compte de fidélité pour les clients et donnent des points aux clients pour chaque visite, achat, etc. Les convives peuvent échanger ces points comme et quand ils le souhaitent pour diverses récompenses (généralement de la nourriture gratuite, un pourcentage de leur chèque ou un repas gratuit) .
- Certains restaurants rendent leurs éléments de menu aussi personnalisables que possible. Ils permettent à leurs convives de choisir des ingrédients pour les salades ou les pâtes, ou ils substituent des aliments pour répondre à certaines restrictions alimentaires.
La gestion des stocks est un autre domaine qui joue un rôle prépondérant dans la rentabilité d'un restaurant.
Pouvons-nous intégrer ces capacités dans ce modèle de données ? Partagez vos impressions dans la section des commentaires ci-dessous.