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

Databázový model pro rezervační systém autoškoly. Část 2

Pojďme zabudovat další změny do datového modelu, který jsem vytvořil ve svém dřívějším příspěvku na blogu, jako je automatický přístup k přiřazení instruktora a vozidla k lekci, fakturace zákazníkům a jejich sledování.

Za prvé, musím vybudovat logiku na straně aplikace, abych přiřadil instruktora a vozidlo k lekcím, než se skutečně uskuteční. Zde je třeba zajistit především dostupnost, tj. instruktor nebo vozidlo lze na lekci přiřadit pouze v případě, že jsou oba k dispozici v plánovaný čas lekce.

Potřebuji sestavit dvě samostatné tabulky, abych mohl sledovat obsazenost instruktorů a vozidla. Možná se ptáte, proč hodlám sledovat obsazenost místo dostupnosti. Odpověď zní, že pokud místo dostupnosti sledujeme obsazenost, pak nepotřebujeme vytvářet další tabulky pro ukládání nedostupnosti zdrojů kvůli dovolené plánované instruktory nebo nějaké plánované službě pro vozidla. V případě plánované nedostupnosti jsou záznamy odpovídajícím způsobem vloženy do tabulek obsazenosti.

Vycházím zde z předpokladu, že instruktoři a vozidla jsou k dispozici pouze v pracovní době, řekněme od 8:00 do 18:00, v pracovní dny stanovené školou. Mohu tedy říci, že instruktor je k dispozici v určený čas v pracovní den, pokud v staff_occupancy tabulka.

Struktura tabulky staff_occupancy je následující:

Některé varianty lze vložit podle potřeby. Například mezi dvěma po sobě jdoucími lekcemi by pro instruktora měla být alespoň 15minutová mezera.

Struktura tabulky vehicle_occupancy je následující:

Přidělení instruktora a vozidla je zaznamenáno v reservation stůl. Již jsem přidal dva sloupce, staff_id a vehicle_id , do této tabulky. K těmto alokacím samozřejmě dojde na základě jejich dostupnosti.

Kromě toho si ponechám reservation_id v staff_occupancy a vehicle_occupancy tabulky, aby v případě zrušení lekce mohla být jednoduše uvolněna příslušná obsazenost personálu a vozidla. Oba tyto sloupce ale ponechám jako nulovatelné protože obsazenost instruktorů a vozidel nemusí být nutně z důvodu rezervace. Co když instruktor odejde na dovolenou? Nebo se jedno z vozidel dostane na jeden den do servisního střediska?

Abychom v takových scénářích umožnili měkké smazání, přidám jeden sloupec nazvaný is_active v obou těchto tabulkách.

Fakturace

Pro požadavek fakturace vytvořím jednu tabulku a to invoice , uchovávat fakturační údaje včetně customer_id a reservation_id . Zde se fakturace provádí zákazníkům, ale na základě lekcí provedených pro zákazníka. Potřebujeme tedy reservation_id také v tabulce faktur, takže v libovolném okamžiku lze vytáhnout zprávu o podrobné fakturaci na základě rezervace pro zákazníka. Vytvořím také jeden sloupec, a to invoice_status_id , v tabulce pro uložení stavu faktur.

Databázový model

Zde je aktualizovaná struktura databáze navržená ve Vertabelo:



Závěr

Už jste asi začali věřit, že datové modelování pro rezervační systém autoškoly je stejně zajímavé a okouzlující jako naučit se řídit?

Neváhejte psát své dotazy a návrhy týkající se článku. Rád na ně odpovím a vaše návrhy začlením do svého dalšího článku.


  1. Konfigurace zdroje dat Oracle pro Spring

  2. jak vypadá index B-stromu na více než 1 sloupci?

  3. Upgradujte PostgreSQL z 9.6 na 10.0 na Ubuntu 16.10

  4. Způsob, jak extrahovat data hodnoty DateTime bez sekund