2.21. Связи между таблицами данных

Объекты разных таблиц с данными могут быть логически связаны между собой. В Программе реализованы инструменты связывания таблиц с помощью ключевых полей для повышения удобства перехода между логически связанными объектами. Таблицы связываются по типу отношения «один ко многим», что означает возможность привязки нескольких объектов одной таблицы (дочерней таблицы) к одному объекту второй таблицы (родительской таблицы).

Для создания связи «один ко многим» необходимо добавить поле связи (типа «Целое») в дочернюю таблицу и настроить связь с полем «id» («gid») родительской таблицы. В родительской таблице должно существовать текстовое поле для описания ее объектов. Это поле будет использовано при отображении значений в ключевом поле объектов дочерней таблицы.

Ниже приведен пример создания связи «один ко многим» между слоем (родительской таблицей) и таблицей данных (дочерней таблицей). В качестве родительской таблицы использован слой «Обслуживающие компании». Создано текстовое атрибутивное поле «Название компании» родительской таблицы для описания ее объектов (Рис. 2.321).

_images/mapeditor_326.png

Рис. 2.321 Объекты родительской таблицы

В качестве дочерней таблицы использована таблица данных «Работники обслуживающих компаний» (Рис. 2.322), имеющая два атрибутивных поля: «ФИО» (тип данных «Текст») и «Дата рождения» (тип данных «Дата»).

_images/mapeditor_327.png

Рис. 2.322 Объекты дочерней таблицы

Создано атрибутивное поле «Место работы» для таблицы данных «Работники обслуживающих организаций», которое будет связывать родительскую и дочернюю таблицы. В поле «Тип данных» при создании такого атрибутивного поля необходимо указать значение «Целое». В поле «Тип связи с таблицей» необходимо выбрать вариант «Таблица с данными». После выбора варианта «Таблица с данными» отобразятся дополнительные поля для настроек связи поля с родительской таблицей.

Дополнительные поля настроек необходимо заполнить следующими значениями (Рис. 2.323):

  • «Таблица источник» — наименование родительской таблицы;

  • «Поле источник для связи» — «id» или «gid»;

  • «Поле значений» — атрибутивное поле родительской таблицы, в котором хранятся наименования объектов таблицы.

После заполнения полей нужно нажать кнопку «Применить».

_images/mapeditor_328.png

Рис. 2.323 Связывание дочерней таблицы с родительской

После установления связи между родительской и дочерней таблицами при выборе любого объекта дочерней таблицы в таблице данных и в окнах «Объект» справа от атрибутивного поля, связывающего дочернюю таблицу с родительской (поле «Место работы», Рис. 2.324, Рис. 2.325), будут расположены кнопки обзора img_089 и удаления img_090. Кнопка обзора предназначена для выбора объекта родительской таблицы для связи с данным объектом дочерней таблицы, кнопка удаления предназначена для отмены связи данного объекта дочерней таблицы с объектами родительской таблицы. После выбора объекта для связи или отмены связи необходимо нажать кнопку «Сохранить».

_images/mapeditor_329.png

Рис. 2.324 Атрибутивное поле, связывающее родительскую и дочернюю таблицы в окне объекта

_images/mapeditor_330.png

Рис. 2.325 Объекты дочерней таблицы после установки связи с родительской таблицей