Если база данных содержит помеченные на удаление объекты, при открытии окна построителя условий целостности данных Referential Integrity Builder(Построитель целостности данных) Visual FoxPro попросит очистить базу данных. В этом случае в меню Database (База данных) выберите команду CleanUp Database (Очистка базы данных), после чего повторно выполните команду, открывающую окно построителя условий целостности данных.
Таблица описания условий содержит имена родительской и дочерней таблиц, наименования индексов, используемых для связи, а также типы действий, выполняемых при модификации данных: добавлении и удалении записей.
В центре диалогового окна находятся переключатели, предназначенные для указания типа выполняемого действия. В нижней части диалогового окна отображается краткая справка о возможном выборе действий. Кроме того, вы можете выбрать тип действия из раскрывающегося списка непосредственно в полях Update (Изменить), Delete (Удалить) и Insert (Вставить).
Рассмотрим возможные действия программы Visual FoxPro при изменении значения первичного ключа или ключа типа Candidate (Кандидат) в родительской таблице в зависимости от используемой опции (табл. 4.11.).
|
|
Таблица 4.11. Описание действий Visual FoxPro в зависимости от выбранной опции при изменении значения первичного ключа или ключа типа Candidate
Наименование опции | Описание |
Cascade (Каскадное изменение) | При изменении значений полей первичного ключа или ключа-кандидата в родительской таблице, автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице. Например, если это правило применить к отношению между таблицами Customer и Ordsalem, при изменении кода клиента в таблице Customer автоматически будут изменены коды и в Таблице Ordsalem |
Restrict (Запрет изменения) | Не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись. Данное правило также можно применить к отношению между таблицами Customer и Ordsalem, если в создаваемом приложении коды клиента определяются на этапе ввода нового клиента и в дальнейшем не редактируются |
Ignore (Игнорировать) | Позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается |
При удалении записи из родительской таблицы возможны следующие действия программы Visual FoxPro в зависимости от установленной в диалоговом окне Referential Integrity Builder (Построитель целостности данных) опции (табл. 4.12).
Таблица 4.12. Описание действий Visual FoxPro, в зависимости от выбранной опции, при удалении записи из родительской таблицы
|
|
Наименование опции | Описание |
Cascade (Изменять каскадно) | При удалении записи из родительской таблицы автоматически осуществляется каскадное удаление всех записей из дочерней таблицы, связанных с удаляемой записью |
Restrict (Ограничивать) | Не позволяет удалять записи в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на удаляемую запись. При попытке удаления записи возникает ошибка, которую вы можете обработать программно |
Ignore (Игнорировать) | Позволяет удалять записи в родительской таблице независимо от существования связанных записей в дочерней таблице. Очевидно, что целостность данных при этом не поддерживается |
Используя опции диалогового окна Referential Integrity Builder (Построитель целостности данных), можно задать действия, выполняемые Visual FoxPro при добавлении новой записи в дочернюю таблицу или редактировании в ней существующей (табл. 4.13).
Таблица 4.13. Описание действий Visual FoxPro, в зависимости от выбранной опции, при добавлении новой записи в родительскую таблицу
Наименование опции | Описание |
Restrict (Ограничивать) | Не позволяет вводить запись, если значение индексного выражения дочерней таблицы не соответствует одной из записей в родительской таблице |
Ignore (Игнорировать) | При вводе данных в дочернюю таблицу не анализируется значение индексного выражения. Целостность данных при этом не поддерживается |
После завершения определения в диалоговом окне Referential IntegrityBuilder (Построитель целостности данных) условий целостности данных вся введенная информация сохраняется в базе данных. Определим условия целостности данных для таблиц Customer и Ordsalem.
- Откройте окно конструктора базы данных.
- Создайте отношение между родительской таблицей customer и дочерней таблицей Ordsalem.
- Выделите линию, соединяющую таблицы.
- Нажмите правую кнопку мыши и выберите команду контекстного меню Edit Referential Integrity (Редактировать целостность данных). На экране откроется диалоговое окно Referential Integrity Builder (Построитель целостности данных).
- Предположим, что в процессе эксплуатации нашего приложения коды клиента могут изменяться, поэтому в поле update (Изменить) установите тип действий cascade (Каскадное изменение).
- Для обеспечения целостности данных при удалении записей в таблице
- Customer в поле Delete (Удалить) установите тип действий Restrict (Запрет изменения).
Для сохранения выполненных действий нажмите кнопку ОК.