Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Grundkurs 1: Die Sprache erlernen

JOIN vs. FOREIGN KEY

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Beziehung und Verknüpfung werden in der Praxis häufig nicht korrekt unterschieden und interpretiert und somit verwechselt oder fälschlicherweise gleichgesetzt. Hierbei handelt es sich jedoch um zwei grundlegend unterschiedliche Dinge. Dieser Film bringt diesbezüglich Licht ins Dunkel.

Transkript

In diesem Video möchte ich eine Begriffsdefinition für die Begriffe "Beziehung", "Relation" auf der einen Seite gegenüber dem Begriff "Verknüpfung" auf der anderen Seite vornehmen. Ich erlebe in der Praxis immer wieder, dass diese Begriffe verwechselt werden, gleichgesetzt werden oder sonst in irgendeiner Form falsch interpretiert werden. Unter einer Beziehung und Relation, der technische Ausdruck ist "the foreign key", also ein Fremdschlüssel. Der "Foreign Key" implementiert eine Beziehung und eine Verknüpfung, das ist ein "Join". Eine Beziehung ist ein fixer Bestandteil der Datenbankstruktur, d.h. wenn Sie eine Datenbank erstellen, mit Tabellen, dann werden die Beziehungen direkt in der Datenbank implementiert. Wenn wir uns das z.B. in einem Datenbankdiagramm ansehen, dann sehen wir hier einzelne Tabellen und die Linien, die zwischen diesen Tabellen zu sehen sind, das sind die Beziehungen. Diese Beziehungen definieren, wie die Daten zusammengehören und erzwingen in weiterer Folge Regeln. Diese Regeln, auch die "referenzielle Integrität" genannt, stellen sicher, dass Informationen in einer relationalen Datenbank vollständig sind. Sie können also in eine Fremdschlüsselspalte nur etwas eintragen, das es in der Primärschlüsselspalte einer referenzierten Tabelle auch wirklich gibt. So können Sie z.B. in einer Rechnungstabelle nur eine Kundennummer erfassen, die in der Kundentabelle auch wirklich vorhanden ist. Damit Sie so eine Beziehung in einer Datenbank erstellen können, gelten relativ hohe Voraussetzungen. Sie müssen z.B. die Datentypen und die Größe zwischen Fremdschlüssel und Primärschlüssel übereinstimmen. Sie können eine Beziehung nicht herstellen, wenn die Fremdschlüsselspalte einen numerischen Datentyp und die Primärschlüsselspalte z.B. einen Characterdatentyp aufweist. Selbst wenn Sie denselben Datentyp mit einer unterschiedlichen Größenausprägung aufweisen, ist es nicht möglich. Zum Beispiel ein Character mit Fünfstellenlänge auf der einen Seite und ein Character mit Zehnstellenlänge auf der anderen Seite machen das Erstellen einer Beziehung unmöglich. Was ist jetzt im Gegensatz dazu ein "Join"? Ein "Join" hat nichts mit der Struktur einer Datenbank zu tun, sondern ein "Join" oder eine Verknüpfung ist mehr oder weniger eine Verfahrensanweisung in einer SQL-Anweisung. Bei einem "Join", bei einem Select-Statement beispielsweise teilen wir dem System mit, wie wir wollen, dass die Informationen, die Daten für die Ausgabe zusammengefügt werden. Das ist etwas Temporäres innerhalb der SQL-Anweisung und es hat nichts mit der Struktur der Datenbank zu tun. Daher werden auch keinerlei Regeln erzwungen. Aus diesem Grund sind auch die Voraussetzungen für einen "Join" relativ gering. Sie können einen "Join" selbst dann realisieren, wenn es auf den ersten Blick überhaupt keine gleichen oder übereinstimmenden Informationen in den zu "joinenden" Tabellen gibt. Sie können die Sachverhalte für das bessere Verständnis auch ganz gut auf das reale Leben übertragen. Wenn Sie mit jemandem eine Beziehung eingehen, dann ist das etwas Fixes, d.h. es ist ein Bestandteil Ihrer Lebensstruktur. Mehr oder weniger kennen Sie vielleicht den Zustand, wenn Sie in einer fixen Beziehung sind, dass gewisse Regeln erzwungen werden. Wenn auch nicht so streng wie bei der referenziellen Integrität, aber vereinfacht ausgedrückt, Sie können auch nicht mehr einfach das tun, was Sie wollen, sondern Sie müssen auf den Partner oder die Partnerin Rücksicht nehmen. Damit Sie mit jemandem eine Beziehung eingehen, werden Sie typischerweise hohe Voraussetzungen ansetzen, d.h. der oder diejenige müssen Ihnen sympathisch sein, gewisse Eigenschaften müssen zusammenpassen oder sich ähneln, d.h. die Voraussetzungen sind relativ hoch. Die Verknüpfung sagt lediglich aus z.B. mit wem Sie gerade einen Kaffee trinken gehen. Das heißt, es definiert, mit wem Sie temporär im Moment gemeinsam etwas unternehmen, deshalb werden hier auch keinerlei Regeln erzwungen und die Voraussetzungen, mit wem Sie einen Kaffee trinken gehen, werden wesentlich geringer sein als diejenigen Voraussetzungen, die Sie an jemanden stellen, mit dem Sie eine Beziehung eingehen. Was ist der Grund, warum diese beiden Dinge so gerne verwechselt werden in der Praxis? Natürlich gibt es einen Konnex, nämlich in der Praxis ist die Beziehung eine Vorgabe für den "Join". Doch hier wieder die Parallele zur Realität. Wenn Sie am Wochenende sich überlegen, mit wem Sie ausgehen möchten und Sie stehen in einer fixen Partnerschaft, dann haben sie insofern eine Vorgabe, dass Sie sagen: "na ja, jetzt bin ich mit meiner Partnerin oder meinem Partner zusammen, also werde ich mit ihm oder mit ihr ausgehen und diesen einen schönen Abend verbringen". Dasselbe gilt hier für eine Beziehung. Wenn in einer Datenbank eine Beziehung zwischen zwei Tabellen existiert und die zwei Tabellen werden in einer Select-Anweisung "gejoint", dann ist natürlich die Beziehung Vorgabe für den "Join". Wir sehen z.B. zwischen Artikelgruppe und Artikel besteht eine Beziehung. Die Fremdschlüsselspaltegruppe verweist hier auf die Primärschlüsselspalte "Art GR". Das heißt, wir wissen aufgrund der Beziehung, dass hier in dieser Spaltengruppe dasselbe enthalten sein muss wie hier in der Spalte "Art GR". Das heißt, diese Informationen können wir für das Erstellen des "Joins" heranziehen und wir können auf jeden Fall eine "Join" Bedingung definieren, wo wir sagen: "Der Inhalt dieser Spalte hier entspricht dem Inhalt dieser Spalte hier". Also insofern ist die Beziehung eine Vorgabe für den "Join". Auch folgenden Sachverhalt können wir gut auf die Realität übertragen. Sie können in einer Datenbank "joinen", selbst dann, wenn es keine Beziehung gibt, d.h. eine Beziehung ist keine Voraussetzung für einen "Join", lediglich eine Vorgabe. Dasselbe gilt ja auch in der Realität. Sie können mit jemandem einen Kaffee trinken gehen, auch wenn Sie zurzeit mit niemandem in einer Beziehung stehen, d.h. eine Beziehung ist keine Voraussetzung für eine Verknüpfung. In diesem Video haben Sie nun gesehen, welche Bedeutung hinter den Begriffen "Beziehung" und "Verknüpfung" steckt und was diese beiden miteinander zu tun haben.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!