n:n-Beziehungen
Eine n:n-Beziehung besteht, wenn mehrere Datensätze in einer Tabelle mit mehreren Datensätzen in einer anderen Tabelle verknüpft sind. Zum Beispiel besteht eine n:n-Beziehung zwischen Kunden und Produkten: Kunden können viele Produkte kaufen und Produkte können von vielen Kunden gekauft werden.
Relationale Datenbanksysteme erlauben Ihnen gewöhnlich nicht, eine direkte n-n-Beziehung zwischen zwei Tabellen einzurichten. Betrachten Sie das Beispiel einer Rechnungsnachverfolgung. Wenn viele Rechnungen mit derselben Rechnungsnummer bestünden und einer Ihrer Kunden würde sich über diese Rechnungsnummer erkundigen, wüssten Sie nicht, auf welche Rechnungsnummer er sich bezieht. Das ist einer der Gründe, weshalb jeder Rechnung ein eindeutiger Wert zugewiesen wird.
Um dieses Problem zu vermeiden, können Sie die n:n-Beziehung in zwei 1:n-Beziehungen zerlegen, indem Sie eine dritte Tabelle verwenden, eine sogenannte Verknüpfungstabelle. Jeder Datensatz in einer Verknüpfungstabelle umfasst ein Abgleichsfeld, das den Wert der Primärschlüssel von den beiden Tabellen enthält, die sie verknüpft. (In der Verknüpfungstabelle sind diese Abgleichsfelder Fremdschlüssel.) Diese Fremdschlüsselfelder werden mit Daten gefüllt, während Datensätze in der Verknüpfungstabelle von den Tabellen, die sie verknüpft, erstellt werden.
Ein typisches Beispiel für eine n:n-Beziehung ist eine zwischen Studenten und Klassen. Ein Student kann sich für mehrere Klassen anmelden und eine Klasse kann viele Studenten umfassen.
Das folgende Beispiel verwendet die Tabelle „Studenten“ mit einem Datensatz für jeden Studenten und die Tabelle „Klassen“ mit einem Datensatz pro Klasse. Eine Verknüpfungstabelle, „Einschreibungen“, erstellt zwei 1:n-Beziehungen – eine für jede der beiden Tabellen.
Der Primärschlüssel „StudentenID“ identifiziert jeden Studenten in der Tabelle „Studenten“ eindeutig. Der Primärschlüssel „KlassenID“ identifiziert jede Klasse in der Tabelle „Klassen“ eindeutig. Die Tabelle „Einschreibungen“ enthält die Fremdschlüssel „StudentenID“ und „KlassenID“.
So richten Sie eine Verknüpfungstabelle für eine n:n-Beziehung ein:
- Erstellen Sie anhand des obigen Beispiels eine Tabelle mit dem Namen „Einschreibungen“. Das wird die Verknüpfungstabelle sein.
- Erstellen Sie in der Tabelle „Einschreibungen“ ein Feld „StudentenID“ und ein Feld „KlassenID“.
Verknüpfungstabellen enthalten in der Regel Felder, die in einer anderen Tabelle kaum Sinn hätten. Sie können der Tabelle „Einschreibungen“ Felder hinzufügen, z. B. das Feld „Datum“, um nachzuverfolgen, wann jemand eine Klasse begonnen hat, und ein Feld „Kosten“, um nachzuverfolgen, wie viel ein Student für die Teilnahme an einer Klasse bezahlt hat.
- Erstellen Sie eine Beziehung zwischen den beiden Feldern „StudentenID“ in den Tabellen. Erstellen Sie eine Beziehung zwischen den beiden Feldern „KlassenID“ in den Tabellen.
Wenn sich bei diesem Design ein Student für drei Klassen anmeldet, gibt es für ihn einen Datensatz in der Tabelle „Studenten“ und drei Datensätze in der Tabelle „Einschreibungen“ – einen Datensatz für jede Klasse, bei der er sich angemeldet hat.
Hinweise
- Verknüpfungstabellen können auf Felder und Daten über Tabellen hinweg zugreifen, ohne dass eine separate Beziehung erstellt werden muss. Um beispielsweise eine Liste aller Klassen anzuzeigen, bei denen sich ein Student angemeldet hat, erstellen Sie basierend auf der Tabelle „Studenten“ einen Ausschnitt auf einem Layout. Gestalten Sie den Ausschnitt so, dass er Bezugsdatensätze aus der Tabelle „Klassen“ zeigt. Fügen Sie dann dem Ausschnitt die passenden Felder aus „Klassen“ hinzu. Während Sie durch die Datensätze im Layout „Studenten“ blättern, zeigt der Ausschnitt alle Klassen, bei denen ein bestimmter Student angemeldet ist.