23. Логические связи ER-диаграмм

В ER-диаграмме связь между таблицами может быть физической или логической.

Физическая связь соответствует внешнему ключу в базе данных. При создании такой связи редактор формирует соответствующее ограничение внешнего ключа (SQL-оператор ALTER TABLE для добавления внешнего ключа).

Логическая связь существует только в ER-модели. Она отображает предполагаемое отношение между таблицами и полями, но не создаёт внешнего ключа или другого ограничения в базе данных.

Основные различия между физическими и логическими связями:

Свойство

Физическая связь

Логическая связь

Создаёт внешний ключ

Да

Нет

Формирует SQL ALTER TABLE

Да

Нет

Хранится в .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$...) редактор содержит встроенный набор логических связей. Такие связи автоматически отображаются на диаграмме, если оба объекта, участвующих в связи, присутствуют на диаграмме. Эти связи не создают ограничений в базе данных и не предназначены для удаления пользователем.