Diese Frage soll software- und plattformunabhängig sein. Ich bin nur auf der Suche nach allgemeinem SQL-Code.
Betrachten Sie die folgenden (sehr einfachen, als Beispiel dienenden) Tabellen:
Table: Authors
id | name
1 | Tyson
2 | Gordon
3 | Tony
etc
Table: Books
id | author | title
1 | 1 | Tyson's First Book
2 | 2 | Gordon's Book
3 | 1 | Tyson's Second Book
4 | 3 | Tony's Book
etc
Table: Stores
id | name
1 | Books Overflow
2 | Books Exchange
etc
Table: Stores\_Books
id | store | book
1 | 1 | 1
2 | 2 | 4
3 | 1 | 3
4 | 2 | 2
Wie Sie sehen können, gibt es eine eins-zu-viele-Beziehung zwischen Book
s und Author
s und eine Many-to-many-Beziehung zwischen Book
s und Store
s.
Frage eins: Was ist die beste Abfrage, um einen Autor und seine Bücher (und wo die Bücher verkauft werden) in ein objektorientiertes Programm zu laden, in dem jede Zeile eine Objektinstanz darstellt?
Frage zwei: Was ist die beste Abfrage, um den gesamten Objektbaum in ein objektorientiertes Programm zu laden, in dem jede Zeile eine Objektinstanz darstellt?
Beide Situationen sind leicht vorstellbar, wenn es um träges Laden geht. In beiden Fällen würden Sie den Autor mit einer Abfrage abrufen und dann, sobald Sie seine Bücher benötigen (und in welchen Geschäften die Bücher verkauft werden), eine weitere Abfrage verwenden, um diese Informationen zu erhalten.
Ist Lazy Loading der beste Weg, dies zu tun, oder sollte ich eine Verknüpfung verwenden und das Ergebnis beim Erstellen des Objektbaums analysieren (in einem Versuch, die Daten eifrig zu laden)? Was wäre in dieser Situation die optimale Verknüpfung/Zielausgabe aus der Datenbank, um das Parsing so einfach wie möglich zu gestalten?
Soweit ich sagen kann, mit Eager Loading, würde ich brauchen, um ein Wörterbuch oder Index einer Art von allen Objekten zu verwalten, während ich die Daten parsen bin. Ist dies tatsächlich der Fall oder gibt es einen besseren Weg?