Premium

Struktur relationaler Datenbanken

Wir haben relationale Datenbanken bereits kurz im vorigen Artikel kennengelernt. Aber ein oberflächliches Verständnis reicht uns natürlich nicht? Lass uns über die Bojen hinausschwimmen und tiefer in die Struktur und Terminologie relationaler Datenbanken eintauchen.

Struktur einer Tabelle

In relationalen Datenbanken werden Informationen in miteinander verknüpften Tabellen gespeichert. Die Tabellen selbst bestehen aus:

  • Zeilen, die „Datensätze“ genannt werden
  • Spalten, die „Felder“ oder auch „Attribute“ genannt werden

Struktur einer Tabelle

In jeder Tabelle hat jede Spalte einen vorab festgelegten Datentyp. Das können zum Beispiel sein:

  • VARCHAR (Datentyp für Zeichenketten)
  • INTEGER (numerischer Datentyp)
  • DATETIME (Datentyp für Datum und Uhrzeit) und weitere

Und jede Zeile der Tabelle muss für jede Spalte den passenden Typ haben. Das DBMS wird es nicht zulassen, eine beliebige Zeichenkette in ein Feld vom Typ DATETIME einzufügen.

Um die Datentypen der Attribute herauszufinden, kannst du einen SQL-Befehl ausführen und den Namen der Tabelle angeben:

MySQL 8.1
DESCRIBE FamilyMembers
FieldTypeNullKeyDefaultExtra
member_idintNOPRI
statusvarchar(50)NO
member_namevarchar(50)NO
birthdaydatetimeNO
MySQL 8.1
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'familymembers'
  AND table_schema = current_schema();
column_namedata_typeis_nullable
member_idintegerNO
statuscharacter varyingNO
member_namecharacter varyingNO
birthdaytimestamp without time zoneNO

Oder du schaust dir das ER-Diagramm des Datenbankschemas an:

Primary Key

Jedes DBMS hat ein eingebautes System für Datenintegrität und Widerspruchsfreiheit. Dieses System arbeitet mit einer Reihe von Regeln, die im Schema der Datenbank festgelegt sind. Primary Key und Foreign Keys gehören genau zu diesen Regeln.

Um Mehrdeutigkeiten bei der Suche in Tabellen zu vermeiden, gibt es den Primary Key, oder, wie er auch genannt wird, das „Schlüsselfeld“.

Das Schlüsselfeld (Primary Key) ist ein Feld (oder eine Menge von Feldern), dessen Wert einen Datensatz in der Tabelle eindeutig identifiziert.

Wenn wir uns unsere oben erwähnte Tabelle FamilyMembers anschauen, dann ist dort member_id das Schlüsselfeld. Dank dieser Regel erlaubt uns das DBMS nicht, einen neuen Datensatz anzulegen, bei dem das Feld member_id nicht eindeutig ist.

Es ist anzumerken, dass das Vorhandensein eines Primary Key nicht zwingend erforderlich ist und die Datenintegrität zum Beispiel auch auf Anwendungsebene sichergestellt werden kann.

Foreign Key

Ein Foreign Key ist ein Feld (oder eine Menge von Feldern) in einer Tabelle, das auf den Primary Key einer anderen Tabelle verweist.

Die Tabelle mit dem Foreign Key wird als Kindtabelle bezeichnet, die Tabelle mit dem Primary Key als referenzierte oder Elterntabelle.

Die Foreign-Key-Regel garantiert, dass beim Anlegen von Datensätzen in der Kindtabelle der Wert des Feldes, das als Foreign Key fungiert, in der Elterntabelle vorhanden ist.

Beispiel für Foreign Keys

Das Vorhandensein eines Foreign Key ist genauso wenig zwingend wie das Vorhandensein eines Primary Key.

Ist kein Foreign Key definiert, funktioniert alles weiterhin, aber das DBMS prüft zum Beispiel nicht, ob beim Anlegen eines Datensatzes in der Tabelle Purchase in den Feldern buyer_id und good_id Werte stehen, die in den entsprechenden Tabellen im Feld id definiert sind.

Welche der folgenden Aussagen ist falsch in Bezug auf Schlüssel in relationalen DBMS?