Запрос связанных данных
Вводные
- Данные различных сущностей хранятся в отдельных таблицах базы данных;
- Под сущностью понимается любая из существующих категорий данных — транспортные операции, контрагенты, транзитные пункты и прочие;
- Одно из бизнес-требований — необходимо выводить для диспетчера актуальные данные сразу по нескольким связанным между собой сущностям, например: выводить транспортные операция с пунктами перевозки, водителями, данными об автомобилях и контейнерах;
- Для запроса только нужных данных и преобразования их в единую структуру данных создан пакет
collector(находится в каталогеinternal/data/collector); - Далее функциональность этого пакета будет называться "сборщик данных" или просто "сборщик";
Про прямую и обратную связь
Пояснение:
- Если у сущности есть ссылки на другие сущности, то они называются "прямо связанными" относительно неё;
- Если на сущность есть ссылки у других сущностей, то они называются "обратно связанными" относительно неё.
Пример прямой связи — транспортная операция прямо ссылается на ответственного менеджера:
transport_operations.responsible_user_uid = users.cargo_uid
Пример обратной связи — на транспортную операцию ссылаются статусы рейсов:
transport_operations_states.trip_uid = transport_operations.cargo_uid
and transport_operations_states.trip_type = "jcfg:DocumentRef.ТранспортнаяОперация"
В последнем случае относительно транспортной операции обратно связанными являются статусы рейсов. Относительно статусов рейсов прямо связанными являются транспортные операции.
Далее для описания таких связей будут применяться термины:
relation— для описания прямой связи,backward relation— для описания обратной связи.