Adrian
Aus ProgrammingWiki
Inhaltsverzeichnis |
Datenbank-Beleg Adrian Scheibe
Überlegung
Die Datenbank soll mögliche Aufträge in der Raumfahrtindustrie verwalten, anzeigen und speichern können. Das Ziel dabei ist, dass das Modell mithilfe eines ERM verschiedene Aspekte eines solchen Auftrags anzeigt und alle Faktoren übersichtlich sichtbar macht. Die SQL-Datenbank soll währenddessen eine praktische Umsetzung dieses Konzeptes sein, welches auch praktisch verwendet werden könnte. Natürlich wird der Sachverhalt dafür vereinfacht (siehe Reflexion).
ERM
Mögliches ERM zur Verwaltung von Aufträgen in der Raumfahrt. Mit ERDPlus erstellt
Relationen-Modell
Die Entities / Attribute / Relationships aus dem ERM werden in Tabellen gefasst um sie auf die Umsetzung in einer Datenbank (mit SQL) vorzubereiten. Die Vererbung der Foreign-Keys wird schon vorgenommen. Eine vierte Tabelle wird erstellt um die Ansprüche einer n:m-Beziehung zu entsprechen.
Mögliches RM zur Verwaltung von Aufträgen in der Raumfahrt. Mit ERDPlus erstellt
Das Modell bezieht sich auf den prinzipiellen Aufbau des ERM. Den IDs wurden einzigartige Namen zugeteilt, um sie in einer gemeinsamen Tabelle unterscheiden zu können. Die Tabelle Mission wurde angelegt, um eine n:m-Beziehung zu gewährleisten.
Umsetzung in SQL
Umsetzung der Tabellen in SQL
Einfügen von Daten
Ausgabe aller Werte
Beispiel 1
Beispiel 2
Beispiel 3
Beispiel 4
Beispiel 5
Beispiel 6
Kritische Reflexion
Kardinalitäten
Die Kardinalität gibt in einer Datenbank die Art der Verknüpfung der Tabellen an. Bei einer 1:1 Beziehung existiert für eine Tabelle immer nur eine entsprechende andere Tabelle. 1:n bedeutet dagegen, dass für eine Tabelle beliebig viele andere Tabellen existieren können. Eine n:m Beziehung beinhaltet beliebig viele Tabellen, welche mit beliebig vielen anderen Tabellen verknüpft werden. Für letztere Art ist aufgrund der Komplexität eine dritte "Mittlertabelle" nötig um die Beziehung der Tabellen zu erfassen.
Im Beispiel der Datenbank bedeutet das folgendes: Eine Rakete kann mehrere Nutzlasten tragen, also ist es eine 1:n-Beziehung. Währenddessen können mehrere Aufträge mehrere, sich auch überschneidende Nutzlasten verlangen, also ist es eine n:m-Beziehung. Aus diesem Grund existiert auch eine vierte Tabelle "Mission".
Redundanz
Um Redundanzen in den Datensätzen zu vermeiden und damit das Befüllen der Tabellen reibungsfrei verlaufen kann, beinhaltet die Tabelle keine redundanten Informationen. Zwar kommen die ID-Werte der einzelnen Einträge mehrere Male vor, doch ist dies erwartet, da diese foreign Keys in anderen Tabellen sind und daher für die Verknüpfung dieser Tabellen sorgen.
Normalform
Im besten Fall ist eine Datenbank atomar, das heisst in die Tabelle eingetragene Werte liegen in einem Datentyp vor, der nicht weiter aufgeteilt werden kann. Somit werden einzelne Datensätze voneinander abgeschottet und unnötige Misverständnisse vermieden. Bsp. sind Laufzeit und Startfenster nicht als 2 Daten in einer Spalte zusammengefasst, sondern liegen getrennt vor. Das Datum für das Startfenster könnte mit dem Format YYYY-MM-DD theoretisch noch in diese einzelnen Einheiten aufgeteilt werden, doch ist dies nicht sinnvoll, da sonst bspw. nur der Tag und nicht der Monat oder Jahr bei einem neuen Eintrag gegeben sein könnte, was ungünstig ist. Eine solche Datenbank entspricht der 1. Normalform.
In der 2. Normalform werden die daten weiterhin in logisch voneinander getrennte Tabellen / Abschnitte getrennt um die logische Übersichtlichkeit der Datenbank zu erhöhen. Das geschieht in dieser Datenbank bspw. dadurch, dass ein Auftrag und dazugehörige Nutzlast sowie die Rakete, die diese transportiert getrennt vorliegen. Verknüpft werden die Tebellen mit einzigartigen IDs, die in für den Sachverhalt günstigen Kardinalitäten vorliegen. Somit erfüllt die DB auch die Anforderungen der 2. NF.
Um die Voraussetzungen für die 3. NF zu erfüllen müsste eine solche DB unnötige Abhängigkeiten der gegebenen Werte vermeiden, indem diese ebenfalls getrennt vorliegen. Das ist allerdings in dieser DB nicht gegeben, da z.B. eine neue Tabelle für die Treibstoffarten der Rakete oder der Auftraggeber angelegt werden könnte. Aus diesem Grund erfüllt die DB "nur" die Anforderungen der 2. NF, was allerdings trotzdem für eine relativ simple DB ausreichen sollte, welche diese ist. Daher ist es nicht immer notwendig die Integrität einer DB in das höchste Maß darzustellen, wenn diese nur demonstrativen Zwecken dient und in keinem kritischen (Produktions-) Umfeld eingesetzt wird.
IDs
Alle Entities haben eine einzigartige ID um sie im System voneinander unterscheiden zu können. Diese werden mit 6-stelligen Hex-Werten befüllt, da es so viele Kombinationsmöglichkeiten gibt und zudem alle IDs die selbe Anzahl an Zahlen besitzen, was die Umsetzung erleichtern kann.
Modellierung des Sachverhalts
Die Raumfahrt ist nicht ohne Grund bekannt dafür, schwer zu sein. Das trifft natürlich auch auf das Umfeld solcher Missionen zu. Um den Sachverhalt dennoch in eine Datenbank von mäßigem Umfang darstellen zu können, sind vereinfachungen notwendig. So werden bspw. nicht verschiedene Unteraufträge berücksichtigt, die im Budget berücksichtigt werden müssten zudem beinhaltet die DB keine kompletten Aufzeichnungen von z.B. Raketen oder Aufträgen, da diese den Umfang zum einen Sprengen würden und zum anderen oft vertraulicher Natur sind. Die DB soll somit nur ein Beispiel für die Umsetzung eines solchen Sachverhaltes auf vereinfachte Weise sein.
Einheiten
Das wohl größte Problem der DB ist, dass die in den Tabellen eingetragenen Einheiten nicht sofort ersichtlich sind. Zwar wurde die Tabelle zum großen Teil mit Standardeinheiten befüllt, doch könnte es zu Problemen kommen falls z.B. ein Budget in Euro und die Kosten für eine Rakete in USD angegeben werden.
Lernpotential
Zusammenfassend lässt sich sagen, dass selbst das Erstellen einer relativ simplen und nicht für den Produktiveinsatz geigneten DB durchaus ein großes Lernpotenzial birgt. Zum einen bringt das Denken in Kardinalitäten und das Anpassen der DB mithilfe der Normalformen ein besseres Verständnis über die Funktionsweise und die Überlegungen einer DB. Und zum anderen ist es oft einfach nur interessant, sich mit Sachverhalten unter dem Gesichtspunkt einer strukturierten DB auseinanderzusetzen und Probleme auch so anzugehen.
Quellen
Tools
- ERDPlus

