Prośba o opinię i rady dotyczące zaprojektowanej bazy.

0

Cześć Panowie. Tworzę właśnie aplikację do kupowania biletów na MKS/PKS i mam ogromny problem w zaprojektowaniu bazy danych tak, by obsługiwała ona różne przystanki w ramach jednej trasy. Obecnie moja baza wygląda tak

Tabela ride_section jest tabelą łączącą tabelę ride oraz tabelę section w relację wielu do wielu. Początkowo planowałem by każda trasa była podzielona na odcinki. Np trasa 1-4 składała się z odcinków 1-2, 1-3, 1-4, 2-3, 2-4, 3-4 z których każdy miałby swoją cenę. Jest to o tyle wygodne, że wtedy mogę w tabeli ticket umieścić informację o odcinku którego dotyczy bilet i nie muszę się już niczym przejmować. Problem pojawia się jednak w momencie, gdy jedna trasa posiada 30 przystanków. Stworzenie takich odcinków, niemal każdy z każdym przy 30 przystankach to 30+29+28+27... itp różnych odcinków dla jednej trasy. Od razu wydaje mi się to nieoptymalne i ciężkie w zarządzaniu.

Kolejnym pomysłem jest składać trasę jak z klocków, która składała by się z różnych odcinków łączących ze sobą najbliższe dwa przystanki. Jednak nie bardzo potrafię sobie wyobrazić jak informację o takiej liście odcinków umieścić w tabeli ticket. Jak ustalić skąd dokąd jedzie, biorąc pierwszy odcinek z listy i ostatni ?

Byłbym bardzo wdzięczny za rady jak to ogarnąć.

2

IMO zacząłeś projektować od tzw. d*** strony. Nie przejmuj się, na studiach tak uczą.

Schemat bazy danych służy do przechowywania danych, z których korzysta aplikacja, aby wyliczyć jakieś rzeczy.

Wyszedłbym zatem od tego, na jakie zapytania musi umieć odpowiedzieć Twój program. Jaka jest cena biletu? Od czego zależy ta cena? A może musisz obsługiwać bilety na określony czas? Co z kartą miejską? Co ze zniżkami dla seniorów? Na tej podstawie zacznij projektować tabelki.

0

@Charles_Ray: Panowie zaprojektowałem już bazę która mogłaby działać i rozwiązywać problem związany z kupnem biletu na różne przystanki w ramach jednej trasy.

Teraz mam kolejny problem. Data przejazdu. Czy ktoś mógłby mi powiedzieć, czy jestem w stanie stworzyć jednego inserta do bazy danych z przejazdami i jakoś odróżnić jeden przejazd od drugiego przy użyciu daty ? Wiem, że to może brzmi bezsensownie, jednak zależy mi na tym, by aplikacja nie wymagała tworzenia ciągłych insertów z tych samych przejazdów różniących się tylko i wyłącznie datą przejazdu.

Czy ktoś mógłby mi pomóc to rozwiązać ?

Moja pierwsza myśl - napisać program który generuje plik tekstowy z insertem do bazy danych który zwyczajnie w pętli dodawałby kolejne daty do przejazdów.

1

Te przejazdy to jest rozumiem taki „katalog przejazdów”, z którego user wybiera, na który kupić bilet? No to takie dane zasilasz bezpośrednio na bazie odpalając jakiś skrypt z insertami 1/miesiąc

0

@Charles_Ray: Tak. Dokładnie coś takiego. Dzięki wielkie !

1 użytkowników online, w tym zalogowanych: 0, gości: 1