Базы данных Visual Foxpro

         

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

Как правило, в 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. В столбце Туре (Тип) выберите из списка значение Primary (Первичный).
  5. В столбце Expression (Выражение) нажмите кнопку построителя. В открывшемся диалоговом окне Expression Builder (Построитель выражения) в списке Fields (Поля) дважды щелкните мышью на поле icdCustomer. Оно будет перенесено в поле Expression (Выражение). Нажмите кнопку ОК для закрытия диалогового окна.
  6. Индекс для таблицы customer создан. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
  7. Откройте в конструкторе таблицу PhonCust.
  8. Перейдите на вкладку Indexes (Индексы) и создайте ключ типа Regular

(Обычный) для поля icdCustomer.

  1. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
  2. Выберите родительскую таблицу. В нашем примере это таблица Customer.
  3. Установите курсор мыши на первичный ключ таблицы icdCustomer.

Замечание

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

  1. Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы Phoncust, по которому устанавливается связь.
  2. Отпустите кнопку мыши.
  3. Открывается диалоговое окно Edit Relationship (Редактирование отношения) (рис. 4.20), в котором слева приведено наименование родительской таблицы и расположен раскрывающийся список индексов таблицы, а справа размещена аналогичная информация о дочерней таблице. Используя раскрывающиеся списки, можно изменять индексы, по которым связываются таблицы. В этом диалоговом окне указан также тип установленного отношения между таблицами. Для сохранения отношения нажмите кнопку ОК, а для отказа — кнопку Cancel (Отмена).

Рис. 4.20. Диалоговое окно Edit Relationship для установления отношений между таблицами

Диалоговое окно Edit Relationship (Редактирование отношения) закрывается, а в окне конструктора базы данных отображается в виде линии созданное отношение между таблицами (рис. 4.21).

Установите курсор на линию, соединяющую связываемые таблицы. Толщина линии увеличивается. При щелчке по ней правой кнопкой мыши появляется контекстное меню, содержащее четыре команды (рис. 4.22). команда Remove Relationship (Удалить отношение) удаляет установленное между таблицами отношение. При выборе команды Edit Relationship (Редактирование отношения) открывается диалоговое окно Edit Relationship (Редактирование отношения), позволяющее изменить установленное отношение. Команда Edit Referential Integrity (Редактирование целостности данных) открывает диалоговое окно Referential Integrity Builder (Построитель целостности данных). Об этом окне речь пойдет в следующем разделе.

Рис. 4.21. Отображение связи между таблицами

Рис. 4.22. Контекстное меню

 

Содержание раздела