Laden...

[erledigt] Frage zu m:n - Relationen

Erstellt von SQLNeuling vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.736 Views
S
SQLNeuling Themenstarter:in
1 Beiträge seit 2007
vor 16 Jahren
[erledigt] Frage zu m:n - Relationen

Hallo hier im Forum,

ich bin Neuling im Bereich Datenbanken und habe mich in die Grundlagen eingearbeitet. Die Frage die ich nun zu m:n – Relationen stellen ist mit Sicherheit schon öfters gestellt worden. Daher habe ich vorher zunächst natürlich länger "gegoogelt"; aber keine für mich befriedigende Antwort gefunden.

Daher: liest man sich Literatur zu m:n – Relationen durch, so wird dort immer der Tip gegeben, dass man diese Relation durch eine Zwischentabelle auflösen muss. Soweit Ok, ... aber mir ist nicht wirklich klar, warum man dass machen soll oder muss. Es steht immer nur "geschrieben", dass die "M:n-Beziehungen können in den meisten relationalen Datenbanken nicht direkt umgesetzt werden" (Wikipedia-> Kardinalität (Datenbanken)). Ich habe aber nirgends eine Erklärung gefunden, warum dies so ist. Ist dies eher eine techn. Beschränkung der Datenbanken oder existiert eine eher grundlegende mathematische Beschränkung, die ich nur nicht durchblicke?
Hat jemand von Euch ein einfache griffige Erklärung (oder eine Link darauf...) oder ein Beispiel, mit dem man sofort sehen kann, dass es ohne die Zwischen-Tabelle einfach nicht geht?

Vielen Dank
Ein SQLNeuling

A
254 Beiträge seit 2007
vor 16 Jahren

Hallo SQLNeuling,

kleines Beispiel. Du willst in einer Datenbank ablegen welcher Lehrer, welche Schüler unterrichtet bzw. welche Schüler von welchen Lehreren unterrichtet werden.

Da die Lehrer unterschiedliche Fächer unterrichten kann jeder Schüler öfter vom gleichen Lehrer unterrichtet werden und umgekehrt. Wie willst Du das in zwei Tabellen packen ?

Die Zwischentabelle liegt hier, wie meistens auf der Hand, die Zwischentabelle ist der Kurs.

Versuch doch einfach mal so einfaches Beispiel in einer Datenbank (z.B. Access) abzubilden. Dann wirst Du recht schnell merken, was gemeint ist.

Tschüss

H
704 Beiträge seit 2003
vor 16 Jahren

Deshalb ist es sinnvoll sich mal auf einen Zettel Datenausprägungen für sein Datenbankmodell aufzuschreiben, dann erkennt man ziemlich schnell warum man m:n Beziehungen auflösen muss.

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
432 Beiträge seit 2005
vor 16 Jahren

hi sqlneuling,

ergänzend zur erklärung von a957m sei noch gesagt:
die auflösungstabellen bestehen in der minimalen form ja nur aus zwei feldern, nämlich den beiden fremdschlüsseln, die alle möglichen kombinationen der primärschlüssel der beiden anderen tabellen darstellen.

aus diesem grund könnte man den primärschlüssel der auflösungstabelle theoretisch auf die kombination beider fremdschlüssel setzen, denn die aussage, dass der lehrer mit ID=8 den schüler mit ID=15 unterrichtet, ist ja beim ersten eintrag schon ausgedrückt und es sollte daher natürlich verboten sein, genau dieselbe kombination erneut in die tabelle einzutragen.

praktisch werden die auflösungstabellen aber oft verwendet, um weitere sachverhalte der beziehung darzustellen, bspw nicht nur
"Herr Schlaumeier unterrichtet Lieschen Müller"
sondern
"Herr Schlaumeier unterrichtet(e) Lieschen Müller im Zeitraum **von **1.10.2006 bis 30.4.2007"

In diesem Fall kommen also noch die beiden Datumsspalten [von] und [bis] hinzu und damit "verdient" die Auflösungstabelle nun einen vollwertigen eigenen Primärschlüssel (z.B. einen Zähler oder einen GUID).

Allgemeiner gesagt: Auflösungstabellen schildern häufig noch zeitliche Gültigkeiten oder Statusinformationen zur Beziehung, die sie beschreiben.

Gruß

ron