Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wasze koncepcje-porady do prostej aplikacji...
Forum PHP.pl > Forum > Przedszkole
matekub
Witam Wszystkich Forumowiczów.

Zabieram się za napisanie prostej aplikacji bazodanowej PHP +MySQL.
Ma być to wyszukiwarka szlaków górskich.

W tej bazie mam rozwiązać następujące problemy
- czas przejścia w przeciwnych kierunkach (pod górę i z góry) może być inny.
Zastanawiam się nad tym - jak rozwiązać czas przejścia - gdyż będzie to wyszukiwarka i może prowadzić różnymi drogami - znajdywać różne szlaki itp.

- powinno dać się uwzględnić czas podawany przez różne źródła.
To chyba tylko dodatkowe pole w bazie - jak już rozwiąże wcześniejszy problem.
-powinno dać się wygenerować trasy przejść pomiędzy dwoma zadanymi punktami
z uwzględnieniem dodatkowych warunków (np. lista punktów pośrednich, lista odcinków obowiązkowych, lista odcinków zabronionych, czas przejścia z określonego przedziału, itp.)

Zastanawiam się jak takie szlaki przechowywać w bazie - zeby był dobry dostęp do danych i łatwo się wyszukiwało i zwracało wyniki.
Z tych przykładów wybiorę LISTĘ PUNKTÓW POŚREDNICH...

TABELA SZLAKI:
-PUNKT_1 (poczatek/koniec)
-POŚREDNIE (załóżmy że będzie kilka pośrednich punktów na szlaku (dla wyszukiwarki) - wiec muszę tu stworzyć kolekcje? Czy widzicie inne rozwiązanie?
-PUNKT_2 (poczatek/koniec)

Może macie lepsze pomysły na przechowywanie tego typu danych?

- szlaki różnych kolorów biegną częściowo tą samą drogą
To chyba nie ma znaczenia dla implementacji - podczas wyszukiwania? Chyba że się mylęsmile.gif

- niektóre szlaki mogą być jednokierunkowe
Tu chyba tylko dodatkowy wiersz w tabeli informujacy czy jest jednokierunkowy?

Utworzyłem temat gdyż osoby bardziej doświadczone swoim okiem będą mieli pomysły na jakieś dobre i proste rozwiązania - ja natomiast lubię sobie przez przypadek utrudnić życie:)
Chodzi mi o nakierunkowanie mnie na dobre rozwiązanie...

Gdyby ktoś miał chwilkę czasu, proszę o swoje koncepcje:)
Z góry THX wszystkim za pomoc...

uzi123
Pisałem kiedyś coś podobnego. Opcji było nie wątpliwe mniej.

W ostatecznym rozwiązaniu oparłem to o PostgreSQL aby korzystać w pełni z możliwości sql (procedury składowane itp). Z mojego doświadczenia wynikało, że najlepiej przerzucić jak najwięcej na bazę danych, bo dużo łatwiej napisać dobrego selecta niż to później dobrze obrobić w PHP. Poza tym ilość danych jakie byś ciągnął do aplikacji rosła by lawinowo z ilością 'przesiadek'. Równocześnie, większość współczesnych serwerów SQL, ma bardzo rozbudowane opcja cache, wiec sobie doskonale poradzą licznymi, podobnymi zapytaniami.

Najlepiej mieć dwie tabele podstawowe
1) punkty: IDpunktu, nazwa-punktu, opis
2) trasy: IDodcinka, IDmiejscapoczatkowego, IDmiejscakoncowego, czas, kolory-szlakow, opis, obiekty-po-drodze

Oczywiście musisz zadbać o to abyś nie miał bałaganu w ID (klucze obce itd.) Ja osobiście dzielił bym trasy na możliwie najkrótsze odcinki (tzn od krzyżówki do krzyżówki) i dodał oddzielnie wpis z A do B i z B do A. Do tego dodajesz oddzielna kolumnę w której wymieniasz kolory szlaków.

Teraz np "jedno przesiadkowa" trasa z A do B to mniej więcej coś takiego (pisze z 'palaca' wiec moga byc bledy, poza tym nie koniecznie jest to składnia PGSQL)

  1. SELECT B.ID, B.IDpoczatkowe, B.IDkoncowe, E.ID E.IDpoczatkowe, E.IDkoncowe, B.time+E.time AS time
  2. FROM trasy B, trasy E
  3. WHERE B.IDkoncowe = E.IDpoczatkowe
  4. AND B.IDpoczatkowe = poczatek
  5. AND E.IDkoncowe = koniec
  6. ORDER BY time ASC


Możesz sobie dorzucać warunki jakie dusza zapragnie
Dla większej ilości 'przesiadek' korzystałem z tabeli tymczasowych.
matekub
dzięki kolego:) - już mnie jakoś nakierowałeś
o takie właśnie rady mi chodziło:)

jak ktoś jeszcze ma jakieś pomysły to pisaćsmile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.