[MySQL] struktura bazy / tabel MPK / MZK
Jacek - 23-10-2005 18:54
[MySQL] struktura bazy / tabel MPK / MZK
Witam,
Uprzejmie proszę profesjonalistów o wprowadzenie mnie do zagadnienia zbudowania optymalnej z punktu widzenia obsługi zapytań userów relacyjnej bazy danych miejskiego przedsziębiorstwa komunikacji. Mam jedynie podstawy MySQL, znam troszkę PHP.. a jako zadanie z przedmiotu bazy danych ma powstać wypełniona baza MPK/MZK (ok. 100 linii autobusowych po 1-2 kursy co godzine, ok. 50 przystanków). Największa waga przykładana będzie do struktury tabel, ich wzajemnych relacji i budowy bazy. Serwis php to zupełnie dodatkowe zagadnienie, którym już zająć się będę potrafił.. brak mi jednak doświadczenia w budowie i projektowaniu tego typu rozbudowanych baz. Chciałbym by opracowanie tego zagadnienia wypadło jak najlepiej.
Mam dać użytkownikowi serwisu możliwość przeglądania dowolnych pogrupowanych danych i tworzenia różnorakich zapytań uwzględniających wprowadzone przez niego parametry jak lokalizacje przystanku, przeglądanie linii i godzin odjazdów w oba kierunki.
Serdeczne dzięki za każde naprowadzenie, wiem że takie systemy istnieją, nie wiem jednak jaka jest struktura tego typu baz, jak identyfikować w nich np przystanki, godziny, oznaczać kierunki w przypadku gdy przystanki są naprzeciwko siebie? jakie typy nadawać polom tabel. Interesuje mnie pomoc dotycząca struktury bazy, za wszelką okazaną pomoc z góry dziękuję.
-- Pozdrawiam, Jacek
Artur Muszynski - 23-10-2005 18:54
"Jacek" <japol@op.pl> wrote in message news:djaoe2$ll9$1@news.onet.pl... > Witam, > > Uprzejmie proszę profesjonalistów o wprowadzenie mnie do zagadnienia > zbudowania optymalnej z punktu widzenia obsługi zapytań userów relacyjnej > bazy danych miejskiego przedsziębiorstwa komunikacji. Mam jedynie podstawy > MySQL, znam troszkę PHP.. a jako zadanie z przedmiotu bazy danych ma > powstać > wypełniona baza MPK/MZK (ok. 100 linii autobusowych po 1-2 kursy co > godzine, > ok. 50 przystanków). Największa waga przykładana będzie do struktury > tabel, > ich wzajemnych relacji i budowy bazy. Serwis php to zupełnie dodatkowe > zagadnienie, którym już zająć się będę potrafił.. brak mi jednak > doświadczenia w budowie i projektowaniu tego typu rozbudowanych baz. > Chciałbym by opracowanie tego zagadnienia wypadło jak najlepiej. > > Mam dać użytkownikowi serwisu możliwość przeglądania dowolnych > pogrupowanych > danych i tworzenia różnorakich zapytań uwzględniających wprowadzone przez > niego parametry jak lokalizacje przystanku, przeglądanie linii i godzin > odjazdów w oba kierunki. > > Serdeczne dzięki za każde naprowadzenie, wiem że takie systemy istnieją, > nie > wiem jednak jaka jest struktura tego typu baz, jak identyfikować w nich np > przystanki, godziny, oznaczać kierunki w przypadku gdy przystanki są > naprzeciwko siebie? jakie typy nadawać polom tabel. Interesuje mnie pomoc > dotycząca struktury bazy, za wszelką okazaną pomoc z góry dziękuję.
skrajne lenistwo tu nie ma co kombinować, w ogóle bez żadnego myślenia można stworzyć jakąś strukturę, np:
przystanki (id, miejsce, kierunek) odjazdy (id,autobus,kurs,przystanek,godzina) miejsca (id,ulica,numer) kursy (id,dzień)
resztę sam sobie dorzeźb
artur
> > -- > Pozdrawiam, Jacek >
Moneetor - 23-10-2005 18:54
Artur Muszynski napisał(a): > "Jacek" <japol@op.pl> wrote in message news:djaoe2$ll9$1@news.onet.pl... > >>Witam, >> >>Uprzejmie proszę profesjonalistów o wprowadzenie mnie do zagadnienia >>zbudowania optymalnej z punktu widzenia obsługi zapytań userów relacyjnej >>bazy danych miejskiego przedsziębiorstwa komunikacji. Mam jedynie podstawy >>MySQL, znam troszkę PHP.. a jako zadanie z przedmiotu bazy danych ma >>powstać >>wypełniona baza MPK/MZK (ok. 100 linii autobusowych po 1-2 kursy co >>godzine, >>ok. 50 przystanków). Największa waga przykładana będzie do struktury >>tabel, >>ich wzajemnych relacji i budowy bazy. Serwis php to zupełnie dodatkowe >>zagadnienie, którym już zająć się będę potrafił.. brak mi jednak >>doświadczenia w budowie i projektowaniu tego typu rozbudowanych baz. >>Chciałbym by opracowanie tego zagadnienia wypadło jak najlepiej. >> >>Mam dać użytkownikowi serwisu możliwość przeglądania dowolnych >>pogrupowanych >>danych i tworzenia różnorakich zapytań uwzględniających wprowadzone przez >>niego parametry jak lokalizacje przystanku, przeglądanie linii i godzin >>odjazdów w oba kierunki. >> >>Serdeczne dzięki za każde naprowadzenie, wiem że takie systemy istnieją, >>nie >>wiem jednak jaka jest struktura tego typu baz, jak identyfikować w nich np >>przystanki, godziny, oznaczać kierunki w przypadku gdy przystanki są >>naprzeciwko siebie? jakie typy nadawać polom tabel. Interesuje mnie pomoc >>dotycząca struktury bazy, za wszelką okazaną pomoc z góry dziękuję. > > > skrajne lenistwo > tu nie ma co kombinować, w ogóle bez żadnego myślenia można stworzyć jakąś > strukturę, np: > > przystanki (id, miejsce, kierunek) > odjazdy (id,autobus,kurs,przystanek,godzina) > miejsca (id,ulica,numer) > kursy (id,dzień) > > resztę sam sobie dorzeźb > > artur > > >>-- >>Pozdrawiam, Jacek >> > > > E tam. Struktura to pikuś przy tym co trzeba wklepać, żeby bazę wypełnić, jeśli to nie mają być jakieś wygenerowane automatem dane, 100linii * 50 przystanków * 18 godzin * 2 autobusy/godzinę to wychodzi trochę sporo jak na możliwości pojedyńczego człowieka. Trzeba rozpisać pracę chałupniczą dla murzynów itd...
Pozdrawiam Moneetor
-- I love SPAM(TM)... ....but hate spammers!!!
Artur Muszynski - 23-10-2005 18:54
> E tam. Struktura to pikuś przy tym co trzeba wklepać, żeby bazę wypełnić, > jeśli to nie mają być jakieś wygenerowane automatem dane, > 100linii * 50 przystanków * 18 godzin * 2 autobusy/godzinę to wychodzi > trochę sporo jak na możliwości pojedyńczego człowieka. Trzeba rozpisać > pracę chałupniczą dla murzynów itd...
Podejrzewam, że można spróbować popytać u źródeł, być może mają takie bazy dostępne w przystępnej do zassania formie. Wiele miast ma rozkłady online.
artur
> > Pozdrawiam Moneetor > > -- > I love SPAM(TM)... > ...but hate spammers!!!
Andrzej Dąbrowski - 24-10-2005 11:04
> > Podejrzewam, że można spróbować popytać u źródeł, być może mają takie bazy > dostępne w przystępnej do zassania formie. Wiele miast ma rozkłady online.
I z całą pewnością pozwolą skopiować :)))))))))) tylko poprosić Łatwiej ze strony internetowej skopiować i zrobić prosty program ładujący .... No chyba że to zawodowo potrzebne wtedy trzeba wpisywać Andrzej Dąbrowski
Dariusz Dobosz - 27-10-2005 23:55
Artur Muszynski wrote: > "Jacek" <japol@op.pl> wrote in message news:djaoe2$ll9$1@news.onet.pl... > >>Witam, >> >>Uprzejmie proszę profesjonalistów o wprowadzenie mnie do zagadnienia >>zbudowania optymalnej z punktu widzenia obsługi zapytań userów relacyjnej >>bazy danych miejskiego przedsziębiorstwa komunikacji. Mam jedynie podstawy >>MySQL, znam troszkę PHP.. a jako zadanie z przedmiotu bazy danych ma >>powstać >>wypełniona baza MPK/MZK (ok. 100 linii autobusowych po 1-2 kursy co >>godzine, >>ok. 50 przystanków). Największa waga przykładana będzie do struktury >>tabel, >>ich wzajemnych relacji i budowy bazy. Serwis php to zupełnie dodatkowe >>zagadnienie, którym już zająć się będę potrafił.. brak mi jednak >>doświadczenia w budowie i projektowaniu tego typu rozbudowanych baz. >>Chciałbym by opracowanie tego zagadnienia wypadło jak najlepiej. >> >>Mam dać użytkownikowi serwisu możliwość przeglądania dowolnych >>pogrupowanych >>danych i tworzenia różnorakich zapytań uwzględniających wprowadzone przez >>niego parametry jak lokalizacje przystanku, przeglądanie linii i godzin >>odjazdów w oba kierunki. >> >>Serdeczne dzięki za każde naprowadzenie, wiem że takie systemy istnieją, >>nie >>wiem jednak jaka jest struktura tego typu baz, jak identyfikować w nich np >>przystanki, godziny, oznaczać kierunki w przypadku gdy przystanki są >>naprzeciwko siebie? jakie typy nadawać polom tabel. Interesuje mnie pomoc >>dotycząca struktury bazy, za wszelką okazaną pomoc z góry dziękuję. > > > skrajne lenistwo > tu nie ma co kombinować, w ogóle bez żadnego myślenia można stworzyć jakąś > strukturę, np: > > przystanki (id, miejsce, kierunek) > odjazdy (id,autobus,kurs,przystanek,godzina) > miejsca (id,ulica,numer) > kursy (id,dzień) > >
W tym to się można tylko zagrzebać. Jak zmieni się godzina wyjazdu na początku linii to trzeba będzie zmieniać wszystkie wartości po drodze
Przede wszystkim komunikacja miejscka jeździ po odcinkach międzyprzystankowych - tzw. linkach. Każda linia składa sie serii linków w kolejności. A kurs jeździ po linii.
Czyli najpierw budujesz tabele przystanków (id, nazwa, współrzędne)
np: 1, Dworzec PKS, (x1,y1) 2, Plac Matejki, (x2,y2) 3, Dworzec PKP, (x3,y3)
następnie odcinków międzyprzystankowych -linków (id, id_od, id_do, czas przejazdu, długość, dwukierunkowy)
czas przejazdu - można podawać w minutach (chodzi o czas jazdy i postoju na nim) dwukierunkowy - oznacza że link jest możliwy do przejechania tylko w jednym kierunku lub w oba.
np: id, od, do, czas, dług, dwuk. 1, 1, 2, 2 minuty, 900 m, true 2, 2, 3, 3 minuty, 2000 m, true 3, 3, 1, 2 minuty, 1200 m, true
Po wypełnieniu przystanków i wszystkich możliwych (rzeczywistych) połączeń między nimi (linki) obejmującymi czas przejazdu uzyskujesz całą siatkę komunikacji miejskiej.
Teraz budujesz tabele linii (id, nazwa, okres obowiązywania, kierunek)
kierunek - oznacza kierunek w którym jedzie - nazwał bym je po prostu 1 i 2 bo w lewo, prawo, albo góra i dół - nic nikomu nie wyjaśnią.
np: 1, 10, 2005-01-01, 2005-12-31, 1 2, 10, 2005-01-01, 2005-12-31, 2 3, 11, 2005-01-01, 2005-12-31, 1 4, 11, 2005-01-01, 2005-12-31, 2
oraz tabele połączeń na linie (id, id_linii, id_linku, kolejność, obrócenie)
obrócenie - oznacza że link jest obrócony - czyli jedzie w drugim kierunku.
np: id, linia, link, kol, obróc 1, 1, 1, 1, false 2, 1, 2, 2, false 3, 2, 2, 1, true 4, 2, 1, 2, true
Z tak pięknie zaplanowanymi liniami przedsiębiorstwa trzeba tylko wyznaczyć godziny przejazdu - tabela kursy (id, id_linii, godzina wyjazdu, czy jeżdzi w dni robocz, soboty, święta)
Aby powiedzieć o której będzie na danym przystanku trzeba oczywiście do godziny wyjazdu dodać wszystkie czasy przejazdów na wcześniejszych linkach. Ale w ten sposób uzyskujemy rozkład jazdy możliwie dynamiczny i łatwy do zmiany.
Istnieje możliwośc w przypadku ogólnym że linia składa sie z wariantów. A każdy wariant z linków. Wtedy jest możliwość przedłużonych linii, lub skróconych o jakiś przystanek - czyli to co odnosi się do legendy. Dodatkowo czas przejazdu na linku może być różny w strefach czasowych oraz w typach dni. Ale tu bym to uprościł.
Rozwiązanie może nie jest idealne, ale poparte doświadczeniem. A w tej tematyce jest go mało. W każdym razie jeżeli to zrobisz dobrze to moja firma czeka na takich ludzi.
Pozdrawiam DD
Grzegorz Szyszlo - 30-10-2005 10:51
Jacek napisał(a): > Uprzejmie proszę profesjonalistów o wprowadzenie mnie do zagadnienia > zbudowania optymalnej z punktu widzenia obsługi zapytań userów relacyjnej > bazy danych miejskiego przedsziębiorstwa komunikacji.
www.mpk.lublin.pl przedsiebiorstwo wredne, ale poklikaj po rozkladach, to bedziesz mniej wiecej wiedzial czego sie spodziewac. jaka jest struktura bazy to sie nie dowiesz, ale mniej wiecej mozesz sobie wyobrazic jakie sa zapytania do bazy. po odsmieceniu moze sluzyc jako model.
znik.
Adam Kurzyna - 30-10-2005 10:51
podaje ci przyklad: http://www.zdt.bialystok.pl/. mozesz sobie wyobrazic jakie sa zapytania do bazy.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
zanotowane.pldoc.pisz.plpdf.pisz.plmorebeer.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|