m-n-Beziehungen

In der Musikdatenbank gab es nur 1:n-Beziehungen. Häufig findet man jedoch Beziehungen zwischen zwei Klassen, bei denen jeweils ein Objekt der einen Klasse mit mehreren Objekten der anderen Klasse in Beziehung stehen kann.

Beispiele:

Solche Beziehungen nennt man m:n-Beziehungen. Bei der Umsetzung in Tabellen, ist es nicht möglich einfach eine Spalte bei einer Tabelle hinzuzufügen wie wir im folgenden Beispiel sehen.

So müsste entweder bei der Tabelle Lehrkraft alle von ihr unterrichteten Fächer vermerkt werden oder bei der Tabelle Unterrichtsfach alle zugehörigen Lehrkräfte eingetragen werden. Ein Eintrag in einer Spalte einer Tabelle sollte immer nur aus einem Eintrag sein. Man bezeichnet dies auch als atomar, also unteilbar.

Die Lösung des Problems besteht darin, die Beziehung in einer eigenen Tabelle unterrichte umzusetzen, die aus zwei Spalten besteht. Die erste Spalte enthält den Primärschlüssel der Tabelle Lehrkraft und die zweite Spalte den Primärschlüssel der Tabelle Unterrichtsfach.

Die Tabelle unterrichtet enthält damit zwei Fremdschlüssel aus zwei Tabellen. Da eine Lehrkraft ein Fach nur einmal unterrichten kann, ist die Kombination aus den beiden Fremdschlüsseln eindeutig und einmalig, also ein geeigneter Primärschlüssel für die Verknüpfungstabelle. Häufig wird bei Datenbanken aber auch ein zusätzlicher künstlicher Schlüssel verwendet.

Das folgende Datenbankfenster enthält eine Datenbank mit den Tabellen Lehrkraft und Unterrichtsfach, die einige Datensätz enthalten. Die SQL-Anweisungen im Codefenster sorgen dafür, dass die Beziehungstabelle unterrichtet erzeugt wird und zwei Datensätze eingefügt werden.

Führe alle SQL-Anweisungen im folgenden Fenster aus und analysiere die Wirkung.

Die erste Anweisung löscht eine evtl. bestehende Beziehungstabelle.
Die folgende Anweisung erzeugt die Beziehungstabelle.
Anschließend werden zwei Datensätze eingetragen, die Herrn Meyer als Mathematik- und Physiklehrer beschreiben.
Am Ende werden die Namen aller Lehrkräfte mit ihrem zugehörigen Unterrichtsfach ausgegeben. Dabei werden die Tabellen lehrkraft und unterricht sowie die Tabellen unterrichtet und fach jeweils über einen Join verknüpft.

Ergänze im letzten Eingabefenster die Beziehungstabelle um folgende Informationen. Nutze dazu den Befehl
INSERT INTO unterrichtet Values('lehrerkürzel','fach');

Beziehungen zwischen Tabellen, bei denen jeweils ein Datensatz einer Tabelle mit mehreren Datensätzen der anderen Tabelle in Beziehung stehen kann, nennt man m:n-Beziehungen.

Bei der Umsetzung in Tabellen wird für die m:n-Beziehung eine eigene Tabelle angelegt. Ein Datensatz dieser Beziehungstabelle besteht dann aus den beiden Primärschlüssel der Tabellen. In der Beziehungstabelle sind dies damit Fremdschlüssel. Beide Spalten können gleichzeitig auch wieder als Primärschlüssel der Beziehungstabelle dienen.

Die folgende Datenbank enthält die Tabellen Foto und Person.

Begründe dass die Tabellen sinnvoll mit einer m:n-Beziehung verknüpft werden können.

Erstelle eine geeignete Beziehungstabelle und füge in die Tabellen Datensätze ein, so dass folgende Aussagen zutreffen: