Database
 sql >> Datenbank >  >> RDS >> Database

Servieren von leckerem Essen (und Daten) – Ein Datenmodell für Restaurants

Welche Rolle spielt das Datenbankdesign beim Betreiben eines Restaurants? Wie könnte das Datenmodell für eine Restaurantdatenbank aussehen? Finde es in diesem Artikel heraus.

Ein Restaurant versorgt die Menschen mit Fertiggerichten. Dies ist eine Art von Geschäft, das auf der ganzen Welt floriert, und oft mit viel Flair. Die Menschen fühlen sich in Restaurants sehr wohl und erwarten allmählich eine große Auswahl an Optionen, wenn es um ihre nächste Mahlzeit geht.

Allein in New York City gibt es mehr als 24.000 Restaurants. Dazu gehören Imbissbuden (z. B. Pizza, Sub-Läden, chinesischer Imbiss), Feinkostläden, Cafés und Gourmetrestaurants. Der folgende Spruch passt sehr gut zur Gastronomie; es ist praktisch ihr universelles Leitbild:

Machen Sie das, was Sie tun, so gut, dass sie es noch einmal sehen und ihre Freunde und Familie mitbringen möchten.

Walt Disney

Warum brauchen Restaurants Datenbanken?

Restaurantführung ist keine leichte Aufgabe. Wenn es darum geht, den Überblick zu behalten und die täglichen Aufgaben zu erledigen, kann selbst der erfahrenste Gastronom mehr haben, als er leicht bewältigen kann. Der Betrieb eines profitablen Restaurants erfordert die Verwaltung von Inventar/Lagerbeständen, die Minimierung von Verschwendung, die Verwaltung von Tischen (insbesondere in Stoßzeiten), die Pflege einer kundenfreundlichen Speisekarte, die effiziente Ausführung von Bestellungen und die Überwachung des Restaurantpersonals. Das ist ziemlich viel!

Ein Restaurantmanagementsystem muss die meisten dieser Aktivitäten mit minimalem manuellen Eingriff ausführen. Es muss den Managern genaue Informationen liefern, damit sie die Kunden zufrieden stellen können. Dies kann bedeuten, dass entsprechende Änderungen an der Speisekarte und sogar an der Funktionsweise des Restaurants vorgenommen werden.

Das Restaurant-Datenmodell

In diesem Artikel geht es darum, ein vollwertiges Datenmodell für ein Restaurant (Dine-in oder Takeaway) zu entwerfen. Wir werden auch zwei große Probleme ansprechen, denen Menschen in der Gastronomie bei ihren täglichen Aktivitäten begegnen. Abschließend werden wir über die Änderungen nachdenken, die erforderlich sind, um diese Funktionen in ein bestehendes System einzubauen.

Während wir in das Datenmodell eintauchen, werde ich bestimmte Benutzerrollen erwähnen. Diese Rollen sind eigentlich für Mitarbeiter, wie zum Beispiel:

  • Manager – Verwaltet Inventar, Gehaltsabrechnung, Mitarbeiterplanung und Metriken für das Restaurant
  • Gastgeber – Platziert Gäste und weist Tischen Server zu
  • Kellner (auch als Kellner bekannt) – Bringt die Bestellungen der Kunden in die Küche und liefert die vorbereitete Bestellung an den Kunden
  • Supervisor (auch bekannt als Koch oder Küchenchef) – Überwacht Aufgaben in der Küche und weist Köchen Aufgaben zu
  • Koch – Liest die vom Vorgesetzten erhaltenen Bestelldetails, bereitet das Essen zu und informiert den Vorgesetzten, wenn es fertig ist
  • Busboy – Verfolgt, welche Tische verwendet werden; bereinigt Tabellen und aktualisiert ihren Status nach Bedarf

Ein Datenmodell für einen Gastronomiebetrieb muss folgende elementare Merkmale aufweisen:

  • KOT (Kitchen Order Token)-Verwaltung
  • KOD-Management (Küchenbestellungslieferung)
  • Menüverwaltung

Sehen wir uns jede dieser Funktionen im Detail an.

KOT (Kitchen Order Token) Management

Dies ist der wichtigste Teil unseres Datenmodells:Es geht darum, Bestelldaten von Kunden über verschiedene Kanäle zu sammeln. Warum verschiedene Kanäle? Denn es gibt mehrere Möglichkeiten, wie Bestellungen aufgegeben werden können – online oder über eine mobile App, per Telefonanruf oder durch Kellner oder andere Mitarbeiter. Immer wenn ein Kunde eine Bestellung aufgibt, wird ein KOT (Kitchen Order Token) generiert. Schließlich wird das KOT vom Küchenpersonal zubereitet.

Ich erstelle eine Tabelle, kot , um die vorläufigen Bestelldetails zu speichern. Diese Tabelle hat die folgenden Spalten:


Spaltenname Beschreibung
Id Der Primärschlüssel für diese Tabelle
order_channel_id Der Kanal, über den die Bestellung aufgegeben wird.
dine_in_table_sitting_id Die Tabelle, aus der die Bestellung stammt. Diese Spalte wird nur bei Dine-in-Bestellungen ausgefüllt.
order_in_time Der Zeitstempel, wenn die Bestellung im System angemeldet wird
order_out_time Der Zeitstempel, wenn die Bestellung vom Küchenpersonal geliefert wird
staff_id Die ID der Person, die die Bestellung abholt. Bei Dine-in-Bestellungen enthält diese Spalte die ID des Kellners, der die Bestellung abholt. In anderen Einstellungen wäre diese ID „SYSTEM“.
kot_status_id Definiert den aktuellen Status eines KOT.


Ich möchte darauf hinweisen, dass eine Bestellung, die gleichzeitig von einem Tisch abgeholt wird, unter einer kot_id gekennzeichnet ist . Wenn derselbe Tisch später weitere Artikel bestellt, generiert das System eine weitere kot_id und markiert alle diese neuen Artikel unter dieser ID. Am Ende alle kot_ids für denselben Tisch werden in der Endabrechnung zusammengerechnet.

Die KOT-Verwaltung erfordert zusätzliche statische und Transaktionstabellen, die wie folgt sind:

  • order_channel – Diese Tabelle enthält Details zu den Kanälen, die ein Restaurant verwendet, um Bestellungen anzunehmen. Gängige Beispiele sind Online, Essen im Restaurant, Mitnehmen (mitnehmen) usw.
  • dine_in_table_sitting – Dies ist eine Transaktionstabelle, die Daten zur Tabellenbelegung speichert. Seine Spalten enthalten dine_in_table_id , dine_in_time , dine_out_time , num_person_sitting und customer_id . Sobald der Gastgeber einen Kunden einem Tisch zuweist und die Informationen in das System eingibt, wird ein Datensatz in diesen Tisch eingefügt. Um jederzeit den aktuellen Belegungsstatus von Tischen abzurufen, wird dieser Tisch verwendet.

    Angenommen, Sie möchten dieses Feature erstellen. Hier ist die SQL, die Ihnen den aktuellen Belegungsstatus für alle Restauranttische mitteilt:

    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 – Diese Tabelle enthält alle möglichen Status für einen KOT:Auftrag erhalten , Bestellung in Bearbeitung , Bestellung geliefert usw.
  • kot_menu_item – Diese Transaktionstabelle speichert die Details aller Artikel in einem KOT. Es definiert auch die Beziehung zwischen dem KOT und einem menu_item . Die menu_item_id und quantity Felder gegen eine kot_id bezeichnen den bestellten Artikel und wie viel davon benötigt wird.

KOD-Management (Küchenbestellungslieferung)

Ein großer Teil der Leistung eines Restaurants läuft auf die Verwaltung von KOT in der Küche hinaus. Normalerweise sammelt ein Vorgesetzter KOTs von Kellnern, anderen Mitarbeitern oder einem Online-System. Dann ordnet der Supervisor die Menüpunkte einem oder mehreren Köchen zu. Der Koch bereitet die Speisen vor und übergibt sie dem Betreuer. Dann holt der Kellner oder ein anderer Mitarbeiter die Bestellung ab und bringt sie zum Kunden.

Aber das ist noch nicht alles, was das KOD-Management beinhaltet. Das Verwalten von Ressourcen, das Bevorraten von Zutaten, das regelmäßige Aktualisieren von Restbeständen und das Anfordern neuer Bestände bei Bedarf gehören ebenfalls zum täglichen Betrieb der Küche. Der Supervisor spielt eine herausragende Rolle für den reibungslosen Ablauf der Küche, insbesondere während der Stoßzeiten. Ein System gilt als „intelligent“ oder „intelligent“, wenn es die Arbeitsfunktionen eines Vorgesetzten nachbilden kann – was an den meisten Orten nahezu unmöglich ist.

Um ein Modell für dieses komplexe Managementelement zu erstellen, erstelle ich eine weitere Tabelle mit dem Namen KOD . Diese Tabelle besteht aus den folgenden Spalten:


Spaltenname Beschreibung
Id Primärschlüssel für diese Tabelle
kot_menu_item_id Bezeichnet das KOT-Element, an dem das Küchenpersonal gerade arbeitet
staff_id Speichert die ID des Kochs, der das Gericht zubereitet
kod_status_id Zeigt den aktuellen Status des Artikels


Menüverwaltung

Diese Komponente ist ebenso wichtig wie das KOT- und KOD-Management. Die Speisekarte – sowohl in ihrer visuellen Präsentation als auch in den angebotenen Gerichten – ist eines der ersten Dinge, die Kunden anziehen. Daher versucht jeder Gastronom seine Speisekarte so verlockend wie möglich zu gestalten.

Lassen Sie uns eine weitere Tabelle erstellen, um Menüdetails zu speichern. Ich werde Spalten für alle Details hinzufügen, die wir normalerweise in einem Menü sehen:


Spaltenname Beschreibung
Id Der Primärschlüssel der Tabelle
Item_name Ein Kurzname für einen Menüpunkt
Item_category_id Gibt die Küchenkategorie des Artikels an:Italienisch, Kontinental usw.
Item_desc Enthält Artikeldetails wie eine Zutatenliste oder wie der Artikel zubereitet wird (gebacken, gedünstet usw.)
Item_image Ein auffälliges Bild des Artikels.
cost Die Kosten des Artikels


Reale Restaurantprobleme mit Daten lösen

Einige Probleme sind in der Welt der Gastronomie sehr häufig. Insbesondere denke ich an lange Wartezeiten, sowohl um an einem Tisch zu sitzen als auch um sein Essen zu bekommen. Diese Probleme können oft zumindest teilweise durch eine bessere Organisation und Nutzung von Restaurantdaten gelöst werden.

In einem Dine-in-Ambiente ist für Kunden kaum etwas ärgerlicher, als lange auf einen Tisch warten zu müssen. Um die Wartezeiten der Kunden während der Stoßzeiten zu minimieren, muss der Status einzelner Tische genau überwacht werden. Wenn die Tische und das Personal nicht richtig verwaltet werden, beginnen die Wartezeiten der Kunden zu wachsen. Wenn die Wartezeiten zu lang sind, können Kunden gehen und nach einem anderen Restaurant suchen, das sie schnell bedient.

Man kann diesem Problem begegnen, indem man bestimmte Änderungen an diesem Datenmodell vornimmt. Diese Änderungen würden:

  1. Fügen Sie Echtzeit-Tischverwaltung hinzu, eine digitalisierte Methode zur Verwaltung der Tischverfügbarkeit, Statusverfolgung und Nutzungsraten.
  2. Verringern Sie die Tischdurchlaufzeit, indem Sie die Effizienz des Personals messen und eine effektive Personalplanung ermöglichen – zum Beispiel durch die Zusammenstellung eines Reinigungsteams und die Zuweisung von Personal zu einem Tisch oder einer Gruppe von Tischen.
  3. Veröffentlichen Sie den Echtzeitstatus einzelner Tische auf den Bildschirmen der Manager, damit sie alle lang anstehenden Aktivitäten im Auge behalten können.

Ein weiteres Problem besteht darin, die Kunden auf ihr Essen warten zu lassen. Sowohl für Dine-in- als auch für Takeaway-Kunden kann dies unterstützt werden, indem Status-Updates direkt an das Diner gesendet werden. Die Überwachung des Status einzelner KOTs ist hier von entscheidender Bedeutung. Während der KOT in der Küche fortschreitet, wird sein Status im KOT Tisch. Dieser Mechanismus informiert Kunden in Echtzeit über den Status ihrer Bestellungen.




Wie können wir dieses Restaurantdatenmodell verbessern?

Es gibt so viele innovative Ideen, die Restaurantbesitzer und -betreiber entwickeln, um ihre Kunden zu gewinnen und zu halten. Zum Beispiel:

  • Viele führen Kundenbindungsprogramme durch. Diese führen ein Treuekonto für Kunden und geben Gästen Punkte für jeden Besuch, Einkauf usw. Die Gäste können diese Punkte nach Belieben gegen verschiedene Prämien einlösen (normalerweise etwas kostenloses Essen, einen Prozentsatz ihres Schecks oder eine kostenlose Mahlzeit). .
  • Einige Restaurants gestalten ihre Menüpunkte so individuell wie möglich. Sie erlauben ihren Gästen, Zutaten für Salate oder Pasta zu wählen, oder sie ersetzen Lebensmittel, um bestimmte diätetische Einschränkungen zu erfüllen.

Die Bestandsverwaltung ist ein weiterer Bereich, der eine wichtige Rolle dabei spielt, ein Restaurant rentabel zu machen.

Können wir diese Fähigkeiten in dieses Datenmodell einbauen? Teilen Sie Ihre Gedanken im Kommentarbereich unten mit.