Busfahrplan darstellen?

amigo89

Neuer Benutzer
Beiträge
4
Hallo zusammen,

ich habe momentan die Aufgabe einen Busfahrplan in einer Datenbank (postgres) darzustellen.
An sich ist es eig. keine große Sache, nur sitze ich gerade vor dem Problem, dass ich nicht weiß, wie ich die Reihenfolge der abzufahrenden Haltestellen (stations) darstellen sollen.

Also nochmal kurz zur (eig. selbsverständlichen) Erklärung: Ein Bus fährt eine Haltestelle ab, startet irgendwo (sprich hat eine Anfangshaltestelle) und eine Endstation. Zwischen Endstation und Startstation, werden andere Haltestellen in einer bestimmten Reihenfolge abgefahren.

Und genau da hackt es bei mir, wie stelle ich es klar und eindeutig dar, wie die Reihenfolge der abzufahrenden Haltestellen ist?

Hier das ERM:

plan.jpg


Meine Idee 1 war: Eine weitere Spalte in Tabelle "plan", die "order" heisst. welche runterzählt. Problem hier ist allerdings, angenommen sie fängt bei 1 an hört bei 15 auf für eine Linie. Woher weiß die Linie, wann schluss ist? Es könnte ja auch noch eine 16. Haltestelle kommen. Zudem werden hier in der Tabelle "plan" mehrere Linien dargestellt. Das gibt ein Durcheinander.

Idee 2: Für jede Linie eine eigene Plan_Tabelle mit Spalte "order". Finde ich ehrlich gesagt auch nicht gut, da viel Aufwand + ähnliches Problem wie bei Idee1.



Bei beiden Lösungen hat man zusätzlich das Problem, dass man, eine Haltestelle später (weil sich der Plan ändert) dazwischen schieben muss, ebenso die ganzen Werte der Spalte "order" ändern muss.



Also wie gesagt, ich weiß es ehrlich gesagt nicht, wie ich es darstellen sollen....


Bin für jede Hilfe dankbar.

Mfg,
amigo
 
Werbung:
Hallo zusammen,

ich habe momentan die Aufgabe einen Busfahrplan in einer Datenbank (postgres) darzustellen.
An sich ist es eig. keine große Sache, nur sitze ich gerade vor dem Problem, dass ich nicht weiß, wie ich die Reihenfolge der abzufahrenden Haltestellen (stations) darstellen sollen.

Also nochmal kurz zur (eig. selbsverständlichen) Erklärung: Ein Bus fährt eine Haltestelle ab, startet irgendwo (sprich hat eine Anfangshaltestelle) und eine Endstation. Zwischen Endstation und Startstation, werden andere Haltestellen in einer bestimmten Reihenfolge abgefahren.

Und genau da hackt es bei mir, wie stelle ich es klar und eindeutig dar, wie die Reihenfolge der abzufahrenden Haltestellen ist?

Hier das ERM:

plan.jpg



Meine Idee 1 war: Eine weitere Spalte in Tabelle "plan", die "order" heisst. welche runterzählt. Problem hier ist allerdings, angenommen sie fängt bei 1 an hört bei 15 auf für eine Linie. Woher weiß die Linie, wann schluss ist? Es könnte ja auch noch eine 16. Haltestelle kommen. Zudem werden hier in der Tabelle "plan" mehrere Linien dargestellt. Das gibt ein Durcheinander.

Idee 2: Für jede Linie eine eigene Plan_Tabelle mit Spalte "order". Finde ich ehrlich gesagt auch nicht gut, da viel Aufwand + ähnliches Problem wie bei Idee1.



Bei beiden Lösungen hat man zusätzlich das Problem, dass man, eine Haltestelle später (weil sich der Plan ändert) dazwischen schieben muss, ebenso die ganzen Werte der Spalte "order" ändern muss.



Also wie gesagt, ich weiß es ehrlich gesagt nicht, wie ich es darstellen sollen....


Bin für jede Hilfe dankbar.

Mfg,
amigo


Was spricht gegen

Code:
test=# create table bus_linie( id int primary key, name text);
CREATE TABLE
Time: 219,675 ms
test=*# create table stationen (id int primary key, name text);
CREATE TABLE
Time: 3,493 ms
test=*# create table route (id int references bus_linie, station int references stationen, next_station int references stationen);
CREATE TABLE
Time: 30,396 ms

Bus_Linie ist halt die Linie 15, die im Kreise zwischen 10 Stationen fährt. 3 Stationen davon teilt sie sich mit der 16.

Stationen sind die einzelnen Stationen

Route hat dann für die 15 halt 10 Einträge, in next_station ist halt die nächste Station. Wenn die 15 an Station 7 ist sieht man, was die nächste ist.
 
hey,

danke für deine Antwort.

Ich finde die Idee mit dem Feld "next_station" gut. Damit wäre sichergestellt, welche Station als nächstes kommt.

Nur stelle ich mir die Frage, wie man hierbei erkennen kann, wie der genaue Ablauf bzw. wieder die Reihenfolge der abzufahrenden Haltestellen sind.

Als Beispiel hier mal den Fahrplan:

46705e51494a3b71108e9a1f8a1ef642.png


Er beginnt in Eberstadt, Frankenstein und endet beim Hauptbahnhof und zwischendrin sind einige abzufahrende Haltestellen.

In der Lösung mit "next_station", die du vorgeschlagen hast, wie kann ich dann die Datensätze zu einem kompletten Fahrplan ausgeben? Ich weiß zwar welche Station als nächstes kommt, aber ich weiß nicht wirklich wo es anfängt und endet. Außerdem müsste ich dann quasi bei der Ausgabe jedesmal nach next_station abfragen, um damit herauszufinden, welche die nächste Haltestelle ist und dann den Eintrag suchen in der Tabelle route nach dieser Station, um den neuen Datensatz auszugeben. Außerdem ist wie man bei meinem verlinkten Bild sehen kann das nächste Problem, dass eine route mehrmals vorkommt mit unterschiedlichen Zeiten. Wie weiß ich also, was zu was gehört?

Sorry, es fällt mir etwas schwierig das Problem zu beschreiben.

Kurz zusammengefasst: Wie kann ich anhand deiner Struktur, einen Fahrplan, wie in dem Bild dargestellt, mit einer Select-Abfrage ausgeben?
 
Werbung:
In der Lösung mit "next_station", die du vorgeschlagen hast, wie kann ich dann die Datensätze zu einem kompletten Fahrplan ausgeben? Ich weiß zwar welche Station als nächstes kommt, aber ich weiß nicht wirklich wo es anfängt und endet.

Könnte man in der Definition der Buslinie (erste Tabelle) unterbringen.

Außerdem müsste ich dann quasi bei der Ausgabe jedesmal nach next_station abfragen, um damit herauszufinden, welche die nächste Haltestelle ist und

Könnte man passend abfragen, je nach eingesetztem DB-System

dann den Eintrag suchen in der Tabelle route nach dieser Station, um den neuen Datensatz auszugeben.

JOIN

Außerdem ist wie man bei meinem verlinkten Bild sehen kann das nächste Problem, dass eine route mehrmals vorkommt mit unterschiedlichen Zeiten. Wie weiß ich also, was zu was gehört?

Mmh.

Vielleicht die einzelnen Zeiten als ARRAY bei der jeweiligen Haltestelle speichern. Wenn die DB sowas kann.

[/quote]
Kurz zusammengefasst: Wie kann ich anhand deiner Struktur, einen Fahrplan, wie in dem Bild dargestellt, mit einer Select-Abfrage ausgeben?[/QUOTE]

Naja, die Ausgabeformatierung ist eher Sache der Applikation.
 
Zurück
Oben