Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Eine m:n-Beziehung ist eigentlich gar keine echte Beziehung, sondern die Kombination zweier per 1:n-Beziehung verknüpfter Tabellen – wobei es eine dritte Tabelle gibt, welche die beiden per m:n-Beziehung zu verknüpfenden Tabellen verbindet. Dazu stellt diese Verknüpfungstabelle zwei Fremdschlüsselfelder, über die sie mit den beiden übrigen Tabellen verknüpft wird und diese so miteinander verbindet. Was es beim Anlegen solcher m:n-Beziehungen zu beachten gibt, welche Sonderfälle man wozu nutzen kan und welche Möglichkeiten sich sonst noch bieten, zeigen wir in diesem Artikel.
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank 2301_TabellenBasics_mnBeziehungen.accdb.
Rückblick: 1:n-Beziehungen
Im Artikel Tabellen [basics]: 1:n-Beziehungen (www.access-basics.de/571) haben wir die 1:n-Beziehung vorgestellt. Eine 1:n-Beziehung verwenden wir immer, wenn wir einem Element einer Entität mehrere Elemente einer anderen Entität zuordnen wollen – und nicht umgekehrt. Das ist zum Beispiel bei Kunden und Anreden der Fall. Jeder Kunde bekommt eine Anrede, aber jede Anrede kann mehreren Kunden zugeordnet werden.
Ein anderes Beispiel sind Kunden und Bestellungen. Jede Bestellung wird einem Kunden zugeordnet, aber jeder Kunde kann mehrere Bestellungen haben. Jede Konto hat mehrere Transaktionen, aber jede Transaktion wird nur einem Konto zugeordnet. Die Beziehungen werden jeweils über ein Fremdschlüsselfeld hergestellt, in das wir den Wert des Primärschlüsselfeldes der Tabelle mit dem zu verknüpfenden Datensatz eintragen. So tragen wir beispielsweise in der Kundentabelle den Primärschlüsselwert der Anrede des Kunden aus der Anredentabelle in ein Fremdschlüsselfeld namens AnredeID ein.
m:n-Beziehungen
m:n-Beziehungen sind nicht anderes als zwei Tabellen, deren Primärschlüsselwerte über eine dritte Tabelle, der sogenannten Verknüpfungstabelle, mit einander verknüpft werden. Der Unterschied zwischen 1:n-Beziehungen und m:n-Beziehungen liegt darin, dass jeder Datensatz der einen Tabelle mit jedem Datensatz der anderen Tabelle verknüpft werden können soll. So wollen wir beispielsweise folgende Entitäten miteinander verknüpfen können:
- Bücher und Autoren
- Filme und Darsteller
- Studenten und Kurse
- Autos und Ausstattungsmerkmale
- Bestellungen und die enthaltenen Produkte
Beispiel Bücher und Autoren
Die meisten Bücher haben nur einen Autor, aber es gibt auch einige Bücher, die von mehreren Autoren verfasst wurden. In diesem Fall reicht es nicht mehr aus, wenn wir der Tabelle mit den Büchern ein Fremdschlüsselfeld zur Auswahl eines der Einträge einer Autorentabelle hinzufügen. Wir müssen auch eine Möglichkeit schaffen, einem Autor mehr als ein Buch zuzuordnen.
Hier kommen die m:n-Beziehung und die Verknüpfungstabelle ins Spiel. Wir lagern dabei die Informationen über die Verknüpfungen zwischen Autoren und Büchern in eine weitere Tabelle aus.
Diese muss zumindest zwei Fremdschlüsselfelder enthalten, mit denen für jeden Datensatz der Verknüpfungstabelle die Zuordnung eines Autors zu einem Buch erfolgen kann. Warum mindestens Weil die Verknüpfungstabelle gegebenenfalls auch noch einen Primärschlüssel enthält oder noch weitere Felder mit zusätzlichen Informationen.
Beispieltabellen anlegen
Wir gehen davon aus, dass wir zwei einfache Tabellen angelegt haben, die wir per m:n-Beziehung verknüpfen wollen. Die erste heißt tblAutoren und enthält die beiden Felder AutorID und Autor. Die zweite heißt tblBuecher und nimmt die beiden Felder BuchID und Buch auf (siehe Bild 1).
Bild 1: Tabellen zum Speichern von Autoren und Büchern in der Entwurfsansicht
Verknüpfungstabelle anlegen
Im einfachsten Fall hat die Verknüpfungstabelle nur zwei Felder. Das erste Feld ist ein Fremdschlüsselfeld zum Eintragen des Primärschlüsselwertes des zu verknüpfenden Datensatz der Autorentabelle, das zweite ein Fremdschlüsselfeld für den Datensatz der Büchertabelle.
Verknüpfungsfelder benennen
Wir benennen diese genau wie die entsprechenden Primärschlüsselfelder, sodass wir einen Tabellenentwurf wie in Bild 2 erhalten.
Bild 2: Erstellen der Verknüpfungstabelle für Autoren und Bücher
Datentypen der Verknüpfungstabelle
Genau wie bei einfachen 1:n-Beziehungen müssen die an der Beziehung beteiligten Felder, also das Primärschlüsselfeld und das Fremdschlüsselfeld, den gleichen Datentyp aufweisen.
Wenn wir also das Primärschlüsselfeld der beiden Tabellen tblAutoren und tblBuecher als Autowertfeld mit dem Datentyp Zahl (mit der Feldgröße Long Integer) ausgelegt haben, müssen wir auch die Fremdschlüsselfelder als Zahl (Long Integer) definieren.
Verknüpfungstabelle benennen
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo