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

Tap and Park:A Parking App Data Model

Různé aplikace slibují, že vaše hledání parkování bude bezbolestné. Pojďme prozkoumat tento typ aplikace pomocí našich brýlí pro datové modelování. Jak vypadá základní model?

V dřívějším článku jsme vysvětlili, jak je parkoviště strukturováno a jak lze navrhnout datový model pro jeho správu. V tomto článku zkoumáme datový model pro parkovací aplikaci. Tyto aplikace znáte:uvádějí možnosti parkování v okolí, řeknou vám ceny a umožní vám zarezervovat nebo zarezervovat místo nebo koupit parkovací lístek.

Díky této aplikaci je vaše hledání parkování relativně bezbolestné. Řekl bych, že nejdůležitějším faktorem při výběru parkovacího místa je cena. Pětiminutová procházka, která ušetří pár korun, se vždy vyplatí. Jak již bylo řečeno, nasaďte si brýle pro datové modelování a podívejme se zblízka na svět parkovacích aplikací.

Co bychom měli vědět o parkovištích a parkovacích aplikacích?

Parkovací aplikace jsou docela jednoduché:můžeme očekávat funkce pro sledování dostupnosti a ceny parkovacích míst v reálném čase, rezervaci uvedených míst a placení poplatků.

Kromě umístění, které je pro datového modeláře poměrně snadné zvládnout, je pro parkoviště klíčová cena. Cenová strategie parkovacích míst je poměrně přímočará a určité metody nebo pravidla jsou prakticky univerzální:

  • Parkoviště mají často různé ceny pro různé časy. Den se běžně dělí na tři části – ráno (6:00 až 11:00), poledne (11:00 až 17:00) a večer (17:00 až 22:00).
  • Večer a ráno mají obvykle vyšší ceny, protože v těchto hodinách bude pravděpodobně potřebovat místo více aut.
  • Ceny se také mohou lišit v závislosti na dnech v týdnu. Například parkoviště v blízkosti centra města bude o víkendu (v sobotu a neděli) zpoplatněno, protože tehdy navštíví více lidí.
  • Většinou mnoho lidí používá své standardní ceny. Jsou však dny, kdy mohou účtovat více – např. parkoviště u baseballových stadionů mohou účtovat více, když se na stadionu koná zápas nebo událost.
  • Parkoviště v blízkosti dopravních uzlů (letišť, nádraží a autobusových zastávek) umožňují parkování 24 hodin denně nebo týden. Pravděpodobně budou mít speciální sazbu za dlouhodobé parkování.
  • Některá parkoviště vydávají měsíční jízdenky za pevnou cenu. Držitelé měsíčního průkazu platí každý měsíc pevnou částku namísto placení denního poplatku.

Datový model




Jak vidíte, existují tři tematické oblasti:

  1. „Parkoviště“
  2. „Zákazník“
  3. „Rezervace parkování“

Vezměme nejprve nejdůležitější předmět – oblast, která se zabývá parkováním a jejich cenami.

Parkoviště

Tato oblast se točí kolem parking_lot tabulka, která ukládá podrobnosti o každém parkovišti v našem systému. Tato tabulka je důkladně vysvětlena v našem dřívějším článku o datovém modelu správy parkoviště. Zde však zopakujeme několik důležitých sloupců:

  • zip – PSČ; to hraje hlavní roli ve funkci vyhledávání.
  • is_slot_available – Aktualizováno provozovateli parkovišť a označuje, zda je aktuálně volné místo.
  • is_reentry_allowed – Zda může zákazník znovu zaparkovat na parkovišti poté, co jej opustil. Pokud nebude povolen opětovný vstup, vracející se zákazník si bude muset koupit další prostor.
  • is_valet_parking_available – Parkování s obsluhou je dražší, ale lidé mu často dávají přednost – zvláště když jsou na rande. 😉
  • operational_in_night – Zda je parkoviště v noci otevřené. Tyto informace se stanou velmi důležité, když vaše auto zaparkujete poblíž letiště a váš let přiletí o půlnoci!
  • minimum_hr_pay – Minimální poplatek za parkování auta na hodně. Některá místa mají například tříhodinové minimum, což znamená, že platíte tři hodiny, i když parkujete jen 30 minut.
  • is_monthly_pass_allowed –Zda hodně nabízí měsíční lístky.

Již jsme diskutovali o faktorech, které ovlivňují ceny parkování. Nyní se podívejme, jak naložíme s cenami v našem modelu. Použijeme parking_pricing tabulkou pro záznam běžných cen a pricing_exception tabulky pro zaznamenání případných výjimek. Obě tabulky mají podobnou strukturu a sloupce jsou samozřejmé. Jediné rozdíly jsou:

  1. parking_pricing tabulka má sloupec (day_of_week ), který ukládá den v týdnu relevantní pro cenu. pricing_exception tabulka má calendar_date sloupec, který obsahuje skutečné datum, kdy platila speciální cena.
  2. Když aplikace zobrazuje ceny, pricing_exception tabulka má přednost před parking_pricing stůl. Pokud je tedy běžná sazba pro dnešek 5 USD za hodinu, ale platí speciální sazba za 7 USD, aplikace zobrazí 7 USD za hodinu.

Finální tabulka v této tematické oblasti jsou offers . Uchovává záznamy o slevových kuponech a jejich souvisejících podrobnostech. Datový model za nabídkami, nabídkami a slevami jsme vysvětlili v dřívějším článku. Tato tabulka je založena na stejné teorii a všechny sloupce by měly být samozřejmé.

Zákazník

Když přemýšlíme o parkovací aplikaci, obvykle myslíme na tyto tři prvky:

  • Zákazníci – To zahrnuje jedinečné ID zákazníka a základní podrobnosti o uživatelích aplikace, jako je jejich jméno a telefonní číslo. Také by bylo dobré mít jejich fakturační adresu.
  • Vozidla – Jedna osoba může mít více aut, takže bychom měli mít možnost vztahu jeden k mnoha mezi uživatelem aplikace a jeho vozidly. Je zřejmé, že bychom potřebovali způsob, jak identifikovat vozidla, například pomocí jejich registračního čísla.
  • Platební metody – Protože tato aplikace umožňuje zákazníkům rezervovat si parkovací místo a zaplatit za něj, potřebujeme způsob, jak uložit platební metody. Opět by měl existovat způsob, jak mít pro jednoho uživatele více platebních metod.

Tento model má jednu tabulku pro každou z těchto entit. customer_id atribut je uveden ve vehicle a payment_method stoly; propojuje uživatele s vozidly a platebními metodami.

Rezervace parkování

Tato oblast obsahuje pouze dvě tabulky. Z těchto dvou tabulka „parking_one_time_reservation“ ukládá podrobnosti o rezervaci. Některé z jeho sloupců jsou samozřejmé; ostatní jsou:

  • start_timestamp – Datum a čas, kdy začíná období rezervace.
  • pay_for_min_hr – Drží „N“, pokud je rezervace na určitý počet hodin (např. od 9:00 do poledne). V opačném případě bude mít tento atribut „Y“.
  • booking_for_hr – Počet hodin rezervace. Toto je pole s možnou hodnotou null; bude mít hodnotu pouze tehdy, když pay_for_min_hr je nastaveno na „N“. Ve výše uvedeném příkladu by byla nastavena na „3“ pro tři hodiny, které uplynou mezi 9:00 a polednem.
  • basic_parking_cost – Základní cena za parkování v místní měně.
  • offer_code – Kód kupónu, pokud je použit. Vzhledem k tomu, že použití kódu nabídky je volitelné a závisí na dostupnosti, tento sloupec má hodnotu null.
  • net_cost – Skutečná částka, kterou zákazníci zaplatí u pokladny (když opustí zásilku).
  • is_paid – Zda byly zaplaceny poplatky za parkování. To se stává důležitým sloupcem, když je povolen opětovný vjezd na stejný parkovací lístek. V takových případech jsou platby obvykle zúčtovány u první pokladny (tj. když auto poprvé opustí pozemek).

parking_monthly_pass tabulka zaznamenává informace o všech měsíčních jízdenkách vydaných zákazníkům prostřednictvím této aplikace. Měsíční vstupenky lze zakoupit kdykoli, a to i na budoucí data. Máme tedy dva samostatné sloupce, purchase_date a start_date , které umožňují uživatelům aplikace nakupovat vstupenky platné v budoucnu. Ostatní sloupce jsou samozřejmé.

Co dalšího můžeme přidat do datového modelu parkovací aplikace?

Moderní parkoviště jsou vybavena všemi druhy technologií, jako jsou čtečky SPZ, senzory, automatizované systémy kontroly vjezdu na parkoviště a chytré parkovací hodiny. Tyto pokročilé systémy usnadňují provoz parkovišť a motoristům je snazší používat.

Jaké další změny potřebuje tento datový model, aby podporoval plně vybavená parkoviště? Sdělte nám prosím své myšlenky v sekci komentářů.


  1. Jak vybrat první řádek v každé GROUP BY Group

  2. Změňte typ sloupce a nastavte jej na hodnotu ne null

  3. Jak odstranit uživatele databáze MySQL v cPanel

  4. Jak přidat sloupec identity do tabulky pomocí TSQL a GUI v SQL Server - SQL Server / Výukový program T-SQL, část 40