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

Pronájem aut je stejně jednoduchý jako řízení:Datový model pro půjčovnu aut

Možná jste si na poslední dovolené půjčili auto. Zarezervovali jste si auto online a poté jste si ho vyzvedli na určeném místě po zaplacení všech předem dohodnutých poplatků. Jakmile jste skončili, vrátili jste jej agentuře a možná zaplatili nějaké další poplatky. Přemýšleli jste někdy o systému, díky kterému se všechny tyto věci dějí? V tomto článku se podíváme na datový model pro systém pronájmu aut.

Proč vytvářet další datový model půjčovny aut?

Chci navrhnout datový model plně funkčního systému pro mezinárodní autopůjčovnu. Společnost udržuje vozidla k pronájmu v různých segmentech (mini, economy, medium, SUV, cargo a limuzína). Provozuje své operace z různých měst v různých zemích. Společnost umožňuje svým zákazníkům pronajmout si auto z jednoho místa (místo vyzvednutí) a odevzdat jej na jiném místě (místo výdeje).

V tomto bodě se podívejme na dřívější článek, který vysvětluje jednoduchý model autopůjčovny. Tento model splňuje všechny základní služby nabízené autopůjčovnou.




Než přidáme nové funkce, rád bych do tohoto modelu začlenil drobné změny, konkrétně:

  • Přidání city jako sloupec v location tabulky a úplné odstranění tabulky města.
  • Přidání dalšího sloupce, zip (jako v PSČ nebo PSČ) v location stůl. Tento systém identifikuje místo vyzvednutí/odvozu podle PSČ. Existuje mnoho zemí, kde je PSČ alfanumerické číslo, takže tento sloupec ponechám jako sloupec varchar.

  • Přidání driving license issue date customer stůl. V některých zemích závisí maximální povolená rychlost na tom, kdy byl řidiči vydán řidičský průkaz.

  • Přejmenování category tabulky do car_category , která přesněji popisuje její obsah.
  • Uložení informací o letu zákazníka, pokud je místo vyzvednutí blízko letiště. To umožňuje systému provést příslušné změny v požadavku zákazníka na rezervaci v případě zpoždění nebo zrušení letu. K tomu přidávám další tabulku s názvem flight_detail a připojte jej k reservation stůl.

Přidání fakturačních údajů zákazníka

Pro fakturaci potřebujeme uložit hodnotu pronájmu pro každou položku inventáře, včetně aut a vybavení. Cena pronájmu je přiřazena ke každé kategorii, protože proces rezervace se zabývá spíše kategoriemi než jednotlivými vozy.

Dovolte mi přidat rental_value v car_category a equipment_category tabulky.

Na podobných linkách musí být nějaké náklady spojené s pojištěním. Tuto cenu určuje pojišťovna. Prozatím přidám do insurance tabulka.

Pro fakturaci vytvářím samostatnou tabulku pro uložení všech fakturačních údajů. Tímto způsobem lze tyto stejné detaily snadno získat kdykoli je potřeba. Vzhledem k tomu, že výpočet těchto hodnot je trochu složitější, nebudu je znovu a znovu opakovat pro fakturu. Přidám jednu tabulku, a to rental_invoice , který je primárně spojen s rental stůl.

rental_invoice tabulka obsahuje následující sloupce:

  • id – primární klíč této tabulky.
  • rental_id – primární klíč rental stůl. Do tohoto sloupce přidám jedno jedinečné omezení:pro každý pronájem může být pouze jeden záznam.
  • car_rent – Tento sloupec označuje náklady na pronájem pronajatého vozidla.
  • Tyto náklady lze určit pomocí následujícího SQL:

    select a.rental_value from car_category a, car b, rental c
    where  c.car_id = b.car_id and b.category_id = a.id
    and c.id = ;
    

  • equipment_rent_total – Tento sloupec zobrazuje částku, kterou je třeba účtovat za jakékoli vybavení pronajaté zákazníkovi
  • Celkové náklady lze určit pomocí následujícího SQL:

    select sum(a.rental_value) from equipment_category a, equipment b, car_equipment c, car d, rental e
    where  a.id = b.equipment_category_id and b.id = c.equipment_id
    and c.car_id = d.id and d.id = e.car_id 
    and e.id = ;
    

  • insurance_cost_total – Tento sloupec je pro celkové náklady na pojištění zákazníka. To lze určit pomocí následujícího SQL

    select sum(a.cost) from insurance a, rental_insurance b, rental c
    where a.id = b.insurance_id and b.rental_id = c.id 
    and c.id = ;
    

  • service_tax a VAT – Jak jejich název napovídá, tyto sloupce ukládají hodnoty pro příslušnou daň za služby a DPH.
  • total_amount_payable – Tento sloupec bude obsahovat hodnotu celkové fakturované částky. To by byl součet následujících sloupců:

    total_amount_payable =car_rent + equipment_rent_total + insurance_cost_total

  • waiver_amount a net_amount_payable – Tyto sloupce obsahují hodnoty částek prominutí (pokud existují) a čisté částky splatné k platbě. Hodnota waiver_amount je částka, která bude prominuta z celkové faktury. Běžně se používá, když půjčovna nabízí zákazníkům slevu. Vzorec pro určení net_amount_payable vypadá takto:

    net_amount_payable =total_amount_payable – waiver_amount

Mobilní inventář – U autopůjčovny je její inventář vždy mobilní, protože se stěhuje z jednoho místa na druhé. Pokud jste si všimli zaškrtávacího políčka „vracíte se na jiné místo?“ při rezervaci auta online, viděli jste to v akci. Systém zachází s vaší žádostí trochu jinak, pokud místo vrácení NENÍ totožné s místem vyzvednutí. Systém vždy sleduje své zásoby, jak a kdy jsou pronajímány a vráceny.

Například jeden zákazník si pronajme auto z Chicaga, potvrdí, že místo předání bude jiné, a jede do svého cíle v Saint Louis. Je zřejmé, že auto odevzdá v sídle společnosti v Saint Louis. V tomto případě, jakmile odjede autem z místa v Chicagu, tato část inventáře již není svázána s touto kanceláří. Vůz bude znovu zaregistrován, tentokrát v kanceláři Saint Louis, jakmile s tím bude hotový.

Pro začlenění tohoto mechanismu přidám jeden sloupec, konkrétně current_location_id , v car stůl a také equipment stůl. Tento sloupec obsahuje pouze platná ID míst z location tabulka.

Takže ve výše uvedeném příkladu je počáteční umístění vozu Chicago; bude aktualizován poté, co zákazník vrátí vůz do cílové kanceláře.

Nastavení možností doplňování paliva

Většina autopůjčoven nabízí následující typy možností čerpání paliva:
  1. Záloha na servis paliva – zákazník zaplatí plnou nádrž PHM předem a vůz vrátí s prázdnou nádrží.
  2. Poplatek za službu paliva – zákazník dostane vůz s plnou nádrží paliva, ale platí za něj podle spotřeby paliva.
  3. Samoobsluha paliva – zákazník obdrží vůz s plnou nádrží paliva a vrátí vůz s plnou nádrží. Toto je nejrozšířenější možnost ze všech tří.

Zde nás nezajímá, jakou možnost si zákazník vybere. Chceme, aby jejich výběr zaregistrovali při zpracování žádosti o pronájem.

Abych tuto potřebu splnil, přidám jednu tabulku, fuel_option , která ukládá všechny možné možnosti tankování vozu. Mezi požadavkem na pronájem a fuel_option , protože zákazník je požádán, aby si jednu vybral při rezervaci pronájmu.

Konečný datový model půjčovny aut




V mnoha oblastech se autopůjčovny posouvají k používání bezklíčového, samoobslužného půjčování pro své zákazníky. Nechtějí své zákazníky nechat čekat u přepážky, aby vyřídili papírování a vyzvedli si klíče od auta. Dokáže náš současný datový model vyhovět takovým požadavkům? Jaké změny jsou nutné v našem datovém modelu, aby se to stalo?

Máte nějaké myšlenky na náš datový model pronájmu aut? Začněme diskuzi! Neváhejte a podělte se o svůj příspěvek v sekci komentářů.


  1. Selhání addnode resolv.conf

  2. Pomocí sp_help_schedule v SQL Server

  3. Jak najít rozdíl mezi dvěma daty v MySQL

  4. Porovnání cloudových virtuálních strojů se spravovanou cloudovou databází