Eine Eins-zu-Viele-Beziehung zwischen zwei Tabellen sollte mit zwei oder drei Tabellen implementiert werden? Zum Beispiel sollten wir:
%Vor%oder
%Vor%Ich mag mehr die erste Annäherung, aber ich habe die zweite und in komplizierteren Anwendungen oft gesehen. Gibt es einen Nachteil für die erste Methode, oder ist es nur persönlich, welcher Art zu folgen?
Das erste Beispiel zeigt eine Eins-zu-Viele-Beziehung, während die zweite eine Viele-zu-Viele-Beziehung zeigt.
Beispiel sagen wir verwenden das erste Beispiel
%Vor%Wie würdest du darstellen, dass sowohl Jane als auch Jon das Buch "Stackoverflow for fun" geschrieben haben? In dieser Beziehungstabelle können Sie nicht, Sie haben ausgedrückt, dass ein Autor viele Bücher schreiben kann. Entweder schrieb Jane es oder Jon schrieb es. Wenn nur einer von ihnen die Bücher schreibt, können Sie diesen Beziehungstyp verwenden. Wenn Sie jedoch zeigen möchten, dass beide dieses Buch geschrieben haben, brauchen Sie eine Beziehung von vielen zu vielen.
Wenn Sie nun die gleiche Analogie von Jane und Jon verwenden, können Sie beide Autoren für dieses eine Buch verwenden, indem Sie Ihr zweites Beispiel verwenden - viele zu viele Beziehungen.
Wir verwenden Stackoverflow als Beispiel, beginnend mit einer Eins-zu-Viele-Beziehung und endend mit einer Viele-zu-Viele-Beziehung: %Vor%Schlechter Jeff, ihm wird Stackoverflow vom obigen Beispiel nicht gutgeschrieben ... also müssen wir das beheben:
%Vor%Jetzt sind alle glücklich ...
eins zu viele sind zwei Tabellen.
der zweite ist viele zu viele.
%Vor%Eine 1: n-Beziehung sollte mit 2 Tabellen implementiert werden.
Aber die Beziehung, die Sie in Ihrem Beispiel (zwischen Autoren und Büchern) vorschlagen, ist nicht eins-zu-viele, ist viele-zu-viele.
"Ein Autor kann viele Bücher schreiben, und ein Buch kann von einem oder mehreren Autoren geschrieben werden."
Und eine Viele-zu-Viele-Beziehung sollte mit 3 Tabellen implementiert werden.
Schönen Tag noch.
Wenn die Beziehung tatsächlich eins zu viele ist, ist keine Verknüpfungstabelle ( authorConnectsBooks
in Ihrem Beispiel) erforderlich. In Ihrem Beispiel haben Sie jedoch keine Eins-zu-viele-Beziehung, da ein Autor viele Bücher schreiben kann und ein Buch von vielen Autoren geschrieben werden kann. In Ihrem Beispiel haben Sie tatsächlich eine Viele-zu-Viele-Beziehung. Wenn Sie tatsächlich eine Viele-zu-Viele-Beziehung haben, benötigen Sie eine Verknüpfungstabelle ( authorConnectsBooks
in Ihrem Beispiel).
Wie bereits erwähnt, ist die erste Beziehung eine Eins-zu-viele-Beziehung, in der Sie die zusätzliche Tabelle nicht benötigen. Nur zwei Tabellen sollten funktionieren. Aber im zweiten Fall müssen Sie, da es sich um eine viel zu viele Beziehung handelt, eine zusätzliche Tabelle hinzufügen, die als Junction- oder Querverweistabelle bezeichnet wird, da die meisten Datenbankverwaltungssysteme nur Eins-zu-Viele-Beziehungen unterstützen solche Beziehungen manuell über eine dritte Junction-Tabelle zu implementieren. Der Primärschlüssel der Junction-Tabelle wird normalerweise mit den Primärschlüsseln der verknüpften Tabellen gebildet. Hier ist eine Wiki-Seite, die genau dasselbe Beispiel erklärt, das Sie gefragt haben:
Tags und Links database design database-design