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 vlocation
tabulky a úplné odstranění tabulky města. -
Přidání dalšího sloupce,
zip
(jako v PSČ nebo PSČ) vlocation
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 docar_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 kreservation
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 SQLselect 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
aVAT
– 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
anet_amount_payable
– Tyto sloupce obsahují hodnoty částek prominutí (pokud existují) a čisté částky splatné k platbě. Hodnotawaiver_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:- 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ží.
- 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.
- 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ářů.