Организация постоянных межтабличных связей
В 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 (удалить отношение) всплывающего меню
В результате выделенная связь будет удалена Напомним, что установленные постоянные отношения (связи) между таблицами используются прежде всего для обеспечения ссылочной целостности (непротиворечивости) БД при обновлении ее содержимого Прежде чем усыпавливать правила ссылочной целостности рекомендуется ввести данные в таблицы
Рис 21 4 Межтабличные связи БД Bdu
265
264 :: 265 :: Содержание
Все публикации раздела