В Visual FoxPro можно связывать таблицы - устанавливать отношения (связи) между ними. При этом возможно установление постоянных и временных отношений между таблицами. Постоянные связи можно установить в Конструкторе БД, и они прежде всего необходимы для поддержания целостности БД при обновлении содержимого таблиц. Временные связи между таблицами могут устанавливаться при создании экранных форм (для ввода и редактирования данных) и отчетов. Обычно это делается в случаях, когда имеющиеся постоянные связи но каким-либо причинам не подходят для создаваемой формы или отчета.
Постоянные связи хранятся в словаре БД и автоматически устанавливаются при открытии таблиц. Приведем условия установления постоянных связей.
Одна из связываемых таблиц является родительской, другая - дочерней.
Для родительской таблицы индекс должен быть определен как первичный ключ (Primary) или ключ-кандидат (Candidate).
Для дочерней таблицы индекс может быть не уникальным. По этому индексу дочерняя таблица будет связываться с родительской (внешний ключ).
Создадим постоянные связи между таблицами. Для этого войдем в Конструктор БД и убедимся в наличии (пли создадим) перечисленные ниже индексы (табл. 21.5).
После создания всех необходимых индексов в окне Конструктора БД (рис. 21.4) будут представлены все таблицы в виде списка из полей и индексов, разделенных ключевым словом Indexes (индексы). Если в таблице список нолей и индексов виден не полностью, сто можно прокрутить вниз пли вверх. На рис. 21.4 показаны установленные межтабличные связи.
Для установления постоянной связи между родительской и дочерней таблицей необходимо:
установить указатель мыши на первичный ключ родительской таблицы;
нажав левую кнопку мыши, переместить указатель на индекс дочерней таблицы, по которому устанавливается связь;
отпустить кнопку.
264
Таблица 21.5
Типы индексов БД Bdu
Таблица
Имя тега
Тип индекса
Индексное выражение
T_ZAGR
i_zagr
Primary
FIO+Predm+STR(Gruppa)
T_PREP
i_fio
Primary
FIO
T_PREP
i_dolgn
Candidate
Dolgn
T_PREP
i_stag
Candidate
Stag
T_STAG
i_stag
Primary
Stag
T_DOLGN
i_dolgn
Primary
Dolgn
<
/p>
На экране появится диалоговое окно Edit Relationship (правка отношений) содержащее имена связываемых таблиц с раскрывающимися списками индексов В списках уже выбраны индексы, по которым должна осуществляться связь Здесь же указывается гнп отношений между таблицами "один к одному" или "один ко многим " Для сохранения отношения нажмем ОК, а при отказе - Cancel (отмена)
Для удаления межтабличнои связи требуется выполнить следующее
навести указатель мыши на линию связи таблиц
нажать правую кнопку мыши, что приведет к утолщению линии и появлению всплывающего меню,
выполнить команду Remove Relationship (удалить отношение) всплывающего меню
В результате выделенная связь будет удалена Напомним, что установленные постоянные отношения (связи) между таблицами используются прежде всего для обеспечения ссылочной целостности (непротиворечивости) БД при обновлении ее содержимого Прежде чем усыпавливать правила ссылочной целостности рекомендуется ввести данные в таблицы