Java

Relationale Datenbanken

Inhaltsübersicht

Es gibt unterschiedliche Herangehensweisen, um Datenbanken anzulegen. In diesem Beitrag zeigen wir dir eines der möglichen Modelle.

Anlegen der Daten in Tabellenform

Um Datenbanken zu erstellen, braucht man Datenmodelle. Diese beschreiben die Eigenschaften der Datenelemente beziehungsweise ihre Struktur. Das inkludiert die Konsistenzbedingungen zwischen verschiedenen Datenelementen und Zugriffsoperationen wie zum Beispiel Speichern, Suchen, Ändern und Löschen. Am meisten verwendet wird das relationale Datenmodell.  Laut diesem Modell besteht jede Datenbank aus einer Menge von Tabellen. Das bedeutet, dass jeder Spalte ein Datentyp mit zugehörigem Wertebereich zugeordnet ist.

Datenmodelle beschreiben Eigenschaften der Datenelemente

Mathematisch gesehen sind Datenbanken allerdings nicht mal das. Die Mathematik beschreibt Datenbanken als Relationen. Dabei steht der Tabellenname für den Namen der Relation zwischen den Daten, der Spaltenname für den Wertebereich, auch Attribut genannt. Die Zeile ist ein Tupel und die zugehörige Relation die Menge der Zeilen.

Das kannst du dir in etwa so vorstellen: Du hast eine Tabelle in deiner Datenbank, die als Leaderboard für ein Online-Game fungiert. Darin speicherst du einen Datensatz, also ein Tupel, mit den Attributen ID, Time, Score und Rank.

Bestandteile einer Tabelle

Übersetzung der Datentypen

Die Objekte aus Java sind jedoch nicht einfach so in deiner Datenbank abspeicherbar. Du musst sie dafür erst übersetzen.

Das geht ganz einfach, man muss nur wissen, in was man welche Datentypen übersetzen muss. Man braucht also ein Wörterbuch. Klassen und strukturierte Datentypen erhalten ihre eigene Tabelle, einwertige Attribute werden zu Spalten einer Tabelle. Objekte werden mit ihren Werten in die Zeilen der Tabelle eingetragen.

Wichtig ist dabei, dass ein sogenannter Primärschlüssel vorliegt. Ein Primärschlüssel ist eine Spalte, in der kein Wert doppelt vorkommt und damit ein Wert eindeutig einer Zeile zugeordnet werden kann. Liegt kein solches Attribut vor, fügt man ein künstliches hinzu, ähnlich wie die ID in unserem Beispiel.

In den meisten Fällen genügt es, die Einträge der Tabelle einfach durchzunummerieren.

Wichtig für die Übersetzung ist der Primärschlüssel

Wir wissen jetzt also, was wir mit einwertigen Attributen machen, aber was machen wir mit Attributen, die mehrere Werte haben können?

Schüler zum Beispiel haben mehrere Fächer. Wie also tragen wir sie ein? Für solche Fälle gibt es den sogenannten Fremdschlüssel. Wir können ihn nutzen, um auf eine andere Tabelle zu verweisen, in der unsere Fächer stehen. Wir tragen also all unsere Fächer in eine Tabelle ein und fügen als Primärschlüssel eine Nummer ein. Dann tragen wir in die Spalte der Schüler-Tabelle unseren Fremdschlüssel, in Form von eben dieser Nummerierung ein. Wir nutzen also den Primärschlüssel einer anderen Tabelle als Fremdschlüssel für unsere.

Auch für Schüler, die bestimmte Fächer nicht belegt haben, gibt es eine Lösung. Anstatt eines Fachs füllen wir die betroffene Spalte einfach mit NULL.

 

Der Fremdschlüssel verweist auf eine andere Tabelle

In Java gibt es aber auch noch strukturierte Datentypen. Diese bieten sich durch ihre Struktur geradezu für die Verwendung mit Datenbanken an. Hierbei musst du allerdings beachten, dass der strukturierte Datentyp in eine eigene Tabelle übersetzt und nicht in die Tabelle der Klasse integriert wird.

Um auf diese andere Tabelle zu verweisen, nutzen wir erneut den Fremdschlüssel und verbinden so das Objekt der Klasse mit dem Datentyp.

Übersetzung von Assoziationen zwischen Klassen

Jetzt können wir also Klassen und Datentypen übersetzen. Das Einzige, was uns jetzt noch fehlt, sind Assoziationen zwischen Klassen.

Assoziationen können auf drei verschiedene Weisen übersetzt werden, je nachdem, von welchem Typ sie sind.

Handelt es sich um eine Assoziation mit einwertigem Ende, werden beide Klassen in separate Tabellen übersetzt und assoziierte Objekte mittels Fremdschlüsseln verbunden.

Erster Fall: Assoziationen mit einwertigem Ende

Liegt eine Assoziation mit mehrwertigen Enden vor, müssen wir das ganze etwas komplexer gestalten, denn wir legen eine zusätzliche sogenannte Assoziationstabelle an.

Zweiter Fall: Assoziationen mit mehrwertigem Ende

In diese Tabelle schreiben wir nichts außer die Primärschlüssel der beiden Klassen-Tabellen. Damit ist es uns möglich, diese zu verknüpfen.

Vererben Klassen Eigenschaften, wird die Übersetzung noch komplexer. Doch auch hierfür gibt es drei Möglichkeiten.

Zum einen gibt es die Möglichkeit, eine große Tabelle anzulegen, die als sogenannte Wurzeltabelle fungiert. Sie enthält alle Attribute aller Unterklassen. Dies ist die einfachste und daher auch am meisten verwendete Methode der drei.

Bei der Vererbung von Eigenschaften kann man entweder eine Wurzeltabelle anlegen…

Sollte das aus irgendeinem Grund nicht möglich sein, kannst du stattdessen eine eigene Tabelle für jede konkrete Klasse anlegen, die deren Eigenschaften und die Eigenschaften der abstrakten Oberklassen enthält.

…eine Tabelle für jede konkrete Klasse erstellen…

Sollte auch das nicht die passende Lösung für dein Projekt sein, gibt es noch die Möglichkeit, für jede Klasse, auch die abstrakten, eine eigene Tabelle zu erstellen.

…oder man erstellt eine Tabelle für jede konkrete und abstrakte Klasse

Während Methode eins ohne solche Hilfsmittel auskommt, ist es für die Methoden zwei und drei unerlässlich, einen Fremdschlüssel zu benutzen.

Jetzt weißt du, wie du Daten aus deinem Programm in eine relationale Datenbank überträgst. Viel Spaß dabei!


Andere Nutzer halten diese Inhalte aus dem Bereich „Java“ für besonders klausurrelevant

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung. Bitte lade anschließend die Seite neu.