@Crunkor

Как правильно организовать выборку?

Исходные данные:
Таблица person
id | firstname | lastname | birthdate ...

Таблица order
id | product_id | count | price | person_id ...

Таблица product
id | name | price ...

(Таблицы вымышленные, нужны только для того, что описать ситуацию)
В проект есть сущности (Entity) под каждую таблицу с внешними ключами и связями.

Мне нужно получить таблицу/объект в которой будут данные из каждой этой таблицы. К примеру что-то вроде такого...
order.id | product.name | order.count | person.firstname | ...
Как мне это правильнее реализовать?
В голову приходит 2 варианта:
1. Создать в БД view которая соберет все нужные данные в одну таблицу. В таком случае придется создавать новое
Entity, сервисы и репозитории и т.п.
2. В OrderService получить все необходимые записи отдельными запросами к каждой сущности. Если таких данных
много (>100 000), то это огромное кол-во запрос к БД ради одного результата. Так же возникает вопрос как мне
получить все заказы, к примеру, у которых person младше 18 лет.

Какой из этих вариантов более правильный или они оба неправильные и существуют какие-то другие, более правильные, варианты? Может есть у кого ссылки на github, где есть реализации таких задач?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Собственно с точки зрения юзера правильным будет отображение информации на экране через 200-300мс после нажатия кнопки)
п.1 - чуть ближе к этому, но стоит посмотреть в сторону stored procedure с параметрами фильтрации, ордеринга и т.п. и уже от этой сущности плясать, чтобы можно было получить в том числе один раз top 10 заказов от несовершеннолетних, а другой - список заказов от несовершеннолетних из категории подакцизных товаров... в третий раз то же самое за период и т.п.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 17:14
4000 руб./за проект
29 мар. 2024, в 17:04
5000 руб./за проект
29 мар. 2024, в 17:03
3000 руб./за проект