Baza Danych dla sytemu komunikacji miejskiej
Jest to prosta baza przygotowana do zarządzania pracownikami, autobusami, liniami komunikacyjnymi oraz rozkładem jazdy autobusów dla każdego dnia.
Założenia są takie:
- autobusy się psują
- ludzie nie chorują
- każdy dzień jest ten sam dla naszego systemu komunikacji miejskiej
Baza jest skierowana głównie dla pracowników administracji systemu. Pozwala im nadzorować ilośc godzin pracy kierowców, sprawdzać kiedy kończą im się licencję (oczywiście zakładamy że istnieje tylko jedna licencja na jednogo kierowce). Administracja dzieki tej bazy może łatwo stworzyć rozkłąd jazdy dla każdego przystanka lub dla poszczególnej lini. Możliwe też jest sprawdzenie najkrótszej bezpośredniej trasy pomiędzy przystankami, w przyszłości może to pozwolić na stworzenie aplikacji dla pasażerów.
Tabele
W bazie znajduje się 10 tabel:
- Addresses (zawierają adresy kierowców)
- Buses
- Drivers
- Lines
- Line Routes (zawiera trasy wszystkich linii)
- Station (przystanki)
- Schedule (godziny startów poszczególnych linii)
- Licences (licencje kierowców)
- Breakdowns (rodzaje popsuć autobusów)
- Bus Categories (rodzaje autobusów)
Schemat bazy:
Funkcje oraz procedury składowane bazy
add_driver
- dodaje do bazy kierowce wraz z licencjąadd_station_to_route
- dodaje przystanek do trasy, także istniejącej, przy braku podania argumentu order_index automatycznie dopisuje przystanek na końcudelete_station_proc
- procedura usuwająca przystanek poprawnie, utrzymuje dobrą kolejność przystanków w linibreakdown_check
- procedura wyświetlająca statystyki popsutych autobusówroute_from_a_to_b
- procedura wyświetlająca linie, które mogą bezpośrednio poprowadzić nas z przystanku a do broute_distance
- wyświetla całkowitą długość lini (w czasie przejazdu)is_driver_busy
- zwraca 0, gdy kierowca nie jest zajęty o podanym czasie, 1 w przeciwnym przypadkuis_driver_license_active
- zwraca 0, gdy kierowca ma aktywną licencję, 1 w przeciwnym przypadkuschedule_for_station
- wyświetla rozkład jazdy autobusów dla konkretnego przystankuworking_hours
- zwraca czas pracy danego kierowcyschedule_for_line
- rozkład jazdy dla konkretnej linii
Widoki
Active Schedule
- tabela Schedule, tyle że z wykluczonymi autobusami zepsutymiLicenses Warnings
- wyświetla imię i nazwiska kierowców, których licencja kończy się w obecnym roku (lub skończyła się)Drivers Working Hours
- suma godzin pracy każdego kierowcy
Przykładowe zapytania
Zapytania, które uzupełniają bazę znajdują się tutaj