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 ...