Trasa i linia nie bardzo mi podchodzą.
Sama linia, jako n przystanków od puktu A do B (bo tak to rozumiem) nie potrzebuje id_przystanku ani id_trasy
LINIA
| id | numer/nazwa |
Trasa jako przystanki po drodze (tabela zbiorcza ODLEGLOSC - LINIA) na danej linii też nie bardzo daje się użyć:
TRASA
| id | id_lini | id_odleglosci | numer |
teraz tak:
id_lini - bez komentarza
id_odleglosci - czyli z którego przystanku do którego i w jakim czasie jedzie
numer - kolejność przejazdów na danej lini
Sortując po numerze dla id_lini masz nota bene czas przejazdów na danej linii + kolejność przystanków, dodając do tego czas startu masz rozkład jednego przejazdu.
id_autobusu ani id_kierowcy w żadnym razie tu nie powinno być
Mając już przystanki, odległości pomiędzy przystankami, linie i rozkład przystanków na danej lini potrzebne są jeszcze dwie tabele powiedzmy rozklad_jazdy:
ROZKLAD_JAZDY
| id | id_linii | czas_wyjazdu |
To + tabela trasa i masz gotowy rozkład jazdy dla wszystkich lini (+ przystanki i masz nawet mapkę :)).
I ostatnia łącząca poprzednie z kierowcami i autobusami:
WYJAZDY
| id | id_rozkladu | id_ kierowcy | id_autobusu |
Te tabele pozwalają już uzyskać twoją zakładaną funkcjonalność:
Tworzenie rozkładu jazdy => złączenie LINIA(w zasadzie tylko nazwa) + TRASA(przystanki pośrednie i czas przejazdu pomiędzy nimi) + ROZKLAD_JAZDY(czas startu)
Szukanie wolnego kierowcy => WJAZDY(kierowca i rozkład po którym pomyka) + ROZKLAD_JAZDY(czas wyjazdu i linia) + TRASA(czas przejazdu lini) i mamy godziny w jakich dany kierowca jest zajęty.
Szukanie wolnego autobusu => j.w
Jeśli coś jest niejasne pytaj