Was ist der wirkliche Unterschied zwischen einer Eins-zu-Viele- und einer Viele-zu-Eins-Beziehung?
Es gibt konzeptionelle Unterschiede zwischen diesen Begriffen, die Ihnen bei der Visualisierung der Daten helfen sollen, sowie mögliche Unterschiede im generierten Schema, die vollständig verstanden werden sollten. Meistens liegt der Unterschied jedoch in der Perspektive.
In einer Eins-zu-Viele- Beziehung hat die lokale Tabelle eine Zeile, die vielen Zeilen in einer anderen Tabelle zugeordnet sein kann. Im Beispiel von SQL für Anfänger , ein Customermöglicherweise zu vielen in Verbindung gebracht werden Orders.
In der entgegengesetzten Viele-zu-Eins- Beziehung kann die lokale Tabelle viele Zeilen enthalten, die einer Zeile in einer anderen Tabelle zugeordnet sind. In unserem Beispiel können viele Orders einem zugeordnet sein Customer. Dieser konzeptionelle Unterschied ist wichtig für die mentale Repräsentation.
Darüber hinaus kann das Schema, das die Beziehung unterstützt, in den Tabellen Customerund unterschiedlich Orderdargestellt werden. Zum Beispiel, wenn der Kunde Spalten hat idund name:
id,name
1,Bill Smith
2,Jim Kenshaw
Damit a Ordermit a verknüpft werden kann Customer, fügen viele SQL-Implementierungen der OrderTabelle eine Spalte hinzu, in der iddie zugehörigen Customer(in diesem Schema customer_id:
id,date,amount,customer_id
10,20160620,12.34,1
11,20160620,7.58,1
12,20160621,158.01,2
Wenn wir uns in den obigen Datenzeilen die customer_idID-Spalte ansehen , sehen wir, dass Bill Smith(Kunden-ID Nr. 1) zwei Bestellungen zugeordnet sind: eine für 12,34 USD und eine für 7,58 USD. Jim Kenshaw(Kunden-ID Nr. 2) hat nur 1 Bestellung für 158,01 USD.
Es ist wichtig zu erkennen, dass die Eins-zu-Viele-Beziehung normalerweise keine Spalten zur Tabelle hinzufügt, die die "Eins" ist. Das Customerhat keine zusätzlichen Spalten, die die Beziehung zu beschreiben Order. Tatsächlich haben die Customermöglicherweise auch eine Eins-zu-Viele-Beziehung zu ShippingAddressund SalesCallTabellen und haben dennoch keine zusätzlichen Spalten hinzugefügtCustomer Tabelle .
Für die Beschreibung einer Viele-zu-Eins-Beziehung wird jedoch häufig eine idSpalte zur Tabelle "Viele" hinzugefügt, die ein Fremdschlüssel zur Tabelle "Eins" ist. In diesem Fall wird der customer_idSpalte "Viele" eine Spalte hinzugefügt Order. Der zugehörigen Bestellung Nr. 10 für 12,34 USD Bill Smithweisen wir die customer_idSpalte der Bill SmithID 1 zu.
Es ist jedoch auch möglich, dass eine andere Tabelle vorhanden ist, die die Beziehung Customerund beschreibt Order, sodass der OrderTabelle keine zusätzlichen Felder hinzugefügt werden müssen. Anstatt customer_idder OrderTabelle ein Feld hinzuzufügen , könnte es eine Customer_OrderTabelle geben, die Schlüssel für Customerund enthält Order.
customer_id,order_id
1,10
1,11
2,12
In diesem Fall ist das Eins-zu-Viele und das Viele-zu-Eins alles konzeptionell, da zwischen ihnen keine Schemaänderungen bestehen. Welcher Mechanismus von Ihrem Schema und Ihrer SQL-Implementierung abhängt.
Hoffe das hilft.