23. Логические связи ER-диаграмм
В ER-диаграмме связь между таблицами может быть физической или логической.
Физическая связь соответствует внешнему ключу в базе данных. При создании такой связи
редактор формирует соответствующее ограничение внешнего ключа (SQL-оператор ALTER TABLE для добавления внешнего ключа).
Логическая связь существует только в ER-модели. Она отображает предполагаемое отношение между таблицами и полями, но не создаёт внешнего ключа или другого ограничения в базе данных.
Основные различия между физическими и логическими связями:
Свойство |
Физическая связь |
Логическая связь |
|---|---|---|
Создаёт внешний ключ |
Да |
Нет |
Формирует SQL |
Да |
Нет |
Хранится в .eqd |
Да |
Да |
Отображается на диаграмме |
Да |
Да; по умолчанию точечной линией |
Может быть импортирована из JSON |
Нет |
Да |
Импорт логических связей из JSON
Логические связи можно добавить на ER-диаграмму путём импорта из JSON-файла. При импорте редактор создаёт логические связи между указанными таблицами и полями. Эти связи отображаются на диаграмме точечной линией, но не создают внешних ключей или других ограничений в базе данных.
Файл импорта должен содержать корректный JSON в кодировке UTF-8. Корневым элементом должен быть массив. Каждый элемент массива описывает одну логическую связь.
Пример:
[
{
"name": "CUSTOMER_ORDER",
"sourceTable": "ORDERS",
"sourceColumn": "CUSTOMER_ID",
"targetTable": "CUSTOMERS",
"targetColumn": "ID"
},
{
"sourceTable": "ORDER_ITEMS",
"sourceColumn": "ORDER_ID",
"targetTable": "ORDERS",
"targetColumn": "ID"
}
]
Логическая связь задаётся направлением от исходной таблицы к целевой.
Поля объекта:
"name"- отображаемое имя связи (необязательное поле);"sourceTable"- ссылающаяся (исходная) таблица;"sourceColumn"- ссылающееся (исходное) поле;"targetTable"- целевая таблица;"targetColumn"- целевое поле.
Все значения перечисленных полей должны быть строками. Лишние поля в объектах игнорируются.
Поле "name" не участвует в определении уникальности связи.
Две связи считаются одинаковыми, если совпадают все четыре
конечные точки: исходная таблица, исходное поле, целевая таблица и целевое поле.
Для известных системных объектов Firebird (RDB$... и MON$...) редактор
содержит встроенный набор логических связей. Такие связи автоматически отображаются
на диаграмме, если оба объекта, участвующих в связи, присутствуют на диаграмме.
Эти связи не создают ограничений в базе данных и не предназначены для удаления пользователем.