Heim >Datenbank >MySQL-Tutorial >Wie implementiert man eine Viele-zu-Viele-Beziehung mit einem zusätzlichen Feld in Lehre 2?
Many-to-Many-Link-Tabelle mit einem zusätzlichen Feld in Lehre 2
Einführung
Datenbankmodellierung beinhaltet oft die Schaffung von Viele-zu-Viele-Beziehungen. In Fällen, in denen für jede Beziehung zusätzliche Informationen gespeichert werden müssen, sind herkömmliche Viele-zu-Viele-Tabellen nicht mehr ausreichend. In diesem Artikel wird die Erstellung solcher Beziehungen mithilfe von Doktrin 2 untersucht, wobei der Verknüpfungstabelle ein zusätzliches Feld hinzugefügt wird.
Herausforderungen
Zunächst wird versucht, eine Viele-zu-Viele-Beziehung zu erstellen Ein zusätzliches Feld führte zu einer Verknüpfungstabelle ohne die gewünschten Werte. Nachfolgende Versuche, das Datenbanklayout umzustrukturieren, um eine separate „Lager“-Tabelle mit Beziehungen zu „Produkt“- und „Store“-Entitäten einzuschließen, erwiesen sich ebenfalls als erfolglos.
Lösung
Der Schlüssel zur Lösung Dieses Problem liegt im Verständnis, dass eine Viele-zu-Viele-Assoziation mit zusätzlichen Werten zu einer eigenständigen Einheit wird. Im Kontext dieses Beispiels stellt die Tabelle „Stock“ mit ihrem Feld „Betrag“ eine separate Entität dar, die keine reine Viele-zu-Viele-Beziehung mehr darstellt.
Entitätsmodell
Basierend auf diesem Verständnis ist das folgende Entitätsmodell vorgeschlagen:
Produkt:
Shop:
Lagerbestand:
Mapping mit der Lehre 2
Die entsprechende Doctrine 2-Zuordnung für die Entitäten würde wie folgt aussehen:
// Product.php class Product { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; } // Store.php class Store { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; } // Stock.php class Stock { /** @ORM\Column(type="integer") */ protected $amount; /** @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") */ protected $store; /** @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") */ protected $product; }
Wenn Sie diesem Ansatz folgen, können Sie mithilfe von Doctrine 2 komplexe Datenbankbeziehungen mit zusätzlichen Feldern erstellen und so eine größere Flexibilität bieten in der Datenmodellierung.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine Viele-zu-Viele-Beziehung mit einem zusätzlichen Feld in Lehre 2?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!