viele-zu-viele-Beziehung in der Lehre
Ich habe einige Tabellen, die auf meinem system so aus:
news
--id
--title
--content
video
--id
--title
--url
album
--id
--title
Nun, ich tun müssen, um eine viele-zu-viele-relatioship mit diesen Tabellen, sondern in einer flexiblen Art und Weise. Ich erstellt eine Tabelle namens "links" mit der nachstehenden Struktur:
links
--parent_entity (example: news)
--parent_id (example: 5)
--child_entity (exmaple: video)
--child_id (example: 2)
Wie kann ich diese Karte mit Lehre?
- Können Sie erklären, warum Sie zu tun versuchen, so etwas wie ein Agnostiker mapping-Tabelle? Ist es nur, weil Sie möchten, verringern Sie die Menge von Tabellen oder etwas anderes? Mit viele-Zu-Viele-Tabellen bietet durchaus einige Vorteile wie eine foreign key-Einschränkungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies nicht möglich, weil Sie nicht wollen, eine richtige Verknüpfung. Die join-in diesem Fall wird, hängt vom Wert in parent_entity und child_entity (ie. jede Zeile kann müssen sich an einen anderen Tisch). Außerdem, wie wird Lehre wissen, welche record-type-Hydrat (ie. weil Sie abhängig ist von der entity-Typ).
Können Sie in der Lage zu ziehen, so etwas wie dieses aus (auch wenn es komisch sein wird) mit der WITH-Klausel auf Ihre Verknüpfungen. Zum Beispiel, in der setUp () - Methode des news-Modells, die Sie tun könnten:
Und im setup von Ihrem Links-Modell:
Würden Sie brauchen, um zu definieren, alle Kombinationen von joins in der Links-Modell. Was ich meine ist, müssen Sie es sagen, dass es viele news und Alben sowie mit der child_id und parent_id.
Und dann in der Abfrage, die Sie tun müssen, würde so etwas wie:
Wie Sie sehen können ist dies sehr umständlich. Ich würde empfehlen, die Schaffung von join-Tabellen für jede relation. Würden Sie immer noch bekommen, was Sie suchen, indem Sie das verbinden zu jedem join-Tabelle.
Lehre ist Dokumentation ist ganz gut. Ich bin nicht ganz sicher, was du meinst mit "flexibel", aber hier ist die yaml-Konfiguration Beispiel für Viele-Zu-Viele Beziehungen für Lehre version 1.2.
Wenn ich verstehe, Ihr Datenbank-layout richtig "parent_entity" und "child_entity" stellen die Tabelle, die Sie wollen, um link die id ' s zu.
Dies ist "technisch" eine falsche Datenbank-Struktur (siehe Datenbank-Normalisierung) da kann man nicht anzeigen diese Spalten an andere single Tabelle Spalte.. im Grunde, können Sie nicht verwenden Sie Ihre id-Spalten, die jetzt, da es zweideutig.
Ich glaube, Sie haben zu re-denken, Ihre Datenbank-Logik, dann würde es leichter machen, den code zu schreiben anschliessend.