Tach!
Ob man die Stationen pro Linie durchzählt oder pro Station und Linie angibt, welche Station die Nächste ist, um das zu einem Linienplan zusammenzufassen, sollte hier mal zur Diskussion stehen. Ich weiß auch nicht aus dem Hut, wie man das optimal angeht.
Das sind also zwei Herangehensweisen. Die eine ist, einen Reihenfolgenwert in ein Feld aufzunehmen. Man kann dann ein einfaches ORDER BY darauf abfeuern und bekommt die Reihenfolge - solange die Werte nicht doppelt vorkommen. Man kann das als Float-Wert implementieren, dann hat man praktisch beliebig viele verwendbare Zwischenwerte. (Theoretisch begrenzt durch die Ungenauigkeit des Float-Formats ab einer bestimmten Stellenanzahl.)
Die andere ist eine verkettete Liste. Für die wäre es sehr ungünstig, bereits in der Datenbank-Abfrage eine Reihenfolge haben zu müssen. Man kann die Menge nicht per Index sortieren, sondern müsste eine Funktion schreiben. Allerdings weiß man nur beim direkten Nachfolger, dass es selbiger ist. Zwischen zwei beliebigen Stationen kann man ein größer oder kleiner als nur wissen, wenn man die Kette bis zu einem der beiden Elemente +/- Nachfolger abgeklappert hat. Das ist nichts, was man dem DBMS unbedingt aufbürden möchte. Allerdings kann man beim Ausgeben die Liste entlanglaufen und es wird einigermaßen performant, wenn man die nächste Station anhand eines Wertes in einer Hash-Tabelle finden kann. - Problematisch wird es, wenn die Kette warum auch immer unterbrochen wurde. Da ist dann direkt Ende im Gelände. Bei Variante 1 fehlte lediglich nur eine Station.
dedlfix.