Усложним задачу. Изменим созданную в предыдущем примере базу данных таким образом, чтобы, список всех названий улиц города существовал в отдельной таблице. Каждая запись в таблице имеет свой уникальный код. Тогда в таблице адресов вместо поля Название улицы будет поле Код улицы. Таблицы будут связаны между собой по полю Код улицы. При выполнении запроса к семантической базе данных будет происходить выборка значений из таблицы address, название улицы будет выбираться из таблицы street.
Шаг 1. Открытие описателя базы данных
Откройте структуру слоя Дома, для этого выберите пункт меню слоя или нажмите на панели инструментов кнопку (слой при этом НЕ должен быть редактируемым).
В открывшемся диалоговом окне Структура слоя в дереве слева выделите пункт .
Справа в открывшейся вкладке выделите созданную ранее базу База по домам, нажмите кнопку .
Шаг 2. Создание таблицы Список улиц
Создайте таблицу со списком улиц и указанными ниже полями аналогично примеру Создание базы данных с одной таблицей, шаг 2. Назовите эту таблицу street. Так как данная таблица не будет напрямую связана с объектами карты, то в ней поле Sys - поле связи с картой не нужно, поэтому просто выделите его и удалите с помощью кнопки .
Таблица должна иметь следующие поля:
Cod_street – код улицы (тип поля короткое целое);
Name_street – название улицы (тип поля строковое).
Поле Cod_street сделайте ключевым, для этого сделайте щелчок левой кнопки мыши в столбце Ключ.
В результате проделанных операций у вас должна получиться таблица, идентичная представленной на рисунке ниже.
Рисунок 625. Создание таблицы
Шаг 3. Изменение таблицы Адреса
Для изменения таблицы выполните следующие действия:
В редакторе баз данных выделите таблицу address.DB.
Сделайте щелчок правой кнопкой мыши и в появившемся контекстном меню выберите команду
.В окне редактирования таблицы нажмите кнопку
и в свободной строке введите имя поля Cod_street, тип выберите короткое целое.Сохраните таблицу с тем же именем (кнопка
).Закройте окно с помощью кнопки
.Шаг 4. Создание запроса к семантической БД
В редакторе баз данных нажмите кнопку .
Нажмите кнопку
.В появившемся диалоговом окне Добавить таблицы выделите таблицу address, нажмите кнопку , а затем таблицу street и снова нажмите кнопку .
Закройте это окно кнопкой
.Проведите связь между полем Cod_street таблицы Address и Cod_Street таблицы Street. Для этого щелкните мышью на названии поля Cod_street таблицы Address и, удерживая нажатой левую кнопку мыши, протяните связь к полю Cod_Street таблицы Street (тип установленной связи — один к одному).
Добавьте в список полей запроса следующие поля (для добавления поля сделайте по нему двойной щелчок левой кнопкой мыши):
Из таблицы Street:
Name_street.
Из таблицы Address:
Num_house;
Type_house;
Hight_house.
Задайте пользовательские названия полей запроса. Для этого выделите поле в списке полей запроса и нажмите кнопку (свойства). В открывшемся диалоговом окне в строке пользовательское имя введите пользовательское название полей такие, как указано на рисунке ниже. Нажмите кнопку .
Выберите поле связи с картой, для этого в строке поле связи нажмите кнопку
и в открывшемся списке выделите поле Sys из таблицы аddress и нажмите кнопку .Рисунок 626. Создание запроса
Для сохранения запроса нажмите кнопку
.Задайте имя запроса, например Две таблицы, нажмите кнопку
.Закройте окно создания запроса с помощью кнопки
.Шаг 5. Выбор основного запроса
Теперь описатель хранит два визуальных запроса. Необходимо определить, какой запрос будет открываться при выборе окна семантической информации. Для этого:
В окне редактора баз данных для объектов типа Запрос в строке Основной запрос выберите из ниспадающего списка нужный запрос (Две таблицы).
Рисунок 627. Выбор основного запроса
Сохраните описатель – кнопка
и закройте окно редактора баз данных.Шаг 6. Открытие окна семантической информации
Для проверки правильности создания и подключения базы данных надо открыть окно семантической информации:
На панели навигации нажмите кнопку информация .
Сделайте активным слой Дома или нажмите и не отпускайте на клавиатуре клавиши Ctrl и Shift.
Щелкните левой кнопкой мыши по любому объекту слоя. При этом на экране откроется окно семантической информации, готовое для занесения данных.
Рисунок 628. Окно семантической информации
В строке Название улицы кнопка открывает окно подчиненной таблицы.
Рисунок 629. Окно подчиненной таблицы