Database
 sql >> Baza danych >  >> RDS >> Database

Serwowanie pysznego jedzenia (i danych) — model danych dla restauracji

Jaką rolę w prowadzeniu restauracji odgrywa projektowanie baz danych? Jak może wyglądać model danych dla bazy danych restauracji? Dowiedz się w tym artykule.

Restauracja serwuje ludziom gotowe potrawy. Jest to rodzaj biznesu, który kwitnie na całym świecie i często ma dużo błysku. Ludzie czują się bardzo komfortowo chodząc do restauracji i zaczynają oczekiwać szerokiej gamy opcji, jeśli chodzi o ich następny posiłek.

W samym Nowym Jorku istnieje ponad 24 000 lokali gastronomicznych. Należą do nich dania na wynos (tj. pizza, sklepy podrzędne, chińskie dania na wynos), delikatesy, kawiarnie i eleganckie restauracje. Poniższe powiedzenie bardzo dobrze pasuje do branży restauracyjnej; to praktycznie ich uniwersalna misja:

Rób to, co robisz tak dobrze, że będą chcieli zobaczyć to ponownie i zabrać ze sobą swoich przyjaciół i rodzinę.

Walt Disney

Dlaczego restauracje potrzebują baz danych?

Zarządzanie restauracją nie jest łatwym zadaniem. Jeśli chodzi o śledzenie i wykonywanie codziennych zadań, nawet najbardziej doświadczony restaurator może mieć więcej, niż jest w stanie łatwo zarządzać. Prowadzenie rentownej restauracji wymaga zarządzania zapasami/magazynami, minimalizowania odpadów, zarządzania stolikami (zwłaszcza w godzinach szczytu), utrzymywania przyjaznego dla klienta menu, sprawnej realizacji zamówień i nadzorowania personelu restauracji. To całkiem sporo!

System zarządzania restauracją musi wykonywać większość tych czynności przy minimalnej interwencji ręcznej. Musi przedstawiać menedżerom dokładne informacje, aby mogli zadowolić klientów. Może to oznaczać wprowadzenie odpowiednich zmian w menu, a nawet sposobie funkcjonowania restauracji.

Model danych restauracji

Ten artykuł dotyczy zaprojektowania pełnoprawnego modelu danych dla restauracji (na miejscu lub na wynos). Zajmiemy się również dwoma dużymi problemami, które ludzie w branży restauracyjnej napotykają w swojej codziennej działalności. Na koniec pomyślimy o zmianach potrzebnych do wbudowania tych możliwości w istniejący system.

Zagłębiając się w model danych, wspomnę o pewnych rolach użytkowników. Te role są w rzeczywistości dla członków personelu, takie jak:

  • Menedżer – zarządza zapasami, listami płac, harmonogramami pracowników i wskaźnikami dla restauracji
  • Host – Rozmieszcza gości i przypisuje serwery do stołów
  • Kelner (znany również jako serwer) – Zabiera zamówienia klientów do kuchni i dostarcza przygotowane zamówienie do klienta
  • Nadzorca (znany również jako szef kuchni lub szef kuchni) – nadzoruje zadania w kuchni i przydziela zadania kucharzom
  • Gotuj – odczytuje szczegóły zamówienia otrzymane od przełożonego, przygotowuje jedzenie i informuje przełożonego, kiedy jest gotowe
  • Budzik – śledzi, które stoły są używane; czyści tabele i aktualizuje ich status w razie potrzeby

Model danych dla działalności restauracyjnej musi mieć następujące podstawowe cechy:

  • Zarządzanie KOT (tokenem zamówienia kuchennego)
  • Zarządzanie KOD (dostawa do kuchni)
  • Zarządzanie menu

Przyjrzyjmy się szczegółowo każdej z tych funkcji.

Zarządzanie KOT (tokenem zamówienia kuchennego)

To najważniejsza część naszego modelu danych:chodzi o zbieranie szczegółów zamówień od klientów różnymi kanałami. Dlaczego różne kanały? Ponieważ zamówienia można składać na kilka sposobów – online lub przez aplikację mobilną, telefonicznie lub przez kelnerów lub innych pracowników. Za każdym razem, gdy klient składa zamówienie, generowany jest KOT (Kitchen Order Token). Docelowo KOT zostanie przygotowany przez pracowników kuchni.

Utworzę tabelę, kot , aby przechowywać wstępne szczegóły zamówienia. Ta tabela zawiera następujące kolumny:


Nazwa kolumny Opis
Id Klucz podstawowy dla tej tabeli
order_channel_id Kanał, przez który składane jest zamówienie.
dine_in_table_sitting_id Tabela, z której pochodzi zamówienie. Ta kolumna będzie wypełniona tylko w przypadku zamówień posiłków na miejscu.
order_in_time Stempel czasowy, kiedy zamówienie jest rejestrowane w systemie
order_out_time Stempel czasu dostarczenia zamówienia przez personel kuchenny
staff_id Identyfikator osoby odbierającej zamówienie. W przypadku zamówień na posiłki w tej kolumnie znajduje się identyfikator kelnera odbierającego zamówienie. W innych ustawieniach ten identyfikator to „SYSTEM”.
kot_status_id Definiuje aktualny status KOT.


Chciałbym zaznaczyć, że zamówienie zebrane z jednej tabeli jednocześnie jest oznaczone jednym kot_id . Jeśli ta sama tabela później zamówi więcej produktów, system wygeneruje kolejny kot_id i oznaczy wszystkie nowe produkty tym identyfikatorem. W końcu wszystkie kot_ids dla tej samej tabeli zostaną zsumowane w ostatecznym rachunku.

Zarządzanie KOT wymaga dodatkowych tabel statycznych i transakcyjnych, które są:

  • order_channel – Ta tabela zawiera szczegółowe informacje o kanałach, za pomocą których restauracja przyjmuje zamówienia. Typowe przykłady to:online, zjeść na miejscu, na wynos (wykonać) itp.
  • dine_in_table_sitting – To jest tabela transakcyjna, która przechowuje dane o zajętości stołu. Jego kolumny zawierają dine_in_table_id , dine_in_time , dine_out_time , num_person_sitting i customer_id . Gdy tylko host przypisze klienta do tabeli i wprowadzi informacje do systemu, do tej tabeli wstawiany jest rekord. Ten stół będzie używany do pobrania aktualnego stanu zajętości stołów w dowolnym momencie.

    Załóżmy, że chcesz zbudować tę funkcję. Oto kod SQL, który informuje o aktualnym stanie zajętości wszystkich stołów w restauracji:

    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 – Ta tabela zawiera wszystkie możliwe statusy dla KOT:odebrano zamówienie , zamówienie w toku , zamówienie dostarczone itp.
  • kot_menu_item – Ta tabela transakcyjna przechowuje szczegóły wszystkich pozycji w KOT. Definiuje również związek między KOT a menu_item . menu_item_id i quantity pola z kot_id oznacz przedmiot na zamówieniu i ile jest potrzebne.

Zarządzanie KOD (dostawa do kuchni)

Duża część tego, jak dobrze radzi sobie restauracja, sprowadza się do zarządzania KOT w kuchni. Zwykle przełożony zbiera KOT od kelnerów, innych pracowników lub systemu internetowego. Następnie przełożony przypisuje pozycje menu do jednego lub kilku kucharzy. Kucharz przygotowuje przedmioty i przekazuje je przełożonemu. Następnie kelner lub inny pracownik odbiera zamówienie i dostarcza je do klienta.

Ale to nie wszystko, co obejmuje zarządzanie KOD. Zarządzanie zasobami, magazynowanie składników, regularne aktualizowanie pozostałych zapasów i żądanie nowych zapasów w razie potrzeby jest również częścią codziennej pracy kuchni. Nadzorca odgrywa znaczącą rolę w sprawnym funkcjonowaniu kuchni, zwłaszcza w godzinach szczytu. System jest uważany za „inteligentny” lub „inteligentny”, jeśli może odtworzyć funkcje pracy przełożonego – co w większości miejsc jest prawie niemożliwe.

Aby zbudować model dla tego złożonego elementu zarządzania, stworzę kolejną tabelę o nazwie KOD . Ta tabela składa się z następujących kolumn:


Nazwa kolumny Opis
Id Klucz podstawowy dla tej tabeli
kot_menu_item_id Oznacza przedmiot KOT, nad którym aktualnie pracuje personel kuchenny
staff_id Przechowuje identyfikator kucharza, który przygotowuje produkt
kod_status_id Pokazuje aktualny stan elementu


Zarządzanie menu

Ten składnik jest równie ważny jak zarządzanie KOT i KOD. Menu – zarówno w swojej wizualnej prezentacji, jak i w oferowanych daniach – jest jedną z pierwszych rzeczy, które przyciągają klientów. Dlatego każdy restaurator stara się, aby ich menu było jak najbardziej kuszące.

Stwórzmy kolejną tabelę do przechowywania szczegółów menu. Dodam kolumny dla wszystkich szczegółów, które zwykle widzimy w menu:


Nazwa kolumny Opis
Id Klucz podstawowy tabeli
Item_name Krótka nazwa pozycji menu
Item_category_id Oznacza kategorię kuchni produktu:włoska, kontynentalna itp.
Item_desc Zawiera szczegóły przedmiotu, takie jak lista składników lub sposób przygotowania przedmiotu (pieczenie, gotowanie na parze itp.)
Item_image Błyszczący obraz przedmiotu.
cost Koszt przedmiotu


Rozwiązywanie rzeczywistych problemów restauracji za pomocą danych

Niektóre problemy są niezwykle powszechne w świecie gastronomii. W szczególności mam na myśli długi czas oczekiwania, zarówno na usiąść przy stole, jak i po jedzenie. Problemy te często można przynajmniej częściowo rozwiązać, lepiej organizując i wykorzystując dane restauracji.

W lokalu gastronomicznym niewiele rzeczy jest bardziej irytujących dla klientów niż konieczność długiego oczekiwania na stolik. Zminimalizowanie czasu oczekiwania klientów w godzinach szczytu wymaga ścisłego obserwowania stanu poszczególnych stolików. Brak odpowiedniego zarządzania stołami i personelem powoduje, że czas oczekiwania klientów zaczyna się wydłużać. Jeśli czas oczekiwania jest zbyt długi, klienci mogą wyjść i poszukać innej restauracji, która szybko ich obsłuży.

Można rozwiązać ten problem, wprowadzając pewne zmiany do tego modelu danych. Te zmiany:

  1. Dodaj zarządzanie stołami w czasie rzeczywistym, cyfrowy sposób zarządzania dostępnością stołów, śledzeniem stanu i wskaźnikami wykorzystania.
  2. Skróć czas obsługi stołu, mierząc wydajność personelu i umożliwiając efektywne planowanie siły roboczej – na przykład poprzez zgromadzenie ekipy sprzątającej i przypisanie personelu do stołu lub grupy stołów.
  3. Publikuj status poszczególnych stołów w czasie rzeczywistym na ekranach menedżerów, aby mogli mieć oko na wszelkie długo oczekujące działania.

Kolejnym problemem jest zmuszanie klientów do czekania na jedzenie. Zarówno w przypadku klientów jedzących na miejscu, jak i na wynos można w tym pomóc, udostępniając aktualizacje statusu bezpośrednio w restauracji. Monitorowanie stanu poszczególnych KOT jest tutaj kluczowe. W miarę postępów KOT w kuchni, jego status jest aktualizowany w KOT stół. Ten mechanizm zapewnia klientom aktualizację w czasie rzeczywistym o statusie ich zamówień.




Jak możemy ulepszyć ten model danych restauracji?

Istnieje tak wiele innowacyjnych pomysłów, które wymyślają właściciele i operatorzy restauracji, aby przyciągnąć i zatrzymać swoich klientów. Na przykład:

  • Wielu prowadzi programy lojalnościowe dla klientów. Utrzymują one konto lojalnościowe dla klientów i dają gościom punkty za każdą wizytę, zakup itp. Klienci mogą spieniężyć te punkty, kiedy chcą, na różne nagrody (zwykle trochę darmowego jedzenia, procent od czeku lub bezpłatny posiłek) .
  • Niektóre lokale gastronomiczne umożliwiają jak najbardziej spersonalizowane dostosowywanie pozycji menu. Pozwalają swoim gościom wybrać składniki do sałatek lub makaronów lub zastępują żywność, aby spełnić pewne ograniczenia dietetyczne.

Zarządzanie zapasami to kolejny obszar, który odgrywa znaczącą rolę w zwiększaniu rentowności restauracji.

Czy możemy wbudować te możliwości w ten model danych? Podziel się swoimi przemyśleniami w sekcji komentarzy poniżej.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Praca z danymi JDBC spoza ASCII w Talend

  2. Łączenie RDBMS i NoSQL:wprowadzenie do klastra 2DX UI

  3. Jak obliczyć sumę biegową w przesunięciu ku czerwieni?

  4. Tworzenie kopii zapasowych i przywracanie bazy danych z obsługą FILESTREAM

  5. Podstawowe polecenia SQL:jak pisać proste zapytania z przykładami