Datenbank
Vorraussetzung für dieses
Thema sind grundsätzliche Kenntnisse bzw. Erfahrungen im Umgang
mit
Datenbanken.
Bereits zu Beginn meiner Digital-Programmierung
hatte ich den Einsatz einer Datenbank (ACCESS®)
vorgesehen.
Niemals jedoch hätte ich geglaubt, welche Bedeutung diesem
elektronischen Speichermedium mittlerweile in meinem Programm
zukommt. Meine Datenbank weiß einfach alles was auf der Anlage
so vor sich geht-, und das auch noch nach einer langen
Sommerpause.
z.B. mein 9-gleisiger
Schattenbahnhof:
So lange ich analog fuhr, sah ich zwar immer, welches Gleis
belegt war, aber welcher Zug in welchem Gleis stand, war stets
ein Rätsel.
Und so war es auch kaum möglich, einen bestimmten Zug gezielt
abzurufen. Meist kam ein anderer...
Oder ein anderes Beispiel:
Viele der neue Lokomotiven haben 2 oder noch mehr digitale
Funktionen. Aus verständlichen Gründen können gleiche
Funktionen nicht
bei jeder Lok auf die selben F-Tasten gelegt werden (z.B.
Raucherzeuger auf f1). Was sollte eine E-Lok
dann mit f1 anfangen ?
Und ich mag es auch nicht, wenn eine Lok das Licht ausschaltet
statt zu pfeifen, nur weil ich mal wieder die falsche
F-Taste
benutzt habe.
Durch die Verwendung einer Datenbank gehören alle diese Probleme der Vergangenheit an.
Die Tabellen in meiner Datenbank gliedern sich hauptsächlich in 3 Bereiche
Die Lokomotiv-Tabelle enthält alle Informationen einer Lokomotive, welche für den Fahr-Betrieb erforderlich sind :
Für Function, F1 ... F4 stehen jeweils 2 Spalten zur Verfügung.
Eine Spalte enthält die Beschreibung, welche Funktion mit dieser Taste ausgelöst wird und die andere 'merkt' sich, ob die Funktion eingeschaltet ist oder nicht.
Beim Aufruf der Lok wird die Beschreibung der 1. Spalte auf dem Fahrpult angezeigt und, abhängig von der 2. Spalte, die Funktion ein- oder ausgeschaltet.
Positions-Tabellen gibt es mehrere :
Während des Fahrbetriebs werden die Adressen der Lokomotiven an die jeweils nächste Blockstrecke gemeldet und parallel in der entspr. Tabelle gespeichert. Damit wäre es sogar möglich, einen Zug auf offener Strecke stehen zu lassen und die Anlage abzuschalten. Beim nächsten Start sorgt dann die Datenbank dafür, daß die Position des Zuges wieder korrekt angezeigt wird.
Selbst ein totaler Stromausfall mit mehreren liegenbleibender Züge hätte absolut keine negativen Folgen, da Fahrstufe und Position jedes einzelnen Zuges gespeichert sind. Sobald der Strom wiederkommt, wird jeder Zug so weiterfahren, als sei niemals eine Unterbrechung aufgetreten.
Die sonstigen Tabellen enthalten Daten wie z.B.
_________________________________
Bei der Struktur der Datensätze für
die Positions-Tabellen habe ich einen etwas ungewöhnlichen Weg
gewählt.
Normalerweise sähe die Tabelle eines Schattenbahnhofs wie folgt
aus:
GleisNr | Dig. Adr. |
1 | 02 |
2 | 23 |
3 | 55 |
usw .. |
Wie man aus der obigen Tabelle
erkennen kann, enthält lediglich die Spalte Dig. Adr.
die für uns interessanten
Informationen. Die Spalte GleisNr wird nur benötigt,
um mit SEEK o.ä. einen Datensatz gezielt
ansprechen zu können.
Die Tabelle benötigt folglich pro Datensatz 2 Felder um 1
Information verwalten zu können.
Wenn wir nun die Tabelle 'um 90° drehen', entsteht folgende Struktur :
Gleis 1 | Gleis 2 | Gleis 3 | Gleis ... |
02 | 23 | 55 | ... |
Nun haben wir nur noch 1 (etwas
breiteren) Datensatz. Der Vorteil liegt nun darin, das wir
alleine über den Namen
des Feldes / der Spalte die Information lesen können.
Beim Schreiben mehrerer Informationen haben wir den Vorteil, mit
nur einem .Edit bzw. .Update
alle Informationen
abzuspeichern.
Zum Abschluß noch eine ganz allgemeine Bemerkung :
In allen EDV-Systemen kommt den Datenbanken eine ganz besondere
Bedeutung zu. Sie enthalten oft unersetzliche,
wichtige Informationen. Ein Verlust dieser Daten zieht dann u. U.
einen finanziellen Schaden, zumindest aber einen enormen
Zeitaufwand zur Wiedergewinnung der Daten nach sich.
Daher kann eine Datensicherung nach Abschluß
der Änderungen nur dringend empfohlen werden.
Wer's nicht glaubt, soll es eben lassen, der Tag an dem er eines
Besseren belehrt wird, kommt ganz bestimmt ...