sql >> Databáze >  >> RDS >> Database

Servírování vynikajících jídel (a dat) – datový model pro restaurace

Jakou roli hraje návrh databáze při provozování restaurace? Jak může vypadat datový model pro databázi restaurace? Dozvíte se v tomto článku.

Restaurace slouží lidem s hotovým jídlem. Jedná se o typ podnikání, který vzkvétá po celém světě a často s velkým vzplanutím. Lidé se při návštěvě restaurací cítí velmi pohodlně a začínají očekávat širokou škálu možností, pokud jde o další jídlo.

Jen v New Yorku je více než 24 000 stravovacích zařízení. Patří mezi ně jídlo s sebou (tj. pizza, pobočkové obchody, čínské jídlo s sebou), lahůdkářství, kavárny a luxusní restaurace. Následující úsloví velmi dobře odpovídá restauračnímu průmyslu; je to prakticky jejich univerzální poslání:

Dělejte to, co děláte tak dobře, že to budou chtít vidět znovu a vzít s sebou své přátele a rodinu.

Walt Disney

Proč restaurace potřebují databáze?

Správa restaurace není snadný úkol. Pokud jde o sledování a provádění každodenních úkolů, i ten nejzkušenější restauratér může mít více, než může snadno zvládnout. Provozování ziskové restaurace vyžaduje správu zásob/zásob, minimalizaci odpadu, správu stolů (zejména ve špičce), udržování zákaznicky přívětivého menu, efektivní vyřizování objednávek a dohled nad personálem restaurace. To je docela hodně!

Systém řízení restaurace musí většinu těchto činností provádět s minimálními manuálními zásahy. Musí manažerům předkládat přesné informace, aby byli zákazníci spokojeni. To může znamenat provedení vhodných změn v nabídce a dokonce i ve způsobu fungování restaurace.

Datový model restaurace

Tento článek je celý o návrhu plnohodnotného datového modelu pro restauraci (večeře nebo jídlo s sebou). Budeme se také zabývat dvěma velkými problémy, se kterými se lidé v restauračním byznysu setkávají při svých každodenních činnostech. Nakonec se zamyslíme nad změnami potřebnými k zabudování těchto schopností do stávajícího systému.

Když se ponoříme do datového modelu, zmíním určité uživatelské role. Tyto role jsou ve skutečnosti pro zaměstnance, jako například:

  • Manažer – spravuje inventář, mzdy, plánování zaměstnanců a metriky pro restauraci
  • Host – usadí hosty a přiřadí servery ke stolům
  • Číšník (také známý jako server) – Přináší objednávky zákazníků do kuchyně a doručuje připravenou objednávku zákazníkovi
  • Supervisor (také známý jako šéfkuchař nebo hlavní kuchař) – Dohlíží na úkoly v kuchyni a přiděluje úkoly kuchařům.
  • Vařit – čte podrobnosti objednávky přijaté od vedoucího, připravuje jídlo a informuje vedoucího, když je hotové
  • Busboy – sleduje, které stoly se používají; podle potřeby vyčistí tabulky a aktualizuje jejich stav

Datový model pro restauraci musí mít následující základní vlastnosti:

  • Správa KOT (Kitchen Order Token)
  • Správa KOD (doručování kuchyňských objednávek)
  • Správa nabídky

Podívejme se na každou z těchto funkcí podrobně.

Správa KOT (Kitchen Order Token)

Toto je nejdůležitější část našeho datového modelu:je to všechno o shromažďování podrobností o objednávkách od zákazníků prostřednictvím různých kanálů. Proč různé kanály? Protože objednávky lze provádět několika způsoby – online nebo přes mobilní aplikaci, telefonicky, přes číšníky či jiné zaměstnance. Kdykoli zákazník zadá objednávku, vygeneruje se KOT (Kitchen Order Token). KOT nakonec připraví personál kuchyně.

Vytvořím tabulku, kot , uchovávat podrobnosti předběžné objednávky. Tato tabulka má následující sloupce:


Název sloupce Popis
Id Primární klíč pro tuto tabulku
order_channel_id Kanál, přes který je zadána objednávka.
dine_in_table_sitting_id Tabulka, ze které pochází objednávka. Tento sloupec se vyplní pouze v případě objednávek na večeři.
order_in_time Časové razítko při přihlášení objednávky do systému
order_out_time Časové razítko, kdy je objednávka doručena personálem kuchyně
staff_id ID osoby, která vyzvedává objednávku. V případě objednávek na večeři je v tomto sloupci uvedeno ID číšníka, který objednávku vyzvedává. V jiných nastaveních by toto ID bylo „SYSTEM“.
kot_status_id Definuje aktuální stav KOT.


Chtěl bych upozornit, že objednávka shromážděná z jednoho stolu najednou je označena jedním kot_id . Pokud stejný stůl později objedná více položek, systém vygeneruje další kot_id a označí všechny tyto nové položky pod tímto ID. Nakonec všechna kot_ids protože stejná tabulka bude sečtena v konečném vyúčtování.

Správa KOT vyžaduje další statické a transakční tabulky, které jsou:

  • order_channel – Tato tabulka obsahuje podrobnosti o kanálech, které restaurace používá k přijímání objednávek. Mezi běžné příklady patří online, večeřet, vzít si (vynést) atd.
  • dine_in_table_sitting – Toto je transakční tabulka, která ukládá data obsazenosti tabulky. Jeho sloupce zahrnují dine_in_table_id , dine_in_time , dine_out_time , num_person_sitting a customer_id . Jakmile hostitel přiřadí zákazníka k tabulce a zadá informace do systému, vloží se do této tabulky záznam. Pro načtení aktuálního stavu obsazenosti stolů v kteroukoli chvíli bude použita tato tabulka.

    Předpokládejme, že chcete vytvořit tuto funkci. Zde je SQL, který vám řekne aktuální stav obsazenosti všech stolů v restauraci:

    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 – Tato tabulka obsahuje všechny možné stavy pro KOT:objednávka přijata , objednávka se zpracovává , objednávka doručena atd.
  • kot_menu_item – Tato transakční tabulka ukládá podrobnosti o všech položkách v KOT. Také definuje vztah mezi KOT a menu_item . menu_item_id a quantity pole proti kot_id označte položku na objednávce a kolik jí potřebujete.

Správa KOD (Dodávka kuchyňských objednávek)

Velká část toho, jak dobře si restaurace vede, se scvrkává na řízení KOT uvnitř kuchyně. Obvykle supervizor shromažďuje KOT od číšníků, jiných zaměstnanců nebo online systému. Poté vedoucí přiřadí položky nabídky jednomu nebo více kuchařům. Kuchař připraví věci a předá je vedoucímu. Poté si číšník nebo jiný zaměstnanec objednávku vyzvedne a doručí zákazníkovi.

Ale to není vše, co správa KOD zahrnuje. Součástí každodenního provozu kuchyně je také správa zdrojů, skladování surovin, pravidelná aktualizace zbývajících zásob a vyžadování nových zásob podle potřeby. Vedoucí hraje významnou roli v bezproblémovém chodu kuchyně, zejména ve špičce. Systém je považován za „chytrý“ nebo „inteligentní“, pokud dokáže replikovat pracovní funkce nadřízeného – což je na většině míst téměř nemožné.

Abych sestavil model pro tuto složitou správu, vytvořím další tabulku s názvem KOD . Tato tabulka se skládá z následujících sloupců:


Název sloupce Popis
Id Primární klíč pro tuto tabulku
kot_menu_item_id Označuje položku KOT, na které personál kuchyně právě pracuje
staff_id Ukládá ID kuchaře, který připravuje položku
kod_status_id Zobrazuje aktuální stav položky


Správa nabídky

Tato složka je stejně důležitá jako správa KOT a KOD. Jídelní lístek – jak vizuální prezentací, tak pokrmy, které nabízí – je jednou z prvních věcí, které zákazníky přitahují. Každý restauratér se tedy snaží, aby jejich menu bylo co nejlákavější.

Vytvořme další tabulku pro uložení podrobností nabídky. Přidám sloupce pro všechny podrobnosti, které obvykle vidíme v nabídce:


Název sloupce Popis
Id Primární klíč tabulky
Item_name Krátký název položky nabídky
Item_category_id Označuje kategorii kuchyně položky:italská, kontinentální atd.
Item_desc Obsahuje podrobnosti položky, jako je seznam ingrediencí nebo způsob přípravy položky (pečená, dušená atd.)
Item_image Okázalý obrázek položky.
cost Cena položky


Řešení problémů s restauracemi ve skutečném světě s daty

Některé problémy jsou ve světě stravovacích služeb extrémně běžné. Zejména mám na mysli dlouhé čekací doby, jak na sezení u stolu, tak na jídlo. Tyto problémy lze často alespoň částečně vyřešit lepší organizací a používáním dat restaurací.

V prostředí jídelny je jen málo věcí pro zákazníky otravnější než nutnost dlouhého čekání na stůl. Minimalizace čekacích dob zákazníků ve špičce vyžaduje bedlivě sledovat stav jednotlivých stolů. Pokud neexistuje řádná správa stolů a personálu, začnou se čekací doby zákazníků prodlužovat. Pokud jsou čekací doby příliš dlouhé, zákazníci mohou odejít a hledat jinou restauraci, která je rychle obslouží.

Tento problém lze vyřešit zavedením určitých změn do tohoto datového modelu. Tyto změny by:

  1. Přidejte správu tabulek v reálném čase, digitalizovaný způsob správy dostupnosti tabulek, sledování stavu a míry využití.
  2. Zkraťte dobu obratu u stolu měřením efektivity zaměstnanců a umožněním efektivního plánování pracovních sil – například sestavením úklidové čety a přidělením personálu ke stolu nebo skupině stolů.
  3. Zveřejněte stav jednotlivých stolů v reálném čase na obrazovkách manažerů, aby mohli sledovat všechny dlouho čekající aktivity.

Dalším problémem je nutit zákazníky čekat na jídlo. Zákazníkům, kteří se stravují na místě i s sebou, to může pomoci poskytování aktualizací stavu přímo strávníkovi. Sledování stavu jednotlivých KOT je zde zásadní. Jak KOT postupuje v kuchyni, jeho stav se aktualizuje v KOT stůl. Tento mechanismus poskytuje zákazníkům aktuální informace o stavu jejich objednávek v reálném čase.




Jak můžeme tento datový model restaurace vylepšit?

Existuje tolik inovativních nápadů, se kterými majitelé a provozovatelé restaurací přicházejí, aby přilákali a udrželi své zákazníky. Například:

  • Mnoho z nich provozuje věrnostní programy pro zákazníky. Tito udržují věrnostní účet pro zákazníky a dávají hostům body za každou návštěvu, nákup atd. Strávníci mohou tyto body inkasovat, jak a kdy chtějí, za různé odměny (obvykle nějaké jídlo zdarma, procento z jejich šeku nebo jídlo zdarma) .
  • Některé restaurace si své položky menu co nejvíce přizpůsobují. Umožňují svým strávníkům vybrat si ingredience do salátů nebo těstovin, případně nahrazují potraviny tak, aby splňovaly určitá dietní omezení.

Řízení zásob je další oblastí, která hraje významnou roli při vytváření ziskovosti restaurace.

Můžeme tyto schopnosti zabudovat do tohoto datového modelu? Podělte se o své myšlenky v sekci komentářů níže.


  1. PL/SQL - Použijte proměnnou seznamu v klauzuli Where In

  2. Načíst TOP 10 řádků bez použití TOP nebo LIMIT? – Otázka týdne v rozhovoru č. 247

  3. Seznam všech sloupců identity v databázi SQL Server:sys.identity_columns

  4. Čísla řádků s nedeterministickým pořadím