Лучший способ получить дерево объектов, хранящихся в СУБД

Этот вопрос не зависит от программного обеспечения / платформы. Я просто ищу общий код SQL.

Рассмотрим следующие (например, очень простые) таблицы:

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

Как видите, между Book s существует отношение «один ко многим» и Автор и связь «многие ко многим» между Книга и Магазин s.

Вопрос первый: Что лучше запрос на готовность загрузить одного автора и его книги (и где книги продаются) в объектно-ориентированную программу, где каждая строка представляет экземпляр объекта?

Вопрос второй: Какой запрос лучше всего подходит для активной загрузки все дерево объектов в объектно-ориентированную программу, где каждая строка представляет экземпляр объекта?

Обе эти ситуации легко представить при отложенной загрузке. В любой ситуации вы можете получить автора одним запросом, а затем, как только вам понадобятся его книги (и в каких магазинах они продаются), вы воспользуетесь другим запросом для получения этой информации.

Ленивая загрузка - лучший способ получить эту информацию. сделать это, или я должен использовать объединение и анализировать результат при создании дерева объектов (в попытке быстро загрузить данные)? В этой ситуации, какой будет оптимальный выход соединения / целевого объекта из базы данных, чтобы сделать как можно более простой синтаксический анализ?

Насколько я могу судить, при активной загрузке мне нужно было бы управлять словарем или индексом какого-либо вида всех объектов, пока я анализирую данные. Так ли это на самом деле или есть способ лучше?

5
задан knpwrs 15 July 2011 в 05:24
поделиться