Иллюстрированный самоучитель по Visual FoxPro 7

Создание отношений между таблицами

Как правило, в Visual FoxPro при создании форм, отчетов и запросов используется несколько таблиц, между которыми установлены постоянные отношения. Такие таблицы называются связанными. Из двух связанных таблиц одна является главной, а другая – подчиненной. Главную таблицу называют родительской, а подчиненную – дочерней. При создании индексов для родительской таблицы должен быть определен ключ типа Primary (Первичный) или типа Candidate (Кандидат), а для дочерней таблицы – индекс для связи с родительской таблицей типа Regular (Обычный).

Рассмотрим, например, отношения между таблицей Customer, содержащей список клиентов, и таблицей Phoncust, в которой размещены данные о телефонах, по которым можно связываться с клиентами. Таблица customer является родительской по отношению к таблице PhonCust. В свою очередь, таблица PhonCust является дочерней по отношению к таблице Customer. При создании отношений между этими таблицами для customer должен быть определен первичный ключ, а для таблицы PhonCust – создан индекс по полю, содержащему код клиента, по которому осуществляется связь между таблицами.

Для создания отношений между таблицами customer и PhonCust выполните следующие действия:

  1. Откройте окно конструктора базы данных, в которой эти таблицы размещены.
  2. Откройте таблицу customer в конструкторе таблицы. Для этого щелкните на ней правой кнопкой мыши и в контекстном меню выберите команду Modify (Модифицировать).
  3. На вкладке Indexes (Индексы) создайте первичный ключ для поля icdCustomer. Для этого в поле столбца Name (Имя) введите наименование индекса icdCustomer. Для простого индекса в качестве его имени удобно использовать наименование поля, по которому индекс создается.
  4. В столбце Type (Тип) выберите из списка значение Primary (Первичный).
  5. В столбце Expression (Выражение) нажмите кнопку построителя. В открывшемся диалоговом окне Expression Builder (Построитель выражения) в списке Fields (Поля) дважды щелкните мышью на поле icdCustomer. Оно будет перенесено в поле Expression (Выражение). Нажмите кнопку ОК для закрытия диалогового окна.
  6. Индекс для таблицы customer создан. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
  7. Откройте в конструкторе таблицу PhonCust.
  8. Перейдите на вкладку Indexes (Индексы) и создайте ключ типа Regular (Обычный) для поля icdCustomer.
  9. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
  10. Выберите родительскую таблицу. В нашем примере это таблица Customer.
  11. Установите курсор мыши на первичный ключ таблицы icdCustomer.

    Замечание
    Таблицы в конструкторе базы данных обозначаются прямоугольниками, в нижней части которых после надписи Indexes (Индексы) расположен список индексов, созданных для данной таблицы. Первичный ключ в этом списке выделяется значком ключа, расположенным с левой стороны от наименования индекса
    .

  12. Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы Phoncust, по которому устанавливается связь.
  13. Отпустите кнопку мыши.
  14. Открывается диалоговое окно Edit Relationship (Редактирование отношения) (рис. 4.20), в котором слева приведено наименование родительской таблицы и расположен раскрывающийся список индексов таблицы, а справа размещена аналогичная информация о дочерней таблице. Используя раскрывающиеся списки, можно изменять индексы, по которым связываются таблицы. В этом диалоговом окне указан также тип установленного отношения между таблицами. Для сохранения отношения нажмите кнопку ОК, а для отказа – кнопку Cancel (Отмена).
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.