SQL databáze pro taxi službu
Návrh relační databáze pro modelovou taxislužbu
ProfiTaxi.
Projekt byl zaměřen na návrh datového
modelu, propojení jednotlivých částí systému
a následnou práci s daty pomocí SQL.
Cílem bylo vytvořit databázové řešení, které dokáže
zachytit celý proces od zákazníka a objednávky až
po samotnou realizaci jízdy, včetně
vazeb na řidiče,
vozidla a jednotlivé pobočky taxislužby.
O projektu
Databáze vznikla jako řešení scénáře taxislužby,
která provozuje vozidla, řidiče a pobočky
v různých městech.
Datový model proto musel zachytit
nejen samotné jízdy, ale také proces objednávání,
zákaznické údaje, firemní kontrakty a provozní
informace.
Jedním z důležitých principů návrhu bylo oddělení
objednávky od skutečné realizace jízdy.
Objednávka
představuje požadavek zákazníka, zatímco realizace
obsahuje údaje o skutečně uskutečněné jízdě, například
čas realizace, ujetou vzdálenost a výslednou cenu.
Databáze zároveň rozlišuje privátní a firemní zákazníky pomocí atributu clientType. Firemní zákazníci mohou být navázáni na kontrakt definující například cenu za kilometr nebo smluvený počet jízd.
Datový model:
Relační model:
Struktura databáze
Hlavní část databázového modelu tvoří zákazníci, objednávky, kontrakty a realizace jízd. Entita clients uchovává informace o zákaznících, zatímco order reprezentuje samotnou objednávku a její stav.
Na objednávku může navazovat záznam o realizované jízdě. Ten uchovává údaje, které vzniknou až při uskutečnění jízdy – například čas realizace, vzdálenost v kilometrech a celkovou cenu.
Druhá část modelu se věnuje provoznímu zázemí taxislužby. Obsahuje pobočky TaxiHub, zaměstnance, řidiče, vozidla a jejich majitele. Zaměstnanci jsou řešeni pomocí společné nadřazené entity, ze které vycházejí jednotlivé pracovní role.
Výstup procedur a dotazů:
Práce s daty
Součástí projektu nebyl pouze návrh databázového modelu, ale také praktická práce s daty pomocí SQL. Byly vytvořeny pohledy umožňující získávat konkrétní informace z propojených tabulek.
Jedním z vytvořených pohledů je například JIZDY_RIDICU, který poskytuje přehled uskutečněných jízd jednotlivých řidičů včetně čísla vozidla a míst odjezdu a příjezdu.
Další pohled NASMLOUVANE_KONTRAKTY pracuje s uzavřenými kontrakty, zákazníky a počtem uskutečněných jízd. Vlastní pohled byl následně navržen pro propojení vozidel s jejich aktuálními řidiči a filtrování podle dosaženého příjmu.
Uložené procedury
Praktická část projektu zahrnovala také vytvoření uložených procedur. Jedním z hlavních úkolů bylo vytvoření procedury REGISTRACE, která umožňuje zaregistrovat nového zákazníka společně s jeho kontraktem.
Procedura přijímá potřebné údaje jako vstupní parametry a následně zajišťuje jejich uložení do odpovídajících tabulek včetně správného propojení pomocí cizích klíčů.
Projekt tak ukazuje nejen návrh struktury databáze, ale také způsob, jakým lze nad vytvořeným modelem vytvořit konkrétní databázovou logiku.
Výsledek
Výsledkem je relační databázový model schopný reprezentovat hlavní provozní procesy taxislužby a jejich vzájemné vazby.
Projekt mi umožnil propojit návrh datového modelu s praktickou implementací v SQL a zároveň si vyzkoušet práci s pohledy, uloženými procedurami, primárními a cizími klíči a vztahy mezi jednotlivými entitami.