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

Vytvoření datového modelu pro systém správy parkovacích míst

Výzkumy ukazují, že auta zůstávají zaparkovaná po dobu 95 % své životnosti, což naznačuje, že systémy správy parkovišť by měly být chytré, efektivní a robustní. V tomto článku vytvoříme datový model pro takový systém.

Úvod

Než začneme konstruovat náš datový model, měli bychom nejprve pochopit, jak jsou parkoviště strukturována a jak fungují. Pojďme se krátce podívat na tyto dvě klíčové oblasti.

  1. Jak jsou parkoviště strukturována?

    Typické parkoviště se skládá z jednoho nebo více bloků, které jsou dále rozděleny do pater. Každé patro obsahuje několik křídel, která pomáhají řidičům zorientovat se a zapamatovat si svá parkovací místa. Ty jsou obvykle označeny písmeny, jako je „A“, „B“, „C“ a tak dále. Podlaha má obvykle výškový limit, který omezuje určitým vozidlům vjezd na parkoviště. Navíc jedno patro obsahuje několik jedinečně očíslovaných parkovacích míst. Některé z těchto slotů jsou vyhrazeny pro handicapované osoby; ostatní si mohou za určitou cenu zarezervovat běžní návštěvníci.

  2. Jak fungují parkoviště?

    Abychom pochopili, jak parkoviště fungují, musíme vědět více o typech lidí, kteří parkoviště navštěvují. Zákazníci, kteří vjíždějí na parkoviště, patří do jedné z následujících skupin:

    • Stálý zákazník, který si zakoupil dvoutýdenní, měsíční nebo roční permanentku.
    • Zákazník předplacených služeb, který si rezervoval slot na dálku (telefonicky nebo online).
    • Příchozí zákazník, který nemá vstupenku ani si na dálku nezarezervoval slot. Na základě dostupnosti bude takovému zákazníkovi přidělen slot.

    Stálí zákazníci obvykle dostávají karty/nálepky, které si umístí na viditelné místo na palubní desce nebo čelním skle, takže vedení parkoviště může snadno určit, že zákazníci neporušují žádná pravidla parkování. Na rozdíl od příležitostných návštěvníků nejsou stálým zákazníkům nikdy denně vydávány parkovací lístky. Parkoviště obvykle rezervuje celý blok nebo patro pro své pravidelné návštěvníky, aby bylo zajištěno, že mají vždy místa k parkování. Stálí zákazníci si také mohou rezervovat sloty pro sebe, aby mohli svá vozidla zaparkovat na stejných vyhrazených místech každý den, ale obvykle to stojí příplatek.

    Ti, kteří provádějí rezervace parkování na dálku, mohou obvykle používat své určené sloty pouze po omezenou dobu několika hodin, po které se sloty uvolní. Když tito návštěvníci vstoupí na parkoviště, musí zaparkovat na svých vyhrazených místech. Zákazníkům, kteří neopustí parkoviště po uplynutí časových oken, je účtována pokuta, ale zákazníci určitě mohou odejít před vypršením jejich rezervace. Některá parkoviště mají pevně stanovené minimální časové okno (např. zákazník si možná bude muset rezervovat místo na tři hodiny, i když bude pryč jen na jednu hodinu).

    Přijíždějící zákazníci dostávají při vjezdu na parkoviště parkovací lístky. Při generování složenky je zákazníkovi přiděleno parkovací místo na základě preferencí, které zadal. Proces rezervace je zde v podstatě stejný jako u předplacených zákazníků. Rezervace návštěvy však zcela závisí na dostupnosti. Slot vás může stát víc, než kdybyste si rezervovali místo předem, zvláště pokud je omezená dostupnost a vysoká poptávka.

Datový model




S ohledem na tyto požadavky pojďme do toho a vytvořte náš datový model. Tentokrát budeme pracovat se třemi hlavními sekcemi:

  • Parkoviště
  • Zákazník
  • Rezervace parkování

Pojďme se blíže podívat na každou z těchto oblastí našeho datového modelu.

Část 1:Parkoviště

Sekce Parkoviště nejen zachycuje všechny důležité informace o samotném parkovišti, ale také zjednodušuje způsob, jakým může společnost spravovat nejmenší jednotku parkoviště (slotu). Některé sloupce tabulky byly přidány pouze za účelem zefektivnění rezervace parkování a provozu v pozdějších částech.

V souladu se strukturou parkoviště, o které jsme hovořili v úvodu, jsme vytvořili následující tabulky, abychom zachytili každý detail, který budeme potřebovat.

parking_lot – ukládá základní informace o parkovišti. Sloupce pro tuto tabulku jsou:

  • id – primární klíč pro tuto tabulku. Každému parkovišti přiděluje jedinečné číslo.
  • number_of_blocks – sleduje počet bloků na parkovišti.
  • is_slot_available – označuje, zda má parkoviště aktuálně volné sloty.
  • address – ukládá úplnou adresu parkoviště.
  • zip – ukládá PSČ parkoviště, což zákazníkům umožňuje snadněji vyhledávat dostupná parkoviště v určité oblasti pouhým dotazem na požadované PSČ.
  • is_reentry_allowed – označuje, zda může zákazník opustit parkoviště a znovu vjet se stejným parkovacím lístkem. Všimněte si, že mnoho parkovišť toto zákazníkům obvykle neumožňuje. Na takových parkovištích si musíte při každém opětovném vjezdu v daný den zakoupit nový lístek.
  • operating_company_name – ukládá název společnosti, která parkoviště provozuje.
  • is_valet_parking_available – označuje, zda parkoviště nabízí služby parkování s obsluhou.

block – parkoviště je rozděleno na jeden nebo více bloků. Tato tabulka ukládá informace o každém bloku parkoviště. Sloupce pro tuto tabulku jsou:– parkoviště je rozděleno na jeden nebo více bloků. Tato tabulka ukládá informace o každém bloku parkoviště. Sloupce pro tuto tabulku jsou:

  • id – primární klíč pro tuto tabulku.
  • parking_lot_id – odkazovaný sloupec z parking_lot tabulka, která identifikuje parkoviště, ke kterému blok patří.
  • block_code – ukládá kód spojený s tímto blokem. Blokům jsou obvykle přiděleny jedinečné identifikační kódy, jako je „A“, „B“, „C“, „11“, „22“, „33“ a tak dále.
  • number_of_floors – ukládá počet pater v tomto bloku. Číslo „1“ označuje, že se jedná o přízemní blok bez podlaží.
  • is_block_full – označuje, zda je blok aktuálně plný.

floor – na vícepatrových parkovištích mohou mít bloky více než jedno podlaží. Na tuto tabulku však mohou odkazovat také přízemní bloky. Sloupce pro tuto tabulku jsou:

  • id – primární klíč pro tuto tabulku.
  • block_id – identifikuje blok, ke kterému patro patří.
  • floor_number – představuje číslo podlaží (kde 1 =úroveň terénu).
  • max_height_in_inch – na víceúrovňovém parkovišti má každé patro výškové omezení. Tento sloupec ukládá maximální přípustnou výšku pro vozidla na podlaze.
  • number_of_wings – patro je dále rozděleno na křídla, která pomáhají zákazníkům zapamatovat si, kde zaparkovali. Tento sloupec ukládá počet křídel, která existují na patře.
  • number_of_slots – ukládá počet slotů, které existují na podlaze.
  • is_covered – identifikuje, zda je podlaha pokryta. Nejvyšší patro víceúrovňového parkoviště nebo přízemního parkoviště nebude nikdy zakryto.
  • is_accessible – označuje, zda je podlaha snadno přístupná, zejména pro handicapované. Pokud má vícepodlažní pozemek funkční výtah, považuje se za přístupné každé jeho podlaží.
  • is_floor_full – označuje, zda je patro plně obsazeno.
  • is_reserved_reg_cust – označuje, zda je patro přísně vyhrazeno pro běžné zákazníky.

parking_slot – tato tabulka ukládá všechny informace o parkovacích místech na parkovišti. Sloupce pro tuto tabulku jsou:

  • id – primární klíč pro tuto tabulku.
  • floor_id – identifikuje patro, ke kterému slot patří.
  • slot_number – ukládá jedinečný identifikátor slotu na konkrétním podlaží.
  • wing_code – identifikuje křídlo, ve kterém je umístěn slot.

Část 2:Zákazníci

Nyní začneme podrobně popisovat všechny relevantní informace o zákaznících. Upozorňujeme, že parkoviště se nezabývají zachycováním a ukládáním osobních údajů, jako jsou jména, adresy atd., protože mohou v případě potřeby kdykoli vstoupit na své místní portály DMV a získat takové informace.

customer – ukládá všechny relevantní podrobnosti o všech typech zákazníků, kteří mohou parkoviště navštívit (pravidelné, jednorázové a předplacené). Sloupce pro tuto tabulku jsou:

  • id – jedinečný identifikátor pro zákazníka.
  • vehicle_number – ukládá SPZ vozidla zákazníka.
  • registration_date – ukládá datum, kdy bylo vozidlo poprvé zaregistrováno na parkovišti.
  • is_regular_customer – označuje, zda má zákazník pravidelnou vstupenku. Pokud sloupec ukládá hodnotu true, pak musí existovat platná položka v regular_pass stůl. Jakmile platnost průkazu vyprší a zákazník ho ještě neobnovil, hodnota v tomto sloupci se aktualizuje na false.
  • contact_number – ukládá kontaktní číslo zákazníka. Protože se někteří lidé zdráhají sdílet svá kontaktní čísla s parkovišti, ponechali jsme v tomto sloupci hodnotu null.

regular_pass – ukládá informace o pravidelných pasech vydávaných zákazníkům. Sloupce pro tuto tabulku jsou:

  • id – primární klíč pro tuto tabulku.
  • customer_id – odkazovaný sloupec z tabulky zákazníků.
  • purchase_date – ukládá datum, kdy byl průkaz zakoupen.
  • start_date – ukládá datum, kdy bude vstupenka považována za platnou, což nemusí být nutně datum nákupu, protože někteří zákazníci kupují vstupenky předem.
  • duration_in_days – ukládá počet dní, po které je průkaz platný. Měsíční vstupenka obvykle zůstává platná po dobu 30 dnů.
  • cost – ukládá náklady v místní měně, které musí zákazník zaplatit, aby si mohl zakoupit vstupenku.

Část 3:Rezervace

Naše poslední část je věnována podrobným informacím o procesu rezervace parkovacích míst. Při rezervaci musí zákazník obvykle poskytnout určité podrobnosti, jako je očekávané datum a čas příjezdu, doba, na kterou by si chtěl slot zarezervovat, atd. Níže diskutujeme dvě hlavní tabulky této sekce.

parking_slot_reservation – udržuje podrobnosti o rezervaci. Sloupce pro tuto tabulku jsou:

  • id – přiřadí jedinečné referenční číslo individuální žádosti o rezervaci.
  • customer_id – odkaz na identifikátor zákazníka, který provádí tuto rezervaci.
  • start_timestamp – ukládá očekávané datum a čas příjezdu zákazníka.
  • duration_in_minutes – ukládá dobu, na kterou byla rezervace provedena.
  • booking_date – ukládá datum, kdy byla rezervace provedena.
  • parking_slot_id – interní sloupec, který zákazníkovi přiřadí parkovací místo, jakmile je jeho požadavek zachycen a platba byla provedena.

parking_slip – uchovává informace o vstupních a výstupních časech zákazníka, jakož i o všech příslušných poplatcích. Tuto tabulku jsme vytvořili pro parkoviště, která umožňují více vjezdů a výjezdů v rámci stejné rezervace. Sloupce pro tuto tabulku jsou:

  • id – primární klíč pro tuto tabulku.
  • parking_slot_reservation_id – odkazovaný sloupec, který identifikuje přidružený požadavek na rezervaci.
  • actual_entry_time – ukládá datum a časové razítko zákazníka.
  • actual_exit_time – ukládá datum a časové razítko odjezdu (odjezdu) zákazníka.
  • basic_cost – ukládá základní cenu rezervace.
  • penalty – ve výchozím nastavení ukládá hodnotu 0. Pokud zákazník odloží svůj odchod, bude mu účtován sankční poplatek a hodnota v tomto sloupci bude aktualizována.
  • total_cost – tento sloupec pouze přidává hodnoty basic_cost a penalizační sloupce.
  • is_paid – opětovný vjezd je obvykle povolen pouze tehdy, když zákazník zaplatil parkovné. Tento sloupec udává, zda byla tato platba provedena.

Závěr

V tomto článku jsme představili přehled datového modelu pro systém správy parkovišť. Existuje mnoho aplikací, které uživatelům pomáhají najít parkovací místa extrahováním, zpracováním a kompilací dat (jako je dostupnost a náklady) pro parkoviště v určité blízkosti. To je užitečné zejména pro lidi, kteří navštěvují velká města, jako je New York, Los Angeles a další, kde může být hledání parkoviště noční můrou, pokud si návštěvu pečlivě nenaplánujete. Takové aplikace se při získávání těchto informací spoléhají na dobře navržené datové modely a databázová rozhraní API.

V našem dalším článku převedeme náš současný datový model na řešení pro systém dostupnosti parkování v reálném čase. Neváhejte zveřejnit své myšlenky, zpětnou vazbu a doporučení v sekci komentářů níže.


  1. SQL Server ekvivalentní datovému typu MySQL enum?

  2. Kvíz o výkonu a ladění Oracle

  3. Jak extrahovat n-té slovo a počítat výskyty slov v řetězci MySQL?

  4. Odebrání databázového poštovního účtu z profilu (SSMS)