Рассмотрим пример базы данных, связывающей объекты слоя Дома с семантической информацией – адресом здания. Допустим, что адрес дома задается названием улицы или проспекта, типом («улица», «проспект», «набережная» и т.д.) и номером дома. Базовой таблицей для задания адреса будет таблица address.db, связывающая идентификаторы элементов слоя (поле Sys) с кодом адреса и номером дома. Таблица addrcode.db будет связывать код адреса с парой идентификаторов названия улицы и типа, соответственно названия («Невский», «Гороховая», «Сенная» и т.д.) будут храниться в таблице street.db, а типы («проспект», «улица», «площадь» и т.д.) — в таблице strtype.db. Нам же нужно получить для запрашиваемого элемента слоя информацию в виде названия, типа и номера дома.
Шаг 1. Открытие описателя базы данных
Откройте структуру слоя Дома, для этого выберите пункт меню (слой при этом НЕ должен быть редактируемым).
В открывшемся диалоговом окне Структура слоя в дереве слева выделите пункт Базы данных.
Справа в открывшейся вкладке выделите созданную ранее базу База по домам, нажмите кнопку
.Шаг 2. Редактирование таблицы Address.db
В редакторе баз данных выделите таблицу address.
Сделайте щелчок правой кнопкой мыши и в открывшемся контекстом меню выберите пункт
.Нажмите кнопку Короткое целое.
и в свободной строке введите имя поле Addr_code, установите для него тип -Точно так же как в пункте 3 добавьте поле Bld_no, тип поля установите так же короткое целое.
Для сохранения таблицы нажмите кнопку
.Закройте окно изменения таблицы – кнопка
.Шаг 3. Создание таблиц addrcode.db и strtype.db
Нажмите кнопку
.Задайте имя таблицы addrcode, нажмите
.Поле Sys в данной таблице не нужно, удалите его.
Добавьте поля.
Addr_code – тип короткое целое;
Street_code – тип короткое целое;
Type_code – тип короткое целое.
Сохраните таблицу, закройте окно.
Точно таким же образом создайте и сохраните таблицу strtype с полями.
Street_type – тип короткое целое;
Name – тип строковое.
Шаг 4. Создание запроса
В редакторе баз данных нажмите кнопку .
Нажмите кнопку
.Добавьте в запрос таблицы address, addrcode, street и strtype.
Проведите связь между полями таблиц.
Address.AddrCode->AddrCode.Addr_Code;
AddrCode.Street_Code->Street.Code_Street;
AddrCode.Type_Code->StrType.Street_Type.
Из выбранных таблиц наберите список полей, участвующих в запросе (из таблицы Street - поле Name_street, из таблицы Strtype - поле Name, из таблицы Addres - поле Bld_No).
Задайте пользовательские названия полей запроса.
Выберите поле связи с картой, (для рассматриваемого примера - поле Sys из таблицы Address).
Для сохранения запроса нажмите кнопку
.Задайте имя запроса, например Адресные точки, закройте окно создания запроса.
Рисунок 711. Диалоговое окно Запрос
Шаг 5. Выбор основного запроса
В окне описателя для объектов типа Запрос в строке Основной запрос выберите из ниспадающего списка запрос Адресные точки.
Сохраните описатель – кнопка
и закройте окно редактора баз данных.