Ich bin der Gestaltung eines Busfahrplan mit SQL. Jede Buslinie verfügt über mehrere Stationen, muss ich eine andere Tabelle für jede Route?
Frage
Ich versuche, mit der effizientesten Datenbank wie möglich zu kommen. Meine Buslinien alle über 10 Stationen haben. Der Bus startet bei Nummer eins bis zum Anschlag 10. erreicht, dann ist es wieder zurückkommt. Dieser Zyklus geschieht 3 mal am Tag.
Ich bin wirklich so zu stecken, wie ich die Zeiten für die Busse effizient erzeugen kann und wo ich die Stationen gespeichert werden soll. Wenn ich alle Register in einem Feld und die Zeiten in einem anderen setzen, wird die Datenbank nicht sehr dynamisch sein.
Wenn ich speichern alle eins nach dem anderen in einer Spalte stoppt und dann die Zeiten, in einer anderen Spalte, wird es eine Menge passieren zu wiederholen weiter nach unten als eine Station mehrere Male hat.
Vielleicht etwas, was ich bin fehlt, habe ich gerade erst begonnen SQL lernen und das ist eine Aufgabe, die wir gesetzt wurden.
Vielen Dank im Voraus.
Lösung
Sie werden eine Tabelle benötigen, die Ihre Timetable
enthält:
- Route ID
- Stop ID
- Zeit
- Eventuell andere Felder nach Bedarf (Richtung, Folge # 's, Block # usw.)
Ich würde empfehlen, separate Tabellen Bus Stop
Erstellung (zum Speicher Stopp Namen, lat / Long-Positionen, etc.) und Route
(zum Speichern von Routennamen, erster Station, letzte Station, Richtung, usw.).
Sie sind wahrscheinlich bewusst ist schon, aber Bus Terminierung kann sehr schnell kompliziert. Zum Beispiel:
-
Sie können bestimmte Stationen als „Zeitpunkte“ bezeichnen müssen, die in den gedruckten Pläne zeigen
-
kann jeder Strecke mehrere Varianten aufweisen. Zum Beispiel bei einer anderen Bushaltestelle
beginnen oder enden können einige Versionen
-
Der Zeitplan wird wahrscheinlich anders sein am Samstag und Sonntag, und die meisten Agenturen ihre Zeitpläne ändern vierteljährlich
Sie müssen möglicherweise einige dieser Fälle betrachten, und bauen sie in Ihr Schema.
Enthält das helfen?
Andere Tipps
Hier ist nur eine (von vielen) Möglichkeiten, dies zu tun:
Es klingt wie Sie wahrscheinlich eine routes
Tisch haben wollen, die jede Route beschreibt, und hat eine Startzeit.
Dann wird eine stops
Tabelle mit Beschreibungen und Wartezeiten für den Bus an jeder Haltestelle.
Ein stopDistanceMapping
Tabelle den Abstand zwischen zwei Stationen beschreiben würde, und die Fahrzeit zwischen ihnen.
Schließlich wird Ihre routeMap
Tabelle verknüpft einzelne routes
mit einer Liste von stops
. Sie können dann Ihre routes
Tisch Entfernung und Zeit bei der Verwendung der Wartezeit von jedem einzelnen Stopp, und die Zeiten / Entfernungen von stopDistanceMapping
füllen.
Viel Glück!
Auf einem (sehr grob) 1. Durchgang, würde ich die Buslinie mal in einer Tabelle wie folgt halten:
RouteID StartingLocationID EndingLocationID TravelTime
Auch würde ich eine Tabelle der Anschläge halten wie:
StopID Address City etc... (whatever other information you need about each location)
Für die Routen selbst ich würde speichern:
RouteID StartingLocationID RouteStartTime
Natürlich sollten Sie zuzuschneiden diese an Ihre eigenen Bedürfnisse, aber das sollte man einen Platz geben zu beginnen.