Wpis z mikrobloga

#bazydanych #programowanie #sql Zastanawiam się nad schematem bazy danych dla rozkładu autobusowego. Sprawdziłem w Google i znalazłem coś takiego link , ale wydaje mi się, że nie uwzględnia to przypadku przesiadki. Na przykład mam przystanki A->B->C i z C->D. Jako przystanek na którym wsiadam wpisuje A, a jechać chce do D. Ktoś może coś podpowiedzieć jak ugryźć ten temat + jak później wyciągać te dane jeżeli chce uwzględnić przesiadki ? Ktoś może zna jakieś ciekawsze rozwiązania?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@D3xxT3r: schemat bazy imho powinien być jak najprostszy, tj. tabela z węzłami, tabela z relacjami pomiędzy węzłami i tabela z trasami... Ty natomiast powinieneś znaleźć jakiś algorytm wyszukiwania tych relacji, bo póki co to brzmisz jakbyś chciał logikę biznesową trzymać w samej bazie.
  • Odpowiedz
@D3xxT3r: znaczy wiesz, mając bazę w SQL to nic nie stoi na przeszkodzie, żeby takie dane wyciągać za pomocą zapytań SQL, jeśli się da, lub wyciągać tylko część danych a potem obrabiać je już po stronie aplikacji - zmierzam jedynie do tego, że kwestia wyszukania przesiadek to raczej temat związany z odpowiednim obrobieniem danych, a nie z samą strukturą bazy.
  • Odpowiedz
@D3xxT3r: Journey planner (to co ty chcesz zrobić) to jest nietrywialny kawałek kodu (duża złożoność kombinatoryczna, użycie specjalistycznych solverów) więc robienie tego na bazie to raczej głupota. Dla rozkładów w mieście możesz sobie nocą jakimś batchem przeliczać wszystkie połączenia i jakoś to cacheować, gorzej jak pojawią się nowe formy transportu i inne dziwne wymagania.
  • Odpowiedz
@tomash-pl @cxnmlhuipwetr pytanie powstało, bo nie byłem pewny czy ten schemat bazy jest ok, czy może jeżeli chciałbym uwzględniać przesiadki muszę coś zmienić, nie miałem do czynienia wcześniej z takim tematem, jeżeli to kwestia algorytmu to ok, coś sobie pokombinuje, dzięki za rady ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@D3xxT3r: Swoją drogą możesz też sobie popatrzyć na serwisy które takie dane udostępniają, np TTSS w Krakowie to bardzo cienka warstwa nad systemami które te dane udostępniają, możesz sobie pooglądać co ciekawego jest w tle wysyłane i odbierane:

http://www.ttss.krakow.pl/#?stop=569&mode=departure

To obsługuje też sytuacje kiedy jakiś tramwaj (autobusy pewnie podobnie działają) zastępuje inny na danej trasie danego dnia z uwagi na awarię.
  • Odpowiedz
@D3xxT3r: Według mnie, można by to wrzucić w bazę grafową, ale jeśli chcesz to trzymać w relacyjnej bazie danych (co jest IMHO lekko nieodpowiednie) to teoria grafów tutaj też się przyda ;)
  • Odpowiedz