Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
база данных.docx
Скачиваний:
167
Добавлен:
24.03.2015
Размер:
5.83 Mб
Скачать

12.8. Организация межтабличных связей

В Visual FoxPro можно связывать таблицы — устанавливать связи между ними. При этом возможно установление постоянных и временных связей между таблицами. Постоянныесвязи можно установить в Конструкторе БД, и они прежде всего необходимы для поддержания целостности БД при об­новлении содержимого таблиц. Временные связи между таблицами могут устанавливаться при создании экранных форм (для ввода и редактирования данных) и отчетов. Обычно это делается в < случаях, когда имеющиеся посто­янные связи по каким либо причинам не подходят для создаваемой формы или отчета.

Постоянные связи хранятся в словаре БД и автоматически устанавлива ются при открытии таблиц. Приведем условия установления постоянных свя зей.

  1. Одна из связываемых таблиц яв ляется родительской, другая — дочер­ней.

  2. Для родительской таблицы индекс должен быть определен как первич­ный ключ (Primary) или ключ кандидат(Candidate).

  3. Для дочерней таблицы индекс может быть не уникальным. По этому индексу дочерняя таблица будет связываться с родительской (внешний ключ).

Создадим постоянные связи между таблицами. Для этого войдем в Конст­руктор БД и убедимся в наличии (или создадим) перечисленные ниже ин­дексы (табл. 12.6).

Таблица12.6

Типы индексов БД 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

TDOLGN

i_dolgn

Primary

dolgn

После создания всех необходимых индексов в окне Конструктора БД (рис. 12.4) будут представлены все таблицы в виде списка из полей и индексов, разделенных ключевым словом Indexes (индексы).Если в таблице список полей и индексов виден не полностью, его можно прокрутить вниз или вверх. На рис. 12.5 показаны установленные межтабличные связи.

; P Fields

stag

j d_stag

Ulndexes

fi_ttag

1]

-.-'i- . - V

Ш Fields

■jm. г

dolgn

oklad

""^Indexes

?i_dolgn

й

ШШЩЩЛЩ

1

llFiekk

fio

predm

gruppa

vidzan

Pllndexes

i_zagr

Щ

.aid

<J i

Рис. 12.5. Межтабличные связи БД Bdu

Для установления постоянной связи между родительской и дочерней таб­лицей необходимо:

  • установить указатель мыши на первичный ключ родительской таблицы;

1нажав левую кнопку мыши, переместить указатель на индекс дочерней

таблицы, по которому устанавливается связь;

  • отпустить кнопку.

На экране появится диалоговое окно Edit Relationship (правка связей), содержащее имена связываемых таблиц с раскрывающимися списками ин­дексов. В списках уже выбраны индексы, по которым должна осуществлять­ся связь. Здесь же указывается тип связи между таблицами «один к одному» или «один ко многим». Для сохранения связи нажмем ОК, а при отказе —Cancel (отмена).

Для удаления межтабличной связи требуется выполнить следующее:

  • навести указатель мыши на линию связи таблиц;

  • нажать правую кнопку мыши, что приведет к утолщению линии и появ­лению всплывающего меню;

  • выполнить команду Remove Relationship (удалить связь)всплываю­щего меню.

В результате выделенная связь будет удалена. Напомним, что установлен­ные постоянные связи между таблицами используются прежде всего для обес­печения ссылочной целостности (непротиворечивости) БД при обновлении ее содержимого. Для снижения возможных потерь данных рекомендуется сначала устанавливать правила ссылочной целостности, а затем вводить дан­ные в таблицы.