sql.07 Relationen


In einer relationalen Datenbanken werden Daten auf mehrere Tabellen verteilt. Mit geeigneten Abfragen können gewünschte Daten aus den verschiedenen Tabellen zusammengestellt werden. Als Brücke zwischen den Tabellen wird der Primärschlüssel einer Tabelle verwendet, der als Fremdschlüssel in eine andere Tabelle eingetragen wird:

  • Mit Hilfe der SQL-Abfrage
SELECT * 
FROM sqlite_master 
WHERE type = 'table';

werden alle Tabellen, welche in der Datenbank "Planeten" gespeichert sind, ausgegeben.

  • Klicken Sie auf "Ausführen..."

Die Datenbank "Planeten" enthält die beiden Tabellen "Planeten", "Eigenschaften" und "Kosmische_Bewegung".


  • Klicken Sie auf "Ausführen..." um den Inhalt der Tabellen anzuzeigen:

Mit der folgenden SQL-Abfrage werden die Daten aus der Tabelle "Planeten" und der Tabelle "Eigenschaften" kombiniert:

Bei der Angabe von zwei Tabellen bei dem Schlüsselwort FROM wird das kartesische Produkt der Datensätze beider Tabellen gebildet.

Dabei wird jeder Datensatz der Tabelle "Planeten" jeweils mit allen Datensätzen der Tabelle "Eigenschaften" kombiniert.

Eine sinnvolle Ausgabe von Daten besteht aus einer Teilmenge der Datensätze des kartesischen Produkts. Die zusammengehörenden Daten werden über den Primärschlüssel und einen Fremdschlüssel miteinander verbunden:

  • In der Tabelle "Planeten" wird jedem Planeten eine eindeutige Planeten-ID pid zugeordnet. Das ist der Primärschlüssel in der Tabelle "Planeten".

  • In der Tabelle "Eigenschaften" wird jedem Datensatz die pid des entsprechenden Planeten aus der Tabelle "Planeten" zugeordnet. Das Attribut pid nennt man in der Tabelle "Eigenschaften" einen Fremdschlüssel.

Mit der folgenden SQL-Abfrage werden nur die Daten aus der Tabelle "Planeten" und der Tabelle "Eigenschaften" zu einem neuen Datensatz kombiniert, welche im Primärschlüssel und Fremdschlüssel übereinstimmen:

Um klar zu dokumentieren welches Attribut man aus welcher Tabelle holt, kann einem Attribut der Name der Tabelle getrennt durch einen Punkt vorangestellt werden:

Planeten.name bezeichnet das Attribut "name" aus der Tabelle "Planeten".


Bei der Ausgabe der Daten wird meist die Brücke zwischen den Tabellen, also der Primärschlüssel aus der einen und der Fremdschlüssel aus der anderen Tabelle, nicht mit ausgegeben:

Die Namen von Primärschlüssel und Fremdschlüssel als Brücke zwischen zwei Tabellen können sich unterscheiden.

Mit der folgenden SQL-Abfrage werden Daten aus den Tabellen "Planeten", "Eigenschaften" und "Kosmische_Bewegung" kombiniert.

Wenn mehr als zwei Tabellen in der SQL-Abfrage kombiniert werden sollen, verbindet man die Zuordnung von Primärschlüssel und Fremdschlüssel mit dem logischen Operator AND.


Eine alternative Formulierung kann mit Hilfe der SQL-Schlüsselworte JOIN und ON erfolgen:

Mit Hilfe von JOIN und ON macht man deutlich, dass man Daten aus verschiedenen Tabellen kombiniert.