Создание отношений между таблицами
Как правило, в Visual FoxPro при создании форм, отчетов и запросов используется несколько таблиц, между которыми установлены постоянные отношения. Такие таблицы называются связанными. Из двух связанных таблиц одна является главной, а другая – подчиненной. Главную таблицу называют родительской, а подчиненную – дочерней. При создании индексов для родительской таблицы должен быть определен ключ типа Primary (Первичный) или типа Candidate (Кандидат), а для дочерней таблицы – индекс для связи с родительской таблицей типа Regular (Обычный).
Рассмотрим, например, отношения между таблицей Customer, содержащей список клиентов, и таблицей Phoncust, в которой размещены данные о телефонах, по которым можно связываться с клиентами. Таблица customer является родительской по отношению к таблице PhonCust. В свою очередь, таблица PhonCust является дочерней по отношению к таблице Customer. При создании отношений между этими таблицами для customer должен быть определен первичный ключ, а для таблицы PhonCust – создан индекс по полю, содержащему код клиента, по которому осуществляется связь между таблицами.
Для создания отношений между таблицами customer и PhonCust выполните следующие действия:
- Откройте окно конструктора базы данных, в которой эти таблицы размещены.
- Откройте таблицу customer в конструкторе таблицы. Для этого щелкните на ней правой кнопкой мыши и в контекстном меню выберите команду Modify (Модифицировать).
- На вкладке Indexes (Индексы) создайте первичный ключ для поля icdCustomer. Для этого в поле столбца Name (Имя) введите наименование индекса icdCustomer. Для простого индекса в качестве его имени удобно использовать наименование поля, по которому индекс создается.
- В столбце Type (Тип) выберите из списка значение Primary (Первичный).
- В столбце Expression (Выражение) нажмите кнопку построителя. В открывшемся диалоговом окне Expression Builder (Построитель выражения) в списке Fields (Поля) дважды щелкните мышью на поле icdCustomer. Оно будет перенесено в поле Expression (Выражение). Нажмите кнопку ОК для закрытия диалогового окна.
- Индекс для таблицы customer создан. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
- Откройте в конструкторе таблицу PhonCust.
- Перейдите на вкладку Indexes (Индексы) и создайте ключ типа Regular (Обычный) для поля icdCustomer.
- Нажмите кнопку ОК для закрытия окна конструктора таблицы.
- Выберите родительскую таблицу. В нашем примере это таблица Customer.
- Установите курсор мыши на первичный ключ таблицы icdCustomer.
Замечание
Таблицы в конструкторе базы данных обозначаются прямоугольниками, в нижней части которых после надписи Indexes (Индексы) расположен список индексов, созданных для данной таблицы. Первичный ключ в этом списке выделяется значком ключа, расположенным с левой стороны от наименования индекса. - Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы Phoncust, по которому устанавливается связь.
- Отпустите кнопку мыши.
- Открывается диалоговое окно Edit Relationship (Редактирование отношения) (рис. 4.20), в котором слева приведено наименование родительской таблицы и расположен раскрывающийся список индексов таблицы, а справа размещена аналогичная информация о дочерней таблице. Используя раскрывающиеся списки, можно изменять индексы, по которым связываются таблицы. В этом диалоговом окне указан также тип установленного отношения между таблицами. Для сохранения отношения нажмите кнопку ОК, а для отказа – кнопку Cancel (Отмена).