Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 3. Создание базы данных.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
484.86 Кб
Скачать

Обеспечение целостности данных

Если связываемые в схеме данных таблицы находятся в отношении 1:1 и 1:.М, для связи можно задать параметр обеспечения связной целостности данных.

Обеспечение связной целостности данных означает, что Access при корректировке базы данных обеспечивает для связанных таблиц контроль за соблюдением следующих условий:

  • в подчиненную таблицу не может быть добавлена запись с несуществующим в записях главной таблицы значением ключа связи;

  • в главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице;

  • изменение значений ключа связи в записи главной таблицы невозможно, если подчиненная таблица имеет связанные с ней записи, в которых не меняется соответственно ключ связи.

При попытке пользователя нарушить эти условия в операциях добавления и удаления записей или при обновлении ключевых данных в связанных таблицах Access не допускает выполнение операции и выводит соответствующее сообщение. Access не позволяет установить параметр целостности для связи таблиц, если ранее введенные в таблицы данные не отвечают требованиям целостности.

Установление между двумя таблицами связи и задание для нее параметров целостности данных возможно только при следующих условиях:

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

  • обе таблицы сохраняются в одной базе данных Access;

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

Для каждой из ранее установленных связей базы данных "Поставка товаров" установим в окне Изменение связей (Edit Relationships) флажок Обеспечение

целостности данных (Enforce Referential Integrity). Установление связи с параметром обеспечения целостности данных возможно только в том случае, если таблицы ранее были заполнены корректными данными. В противном случае появится сообщение о невозможности установить связь.

Каскадное обновление и удаление связанных записей

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

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

В режиме каскадного обновления связанных полей при изменении значения поля связи в записи главной таблицы Access автоматически изменит значения в соответствующем поле в подчиненных записях.

Установить в окне Изменение связей (Edit Relationships) (см. рис. 3.27) флажки Каскадное обновление связанных полей (Cascade Update Related Fields) и Каскадное удаление связанных записей (Cascade Delete Related Records) можно только после задания параметра обеспечения целостности данных.

После создания связей изображения таблиц могут перемещаться в пределах рабочего пространства окна схемы данных. Перемещения и изменения раз­меров окон со списками полей таблиц в окне схемы данных осуществляются принятыми в Windows способами. На рис. 3.30 показана схема базы данных "Поставка товаров", где таблицы размещены в соответствии с размещением информационных объектов канонической модели данных, полученной при проектировании базы данных в главе 2 (см. рис. 2.18).

Это свидетельствует о том, что одно-много-задачные связи установлены правильно (по простому или составному ключу) для них установлен параметр обеспечения целостности данных.

Рис 3.30 Схема данных базы данных «Поставка товаров»

ЗАДАНИЕ 4. Проверка поддержания целостности в базе данных

Если в схеме данных определена связь таблиц, для которой установлены параметры обеспечения целостности, при вводе и корректировке данных во взаимосвязанных таблицах пользователь не сможет ввести записи, нарушающие требования связной целостности, рассмотренные в предыдущем разделе. Проверим, как обеспечивается поддержание целостности при внесении изменений в таблицы покупатель и договор, связанные одно-многозначными отношениями.

Проверка автоматического поддержания целостности при изменении значений Ключей связи в таблицах. Откроем главную таблицу связи покупатель в режиме таблицы. Изменим значение ключевого поля код_пок (код покупателя) в одной из записей. Убедимся, что во всех записях подчиненной таблицы договор для договоров, заключенных этим покупателем, автоматически также изменится значение поля код_пок. Изменение происходит, т. к. был установлен параметр Каскадное Обновление связанных полей (Cascade Update Related Fields) (см. рис. 3.27). Причем это изменение осуществляется, как только изменяемая запись перестает быть текущей. Для наблюдений за автоматическими изменениями в подчиненной таблице откроем на экране одновременно таблицы покупатель и договор.

Изменим значение ключа связи код_пок в подчиненной таблице договорное значение, не существующее в записях таблицы покупатель, и убедимся, что такое изменение запрещено, т. к. при поддержании целостности не макет существовать запись подчиненной таблицы с ключом связи, которого нет в главной таблице.

Проверка при добавлении записей в подчиненную таблицу. Убедимся, что невозможно включить новую запись в подчиненную таблицу договор со значением ключа связи код_пок, не представленным в таблице покупатель.

Проверка при удалении записи в главной таблице. Убедимся, что вместе q удалением записи в главной таблице покупатель удаляются все подчиненные записи в таблице договор, т. к. был установлен параметр Каскадное удаление связанных записей (Cascade Delete Related Records).

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