Настройка Графа сущностей
Назначение
Граф сущностей - это визуальный конструктор запросов, с помощью которого бизнес-аналитик имеет возможность указать объекты базы данных, условия и взаимосвязи между ними для получения и отображения информации на странице пользовательского приложения, и/или её сохранения.
В качестве сущностей, заданных в графе, могут выступать таблицы и представления (view) базы данных. Важно отметить, что понятие сущности не равно понятию таблицы, поскольку одна таблица может быть добавлена в граф сущностей несколько раз.
Необходимость настройки Графа сущностей возникает при использовании компонент, логика работы которых предусматривает формирование источника данных в виде SQL-запроса, например, Таблица, Форма и другие.
В зависимости от используемой компоненты и логики её работы, Граф сущностей использует три типа оператора SQL-запросов к базе данных:
- SELECT- оператор запроса,который возвращает набор данных (выборку) из базы данных;
- INSERT- оператор запроса, который осуществляет добавление новых записей в таблицу базы данных;
- UPDATE- оператор запроса, который изменяет имеющиеся данные в таблице базы данных
Свойства
Для того, чтобы перейти к заполнению Графа сущностей настраиваемой компоненты, необходимо во встроенных функциях элемента перейти к разделу Подгрузка данных - Источник данных - Граф сущностей и нажать на кнопку (три точки). По нажатию на кнопку отобразится окно Редактор структуры сущностей, в котором происходит дальнейшее добавление необходимых объектов базы данных (таблиц или представлений) с соответствующими связями.
Редактор структуры сущностей включает в себя следующие области:
- Дерево БД (базы данных), где отображаются выбранные при сохранении БД схемы вместе с объектами (таблицы и представления)
- Поиск, с помощью которого можно найти таблицу БД по её названию; по мере ввода символов будет отображаться список таблиц, содержащих в названии набранные символы (рис.4)

рис.3 Редактор структуры сущностей

рис.4 Область поиска
-
вкладка Структура, которая в зависимости от решаемой задачи позволяет задать условия
или группу условий
, по которому(ым) будут ограничиваться (фильтроваться) подгружаемые данные по Графу сущностей. Для фильтрации записей больше, чем по одному условию используются операторы:- AND - оператор, который отображает только те записи, когда первое и второе условие является истина/true;
- OR- оператор, который отображает только те записи, когда хотя бы одно из двух или каждое из условий является истина/true;
- AND_NOT - оператор, который отображает только те записи, когда хотя бы одно из условий является ложью/false;
- OR_NOT - оператор, который отображает только те записи, когда все из условий являются ложью/false.
При добавлении условия (фильтра), значение из колонки таблицы или представления можно приравнять к четырем типам значений: Переменная процесса, Константа, Переменная времени выполнения, Другая колонка. В случае использования Переменной процесса, значение, к которому приравниваются данные из указанной колонки, могут динамически изменяться, в зависимости от того, какое значение содержится в переменной процесса в конкретный момент времени (рис.4). Применение заданного условия (фильтра), в котором используется переменная процесса, можно ограничить указав: Игнорировать фильтр, если переменная не задана или Не игнорировать фильтр, если переменная не задана. При указании типа Другая колонка, значение указанное в колонке сравнивается со значением другой колонки идентичной таблицы. При указании типа Переменная времени выполнения, значение из выбранной колонки сравнивается с runtime переменными. При указании типа Константа, подгружаемые данные по Графу сущностей будут фильтроваться по заданному статичному значению (рис.5). На языке SQL-запросов заданное условие (рис.5) будет иметь вид: SELECT … FROM public. Конференции AS Конференции WHERE Конференции. Описание (description) = ‘RU’

рис.4 Применение фильтра с использованием Переменной процесса

рис.5 Применение фильтра с использованием Константы
-
вкладка Элемент, становится активна после добавления и выбора объекта базы данных:таблицы или представления(рис.6). К нередактируемым свойствам элемента относится: Схема базы данных, к которой относится объект и название Таблицы в базе данных. К настраиваемым свойствам элемента относится:
- Имя сущности, которое будет отображаться в Редакторе структуры сущностей;
- Главная сущность - в каждом Графе должна быть задана Главная сущность, с которой начинается подгрузка и сохранение данных на странице; Главная сущность в Графе выделена желтой рамкой, все последующие сущности имеют синюю рамку.
- Действие при сохранении: Удалить (значение по умолчанию).
- Сохранить - Удалить если все значения FK. Добавление и возможность настройки данного свойства было обусловлено тем, что в некоторых случаях, при сохранении в сущность (таблицу) приходят пустые данные. В зависимости от того, необходимо ли сохранять пустые данные в таблицу или необходимо удалять старую запись в таблице, если пришли пустые данные, выбирается один из трех доступных вариантов действий. Как и в случае со Структурой *всего Графа сущностей, к Элементу можно применить условия (фильтрацию) для подгрузки значения. После того, как условие будет задано, в редакторе сущностей элемент будет отображаться со знаком фильтра
.
Добавление связей сущностей
Граф сущностей позволяет добавить сразу несколько объектов базы данных (таблиц и представлений) с соответствующими связями между собой. Одновременное использование нескольких таблиц позволяет получить достаточный и необходимый объем информации для вывода из базы данных с помощью SQL-запроса, формируемого Графом сущностей и отображения пользователю на странице с помощью компонент, например, Таблица, Форма и другие. Добавление связей возможно между объектами базы данных, которые либо явно ссылаются друг на друга по ключу, либо связь подразумевается, но внешними ключами не оформлена.
Для того, чтобы указать связь между сущностями (объектами базы данных) в Редакторе структуры сущностей, необходимо добавить элементы (таблицы или представления базы данных) и от таблицы, которая будет ссылаться на другую таблицу протянуть стрелку, нажав на указатель
. Направление стрелки должно быть определено от вторичного ключа к первичному ключу. После добавления связи, необходимо выделить элемент
и указать колонки, по которым будут связаны сущностиво вкладке Элемент: Исходящая колонка и Входящая колонка.
На языке SQL-запросов заданная связь (рис.8) будет иметь вид: LEFT OUTER JOIN public. Конференции AS Конференции ON Список сотрудников.employee_id = Конференции.updated_employee_id
При настройке и выборе элемента связи сущностей (стрелки
) становится активна вкладка Элемент, где помимо указания колонок связи сущностей (Исходящая и Входящая колонка), есть возможность задать следующие свойства (рис.9):
- Связь обязательна означает, что при построении SQL-запроса к базе данных по данной связи будет использоваться оператор INNER JOIN, который возвращает только совпадающие данные из двух объединяемых таблиц. В случае, когда обязательность связи не проставлена, используется оператор LEFT OUTER JOIN, который возвращаетвсе строки из внешней левой таблицы, даже если в правой таблице нет совпадений.
- Связь только для сохранения означает, что связь будет использована только для сохранения данных, при подгрузке данных она будет игнорироваться. В случае выбора данного свойства, в Редакторе структуры сущностей стрелка,связывающая объекты, принимает вид
- Условие или Группа условий - как и в случае с общей Структурой Графа сущностей и отдельной сущности, имеется возможность добавить к связи условия (фильтры), ограничивающие значения подгружаемых данных.После того, как условие будет задано, вредакторе сущностей элемент стрелка будет отображаться со знаком фильтра(рис.10).
На языке SQL-запросов заданное условие (рис.10) будет иметь вид: LEFT OUTER JOIN public. Конференции AS Конференции ON Список сотрудников.employee_id=Конференции.updated_employee_id AND Список сотрудников.legal_entity_id IS NOT NULL

рис.8 Добавление связи между сущностями

рис.9 Свойства элемента связи (стрелки)

рис.10 Применение условия к элементу связи
Часто задаваемые вопросы
| Вопрос | Ответ |
|---|---|
| Чем отличается условие заданное через вкладку Структура на весь Граф сущностей и условие заданное на конкретную сущность во вкладке Элемент | Заданные условия ничем не отличаются между собой, допустимо использование обоих вариантов указания условий, результат выполнения их будет одинаков. |
| После сохранения Графа сущностей, одна из заданных в нём таблиц была удалена или переименована в базе данных. Как это повлияет на структуру сущностей? | В данном случае, при открытии Редактора структуры сущностей будет выведено окно с предупреждением. Граф сущностей необходимо будет перерисовать в соответствии с новой структурой базы данных. |
| В сохраненную базу данных была добавлена новая таблица, но она не отображается в Дереве БД Редактора структуры сущностей? | После внесения изменений в структуру базы данных (новая таблица или представление, новая колонка в таблице) необходимо во вкладке База данных нажать на кнопку Обновить, дождаться завершения обновления, после чего внесенные изменения должны будут отобразиться. |
| Для чего необходима Главная сущность? | Для компонент, требующих задания структуры сущностей, в Графе сущностей обязательно должна быть выделена Главная сущность, с которой начинаетсяподгрузка и сохранение данных на странице. Например, при работе с Таблицейи привязанной к ней Кнопкой выбора записи, запоминается идентификатор записи Главной сущности. |
нажать на кнопку Обновить, дождаться завершения обновления, после чего внесенные изменения должны будут отобразиться.