DBMS - Datenbankverknüpfungen: Ein freundlicher Leitfaden für Anfänger

Hallo da draußen, zukünftige Datenbank-Zauberer! Heute machen wir uns auf eine aufregende Reise in die Welt der Datenbankverknüpfungen. Keine Sorge, wenn du noch nie eine Zeile Code geschrieben hast – ich werde dein freundlicher Guide sein, und wir werden dieses Thema Schritt für Schritt angehen. Am Ende dieses Tutorials wirst du Tabellen wie ein Profi verknüpfen können!

DBMS - Database Joins

Was sind Datenbankverknüpfungen?

Bevor wir uns mit den verschiedenen Arten von Verknüpfungen beschäftigen, lassen wir uns erst einmal anschauen, was eine Verknüpfung eigentlich ist. Stell dir vor, du hast zwei getrennte Listen: eine mit Schülernamen und ihren Lieblingsfarben und eine andere mit Schülernamen und ihren Noten. Eine Verknüpfung ist wie magischer Kleber, der diese Listen basierend auf einem gemeinsamen Element (in diesem Fall die Schülernamen) zusammenfügt, um dir einen umfassenderen Überblick über die Daten zu geben.

Nun, lassen wir uns die verschiedenen Arten von Verknüpfungen anschauen!

Theta (θ) Verknüpfung

Die Theta-Verknüpfung ist wie der weise alte Großvater aller Verknüpfungen. Sie ist sehr flexibel und ermöglicht es uns, Tabellen basierend auf jeder Bedingung, die wir angeben, zusammenzufügen. Das θ (Theta) in ihrem Namen repräsentiert diese Bedingung.

Schauen wir uns ein Beispiel an:

SELECT *
FROM Students S, Grades G
WHERE S.StudentID = G.StudentID AND S.Age > 18

In diesem Beispiel verknüpfen wir die Tabelle Students mit der Tabelle Grades basierend auf zwei Bedingungen:

  1. Die StudentID in beiden Tabellen sollte übereinstimmen
  2. Das Alter des Schülers sollte größer als 18 sein

Diese Verknüpfung wird uns ein Ergebnis liefern, das alle Spalten aus beiden Tabellen enthält, aber nur für Schüler über 18.

Equijoin

Ein Equijoin ist ein spezieller Fall der Theta-Verknüpfung, bei dem die Bedingung immer ein Gleichheitsvergleich ist. Es ist, als ob man sagt: "Verknüpfe diese Tabellen nur, wo diese Spalte exakt übereinstimmt."

Hier ist ein Beispiel:

SELECT S.Name, G.Subject, G.Grade
FROM Students S, Grades G
WHERE S.StudentID = G.StudentID

Diese Abfrage wird uns eine Liste von Schülernamen, Fächern und Noten geben, aber nur, wo die StudentID in beiden Tabellen übereinstimmt.

Natürliche Verknüpfung (⋈)

Die natürliche Verknüpfung ist wie der beste Freund des faulen Programmierers. Sie verknüpft Tabellen automatisch basierend auf Spalten mit denselben Namen. Es ist praktisch, aber sei vorsichtig – es kann manchmal unerwartete Ergebnisse geben, wenn du nicht alle deine Spaltennamen kennst!

So sieht es aus:

SELECT *
FROM Students NATURAL JOIN Grades

Dies wird die Tabellen Students und Grades basierend auf allen gemeinsamen Spalten (vermutlich StudentID in diesem Fall) verknüpfen.

Äußere Verknüpfungen

Nun, lassen wir uns über Äußere Verknüpfungen sprechen. Diese sind besonders nützlich, wenn du alle Einträge aus einer oder beiden Tabellen behalten möchtest, auch wenn es in der anderen Tabelle keine Übereinstimmung gibt. Es gibt drei Arten von äußeren Verknüpfungen:

Linker Äußerer Join (R ⟕ S)

Ein linker äußerer Join behält alle Einträge aus der linken Tabelle (R), auch wenn es in der rechten Tabelle (S) keine Übereinstimmung gibt.

Beispiel:

SELECT S.Name, G.Subject, G.Grade
FROM Students S LEFT OUTER JOIN Grades G
ON S.StudentID = G.StudentID

Diese Abfrage wird alle Schüler auflisten, sogar die, die noch keine Noten haben.

Rechter Äußerer Join (R ⟖ S)

Ein rechter äußerer Join ist das Gegenteil eines linken äußeren Joins. Er behält alle Einträge aus der rechten Tabelle (S), auch wenn es in der linken Tabelle (R) keine Übereinstimmung gibt.

Beispiel:

SELECT S.Name, G.Subject, G.Grade
FROM Students S RIGHT OUTER JOIN Grades G
ON S.StudentID = G.StudentID

Diese Abfrage wird alle Noten auflisten, sogar für Schüler, die möglicherweise aus der Students-Tabelle entfernt wurden.

Vollständiger Äußerer Join (R ⟗ S)

Ein vollständiger äußerer Join ist so, als ob man sagt: "Ich will alles!" Er behält alle Einträge aus beiden Tabellen bei, unabhängig davon, ob es eine Übereinstimmung gibt oder nicht.

Beispiel:

SELECT S.Name, G.Subject, G.Grade
FROM Students S FULL OUTER JOIN Grades G
ON S.StudentID = G.StudentID

Diese Abfrage wird uns alle Schüler und alle Noten geben, sogar wenn ein Schüler keine Noten hat oder eine Note keinem Schüler entspricht.

Vergleich der Verknüpfungstypen

Um dir zu helfen, all diese Verknüpfungen zu merken, lassen wir sie in einer praktischen Tabelle zusammenfassen:

Verknüpfungstyp Beschreibung Unmatched Rows von
Theta Join Verknüpft basierend auf jeder Bedingung Keine Tabelle
Equijoin Verknüpft basierend auf Gleichheit Keine Tabelle
Natürliche Verknüpfung Automatisch basierend auf gemeinsamen Spalten Keine Tabelle
Linker Äußerer Join Behält alle Rows der linken Tabelle Linker Tabelle
Rechter Äußerer Join Behält alle Rows der rechten Tabelle Rechter Tabelle
Vollständiger Äußerer Join Behält alle Rows beider Tabellen Beide Tabellen

Und das war's! Du hast gerade deine ersten Schritte in die Welt der Datenbankverknüpfungen gemacht. Denke daran, Übung macht den Meister, also habe keine Angst, diese verschiedenen Verknüpfungstypen an deinen eigenen Datensätzen auszuprobieren.

Genau wie das Fahrradfahren fühlt es sich am Anfang vielleicht etwas wackelig an, aber bald wirst du mit Leichtigkeit durch deine Daten navigieren. Und wer weiß? Vielleicht wirst du eines Tages derjenige sein, der anderen über die Magie der Datenbankverknüpfungen beibringt!

Weiterschreiben, weiterlernen und vor allem: Viel Spaß bei deinen Datenabenteuern!

Credits: Image by storyset