Перейти к содержанию

Запрос связанных данных

Вводные

  • Данные различных сущностей хранятся в отдельных таблицах базы данных;
  • Под сущностью понимается любая из существующих категорий данных — транспортные операции, контрагенты, транзитные пункты и прочие;
  • Одно из бизнес-требований — необходимо выводить для диспетчера актуальные данные сразу по нескольким связанным между собой сущностям, например: выводить транспортные операция с пунктами перевозки, водителями, данными об автомобилях и контейнерах;
  • Для запроса только нужных данных и преобразования их в единую структуру данных создан пакет 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 — для описания обратной связи.