Unterschied zwischen m-n und n-n Beziehung?

3 Antworten

Es ist ein Join aus Werten von zwei Tabellen. Ich mache mal das Beispiel Produkt und Lagerplatz.

Produkt und Lagerplatz sind offensichtlich eine n:m-Beziehung, es gibt n Produkte und die auf m Lagerplätzen liegen könnten.

Ein Produkt könnte mehrfach eingelagert sein also auch viele Lagerplätze haben und ein Lagerplatz könnte eine Unterteilung in mehrere, kleinere Produkte haben, s. d. dort mehrere Produkte liegen.

In mein Produkt will ich aber keine Liste von Lagerplätzen aufnehmen und in die Eigenschaften der Lagerplätze bzw. dem Aufbau des Lagers will ich keine Produkte rein buchen. Dann mache ich eine Tabelle, in der je einen Datensatz mit Produkt-ID und einer Lagerplatz-ID habe. In der Tabelle können viele Einträge zur Produkt-ID mit unterschiedlichen Lagerplätzen genauso vorkommen wie Lagerplatz-ID mehrfach für unterschiedliche Produkt-ID vorkommen können.

Diese Tabelle in sich verknüpft n-Werte (inklusive Dubletten) mit n-Werten (wieder inklusive Dubletten). Also ist es eine n:n-Tabelle.

Keiner. "n:n"-Beziehung ist eine eher unübliche Bezeichnung für "mehrere Datensätze aus einer Tabelle sind mit mehreren Datensätzen einer anderen verknüpft". Und das ist ebenfalls die Definition für "m:n"-Beziehung.

Man verwendet üblicherweise "m:n", damit klar ist, dass es sich nicht auf beiden Seiten der Relation um dieselbe Anzahl an Datensätzen handeln muss.


Kelec  25.10.2023, 09:39

Ich würde n:n eher so sehen, dass es gefordert ist, dass auf beiden Seiten die selbe Zahl ist, also quasi ein Spezialfall einer m:n Beziehung.

0
ohwehohach  25.10.2023, 10:17
@Kelec

Mir fällt kein einziges Beispiel ein, wo mir mal eine n:n Beziehung untergekommen wäre.

0
Kelec  25.10.2023, 10:23
@ohwehohach

Mir auch nicht, aber das bedeutet ja nicht, dass es sie nicht gibt, wenn auch nur Theoretisch

0
ohwehohach  25.10.2023, 10:32
@Kelec

Naja, schrieb ich ja im Endeffekt in meinem letzten Absatz. Die Umkehrung dieses Satzes bedeutet ja genau, dass "n:n" die gleiche Anzahl an Datensätzen auf beiden Seiten impliziert.

1

n-n muss rein theoretischer Natur sein. In der Praxis ist mir das noch nicht unter die Augen gekommen. Es gibt 1:1-, 1:n- und m:n-Beziehungen.

Ich würde mir n:n durch die gleichen Bezeichnungen so herleiten, dass 1 Datensatz einer Tabelle, n Datensätzen einer anderen Tabelle zugeordnet wird und umgekehrt genau 1 Datensatz der anderen Tabelle n Datensätzen der ersten zugeordnet werden.

Klassisch m:n wären zum Beispiel die Tabellen Seminar und Teilnehmer. Einem Seminar können beliebig viele Teilnehmer zugeordnet werden und ein Teilnehmer kann beliebig viele Seminare besuchen.

n:n würde bedeuten, dass wenn es zu einem Seminar n Teilnehmer gäbe, jeder Teilnehmer genau an n Seminaren teilnehmen würde.

Mir fällt hierzu kein plausibles Beispiel aus der Praxis ein.

___________

In der Praxis würde man es wohl eher als m:n-Beziehung umsetzen und die Logik auf Programmebene abbilden.

Woher ich das weiß:Studium / Ausbildung – Fachinformatiker - Anwendungsentwicklung