Stammlinien am Ablaufberg

Es gibt Probleme mit BAHN und Co.? Dann einfach hier posten!
Rolf R
Beiträge: 2187
Registriert: Donnerstag 20. November 2003, 20:41
Wohnort: Erfurt

Re: Stammlinien am Ablaufberg

Beitrag von Rolf R »

Thema: Stammlinien
Wichtig für eine Datenbank ist es, einen s.g. Primärschlüssel für einen Datensatz zu haben, an dem der Datensatz eindeutig zu identifzieren ist. Bei BAHN heißt dieser Schlüssel "Stammlinie".
Dabei ist unwichtig, ob er im Laufe einer Anwendung geändert wird - Hauptsache ist nur, dass ein Datum gibt, an dem man ein Fahrzeug eindeutig identifizieren kann.
Da eine "aktuelle Linie" zu häufig geändert wird, scheidet sie als Primärschlüssel aus. Denn: durch das Ändern dieses Primärschlüssels müssen in der Fahrzeug-Datenbank generell alle dazugehörenden Daten neu geschrieben werden - auch wenn nur es so aussieht dass dieses 1 Datum geändert würde (geschieht dann intern). Es müsste jedes Mal die Zuordnung geändert werden.
Bei der jetzigen Datenverwaltung wird im betreffenden Fahrzeugsatz nur der Linienname geändert, was natürlich wesentlich weniger Rechenaufwand bedeutet.

Gruß
Rolf
ÖBB
Beiträge: 2
Registriert: Sonntag 29. März 2009, 12:52

Re: Stammlinien am Ablaufberg

Beitrag von ÖBB »

Antwort zum Thema Datenbank:
Wenn ich mit Datenbanken arbeite (auf SQL basierend) reicht für jeden Datensatz - wie gesagt - EIN festes Datenfeld als Primärschlüssel aus, solange es eindeutig bleibt (es darf nicht eine 2. Stammlinie mit genau dem selben Namen einer schon vorhandenen geben).
Doch für den Primärschlüssel reicht eine einfache "Ordnungsnummer" für jede Stammlinie bzw. Datenzeile, die automatisch um +1 hochgezählt wird, aus. Diese ist nur intern, der Benutzer sieht sie also nicht. Doch so bleibt jede Zeile/Stammlinie für alle "Programmierabläufe" eindeutig identifizierbar.
Fazit:
Man braucht die Stammlinie nicht für den Primärschlüssel, man kann dies mit einer Nummerierung aller Linien erreichen!

mit freundlichen Grüßen
Rolf R
Beiträge: 2187
Registriert: Donnerstag 20. November 2003, 20:41
Wohnort: Erfurt

Re: Stammlinien am Ablaufberg

Beitrag von Rolf R »

@ÖBB
Da sind wir uns also im Prinzip einig. Die "Stammlinie" könnte natürlich auch ein Überbleibsel aus den BAHN-Vorgängern sein, oder BAHN nutzt sie zur Verwaltung der Züge. Du hast natürlich Recht: einen Primärschlüssel kann natürlich auch eine einzelne Ziffer/Zahl darstellen, ggf. auch im Hintergrund.
Letztendlich weiß da nur Jan, warum das Ganze so und nicht anders ist, weil er die DB-Struktur kennt.
Übrigens: die Fahrzeug-Db unterscheidet sich von einer normalerweise verwendeten SQL-Db z.B. dadurch, dass im Laufe eines Betriebstages auch mal Datensätze zusammengeführt werden (Zug-Vereinigungen, Wagen ankuppeln etc.), was ja
z.B. bei einer User-Verwaltung eher die Ausnahme ist.

Gruß
Rolf
Jan Bochmann
Beiträge: 2217
Registriert: Sonntag 16. März 2003, 15:25
Kontaktdaten:

Re: Stammlinien am Ablaufberg

Beitrag von Jan Bochmann »

Guten Tag,
bahnfan20 hat geschrieben:Warum kann man Stammlinien eigentlich nicht manuell ändern? Man kann alles an einem Zug ändern, nur nicht die Stammlinie.
Die Züge sind nach Stammlinie und Zugnummer sortiert. Wenn man diese Daten ändert, dann muß der Zug neu einsortiert werden. Eine solche Möglichkeit gab es in früheren BAHN-Versionen nicht, d.h. die einmal vorhandene Reihenfolge war fest. Deshalb konnen beide Daten früher nicht geändert werden. Seitdem die Zugnummer variabel ist, gibt es allerdings auch die entsprechende Neusortierung.

Grüße
Jan B.
Jan Bochmann
Beiträge: 2217
Registriert: Sonntag 16. März 2003, 15:25
Kontaktdaten:

Re: Stammlinien am Ablaufberg

Beitrag von Jan Bochmann »

Guten Tag,
bahnfan20 hat geschrieben:Das selbe denke ich mir bei Zugtyp. Wozu brauche ich einen aktuellen Zugtyp, wenn es eine Stammzugtyp gibt? Ist auch genauso unnötig.
Ist nicht unnötig, sondern kann man oft gebrauchen. Die Stammdaten (sowohl Linie und Zugtyp) dienen dazu, daß das Ganze irgendwann zuverlässig wieder in eine Art "Normalzustand" kommt.

Es kommt oft vor, daß man diese Daten für eine bestimmte Zeit oder Strecke ändern möchte. Wenn es dann eine Verspätung oder Umleitung gibt, werden sie ggf. nicht wieder zurückgesetzt. Mit Hilfe der vorhandenen Stammdaten korrigiert BAHN das aber in vielen Fällen später von allein, z.B. beim Einrücken des Zugs.

Grüße
Jan B.
Magnesium
Beiträge: 237
Registriert: Sonntag 12. Oktober 2003, 12:18

Re: Stammlinien am Ablaufberg

Beitrag von Magnesium »

Rolf R hat geschrieben:Thema: Stammlinien
Wichtig für eine Datenbank ist es, einen s.g. Primärschlüssel für einen Datensatz zu haben, an dem der Datensatz eindeutig zu identifzieren ist. Bei BAHN heißt dieser Schlüssel "Stammlinie".
Die Stammlinie ist kein Primärschlüssel, nicht mal Schlüsselkandidat bezogen auf die Fahrzeuge in einem Netz. Die Stammlinie alleine identifiziert in der Regel keinen Zug eindeutig, da es zu einer Stammlinie bis zu 999 Züge geben kann. Primärschlüssel wäre in diesem Fall bestenfalls die Kombination aus Stammlinie und Zugnummer, sofern BAHN intern nicht eh noch andere Schlüssel verwendet.
Dabei ist unwichtig, ob er im Laufe einer Anwendung geändert wird - Hauptsache ist nur, dass ein Datum gibt, an dem man ein Fahrzeug eindeutig identifizieren kann.
Da eine "aktuelle Linie" zu häufig geändert wird, scheidet sie als Primärschlüssel aus. Denn: durch das Ändern dieses Primärschlüssels müssen in der Fahrzeug-Datenbank generell alle dazugehörenden Daten neu geschrieben werden - auch wenn nur es so aussieht dass dieses 1 Datum geändert würde (geschieht dann intern). Es müsste jedes Mal die Zuordnung geändert werden.
Nun die Zugnummer lässt sich ändern, wäre aber Teil des Schlüssels. Somit kann eine Änderung des Primärschlüssels also kein Problem sein. In der Regel muss bei einer Änderung des Schlüssels nur der Schlüssel geändert werden, einzig Bezugsdatensätze in einer anderen Tabelle müssten angepasst werden, sofern sie sich trotz Schlüsseländerung noch auf den Datensatz beziehen sollen. Dies ist jedoch nur die rein theoretische Betrachtung, wie BAHN intern arbeitet weiss ich natürlich nicht. Aber selbst wenn der Datensatz komplett neu geschrieben werden muss, sollte dies keine gravierenden Probleme bereiten, gerade da diese Operation wohl doch eher selten ausgeführt werden würde. Nach Jans Äusserung bezüglich des Sortierens und der früher ebenfalls nicht änderbaren Zugnummer, sehe ich die fixe Stammlinie eher als historisch gewachsen, denn wirklich technisch begründet, denn auch die Zugnummer wär ja früher fix und ist heute variabel und wie erläutert ist auch die Zugnummer Teil des Schlüssels.
Rolf R hat geschrieben:@ÖBB
Da sind wir uns also im Prinzip einig. Die "Stammlinie" könnte natürlich auch ein Überbleibsel aus den BAHN-Vorgängern sein, oder BAHN nutzt sie zur Verwaltung der Züge. Du hast natürlich Recht: einen Primärschlüssel kann natürlich auch eine einzelne Ziffer/Zahl darstellen, ggf. auch im Hintergrund.
Letztendlich weiß da nur Jan, warum das Ganze so und nicht anders ist, weil er die DB-Struktur kennt.
Übrigens: die Fahrzeug-Db unterscheidet sich von einer normalerweise verwendeten SQL-Db z.B. dadurch, dass im Laufe eines Betriebstages auch mal Datensätze zusammengeführt werden (Zug-Vereinigungen, Wagen ankuppeln etc.), was ja
z.B. bei einer User-Verwaltung eher die Ausnahme ist.
Aber in anderen Datenbanken auch nichts unübliches ist: So werden z.B. in einer Datenbank eines Versandhandels sicher mal Aufträge zusammengeführt, wenn jemand zwei Bestellungen gemacht hat (bei Amazon z.B. problemlos möglich 2 Orders zu einer zu machen um Versandkosten zu sparen) oder eine Bestellung in zwei Bestellungen gesplittet, da ein Artikel eine längere Lieferzeit hat. Oder auch die Datenbanken der meisten Forensysteme sind ein gutes Beispiel, da lassen sich Threads trennen und zusammenführen.
Rolf R
Beiträge: 2187
Registriert: Donnerstag 20. November 2003, 20:41
Wohnort: Erfurt

Re: Stammlinien am Ablaufberg

Beitrag von Rolf R »

@Magnesium:

siehe hierzu auch Jan Bochmanns Antworten direkt über Deinem Beitrag.
Das Ganze ist ja nicht ein Datenbank- sondern auch Recourcen-Problem. Wenn die Datenbank jedes Mal neu sortiert werden müsste, wenn Züge zusammengeführt- und getrennt würden und dann ja auch gespeichert werden müsste, wäre es wahrscheinlich nur eine Frage der Zeit, wann der Rechner auf Grund des permanenten Ratterns der Festplatte "gegen die Wand fliegt".

@ÖBB
Man braucht die Stammlinie nicht für den Primärschlüssel, man kann dies mit einer Nummerierung aller Linien erreichen!
ok - aber:
Ob die Linie RE1, RE2, S4 oder 1,2,3 heißt - wo ist da der Unterschied (mal abgesehen vom Format)?
Abgesehen davon: nimm' mal die Beispiele (RE1, RE2, S4 oder 1,2,3) von letzten Satz.
Was wäre einfach da einfacher zu finden (z.B. bei der Fehlersuche) - den RE1 oder den Zug Nr.1?

Ich denke mal, dass die aktuelle Lösung momentan die beste ist. Ich habe bei meinen Netzen eigentlich nur positve Erfahrungen mit der Stammlinie gemacht (wenn ich sie mal brauchte). Außerdem stört sie ja auch nicht wirklich...

Viele Grüße

Rolf
Antworten