Wir haben gerade gesehen, wie Beziehungen zwischen zwei Tabellen aussehen, wenn auf der einen Seite der Beziehung nur ein einziger Datensatz, auf der anderen Seite dagegen beliebig viele Datensätze stehen. Manchmal kann es aber auch auf beiden Seiten der Beziehung beliebig viele Datensätze geben. Dies nennt man n:m−Beziehung. Ein einfaches Beispiel:
Ein Unternehmen hat Kunden, die Produkte bestellen. Ein Kunde kann mehrere Produkte bestellen, und ein Produkt kann von mehreren Kunden bestellt worden sein.
Dafür benötigt man zwischen den Tabellen tblKunden
und
tblProdukte
noch eine „Verknüpfungstabelle“, nennen wir sie
tblBestellungen
. Damit kann ein Kunde beliebig viele Bestellungen
haben, und ebenso kann ein Produkt beliebig oft bestellt worden sein. Die
n:m−Beziehung ist somit in zwei 1:n−Beziehungen aufgelöst:
Beziehungen | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Dieses Beispiel lässt zu, dass ein Kunde mehrfach die gleiche Bestellung aufgibt.
Das ist häufig erwünscht, es gibt aber auch n:m−Beziehungen, in denen das
zwingend verhindert werden soll (Beispiel: Ein Kunde soll eine bestimmte Art von
Vertrag nur einmal abschließen können, kann aber mehrere verschiedene Verträge
haben). Dann wird in der Verknüpfungstabelle zusätzlich ein
zusammengesetzter Schlüssel über die beiden Felder mit
den n−Seiten der Beziehungen gelegt; hier wären das also lngKunde
und lngProdukt
. Natürlich muss bei diesem Schlüssel die Eigenschaft
Eindeutig
auf Ja
gesetzt werden.
Indizes: tblBestellungen | |||||||||
---|---|---|---|---|---|---|---|---|---|
Indexname | Feldname | Sortierreihenfolge | |||||||
PrimaryKey | IDBestellungen | Aufsteigend | |||||||
nurEinmal | lngKunde | Aufsteigend | |||||||
lngProdukt | Aufsteigend | ||||||||
|