Как правильно извлечь связанные данные без ORM?
Не могу понять, как правильно извлечь связанные данные из базы данных. Например, у меня есть две таблицы, в первой таблице хранится информация по авторам [Authors] (имя, фамилия, дата рождения и смерти, и тд), во второй таблице хранится информация по книгам [Books] (название, жанр, дата и тд). Книги сылаются на авторов (Books.Author -> Authors.Id).
Authors [ Id | Firstname | Lastname | Birthday | Death | ... ] Books [ Id | Author | Title | Genre | Date | ... ]
У каждого автора множество книг. Я бы хотел извлечь эти данные в класс, который содержит все данные по автору и список всех его книг. Как правильно извлечь эти связанные данные не используя ORM?
Я вижу два варианта:
1) Сначала извлечь все данные из таблицы авторов (select * from Authors), а затем из таблица книг (select * from Books). Далее привести эти данные в нужный вид. Данный способ меня настараживает тем, что данные по авторам и книгам извлекаются отдельными запросами, нет целостности/атомарности что-ли.
2) Извлечь сразу все связанные данные (select * from Authors A left join Books B on B.Author = A.Id), а потом преобразовать в массив нужного класса. Данный способ не нравится тем, что полные данные автора будут у каждой книги. Будет большое количество столбцов.
Как лучше сделать? Может другие способы?
113 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів