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!
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:
- Die StudentID in beiden Tabellen sollte übereinstimmen
- 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