FoxPro8
938aad90

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


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

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

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

  • Откройте окно конструктора базы данных, и которой эти таблицы размещены.
  • Откройте таблицу customer в конструкторе таблиц. Для этого щелкните на ней правой кнопкой мыши и в контекстном меню выберите команду Modify (Модифицировать).
  • На вкладке Indexes (Индексы) создайте первичный ключ для поля icdcustomer. Для этого в поле столбца Name (Имя) пиелите наимснова-ние индекса icdcustomer. Для простого индекса в качестве ею имени удобно использовать наименование поля, по которому индекс создайся.
  • В столбце Туре (Тип) выберите из списка значение Primary (Первичный).
  • В столбце Expression (Выражение) нажмите кнопку построителя. В открывшемся диалоговом окне Expression Builder (Построитель выражений) в списке Fields (Поля) дважды щелкните мышью на поле icdcustomer. Оно будет перенесено в поле Expression (Выражение). Нажмите кнопку ОК для закрытия диалогового окна.

  • Индекс для таблицы customer создан. Нажмите кнопку ОК для закрытия окна конструктора таблицы.


  • Откройте в конструкторе таблицу PhonCust.


  • Перейдите на вкладку Indexes (Индексы) и создайте ключ типа Regular (Обычный) для поля icdcustomer.


  • Нажмите кнопку ОК для закрытия окна конструктора таблицы.


  • Выберите родительскую таблицу. В нашем примере это таблица Customer.


  • Установите курсор мыши на первичный ключ таблицы icdcustomer.


  • Замечание

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

  • Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы PhonCust, по которому устанавливается связь.


  • Отпустите кнопку мыши.


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




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



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



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

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


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