Использование взаимосвязей
Обеспечение целостности данных
Ранее в окне Изменение связей (рис. 6.13) был установлен флажок Обеспечение целостности данных. Принцип обеспечения целостности подразумевает необходимость использования набора правил, защищающих данные, поскольку Access запрещает добавление или изменение некоторых записей. Таким образом, обеспечение целостности данных позволяет:
- запретить изменение значения первичного ключа, если это в другой таблице существует связанная запись;
- запретить ввод значения внешнего ключа, если значение не используется в качестве первичного ключа связанной таблицы.
Эти правила станут более понятными при выполнении практического задания, поэтому вернемся к таблицам и внесем в них некоторые изменения. Сначала, открыв таблицу Каталоги, попробуйте удалить первую запись. При этом появится предупреждение, которое вы видите на рис. 6.16. Щелкните на кнопке ОК.
Рис. 6.16. Функция обеспечения целостности не позволит удалить запись каталога Фермер
Запись для каталога Фермер не удалось удалить по той причине, что два растения – космея и германская ромашка – связаны с каталогом. До тех пор, пока записи о растениях не будут удалены из таблицы Растения, в каталоге Фермер от них избавиться не удастся.
Удаление этой записи, будь оно возможно, привело бы к появлению "одиночки" – связанной записи, значение внешнего ключа которой (в данном случае ключа каталога Фермер) не связано с записью соответствующей таблицы. Другими словами, в случае удаления записи каталога Фермер стало бы невозможно узнать, где были приобретены семена ромашки и космеи. Может быть, это не покажется большой проблемой, но как насчет информации о клиентах, разместивших тот или иной заказ? Ведь сведения такого рода для нас "жизненно необходимы".
Теперь посмотрим, что произойдет при попытке изменить значение первичного ключа. В таблице Каталоги попробуйте изменить название Фермер на Фермерша. При этом символ ввода будет перемещен на соседнюю строку. Изменение записи приведет к появлению предупреждения о невозможности ее удаления, поскольку таблица Растения содержит связанные записи. Щелкните на кнопке ОК, а затем на кнопке Esc. Причина появления сообщения та же, что в предыдущем случае: изменение названия каталога привело бы к появлению в таблице Растения "одиночек", а именно растений космея и ромашка.
Если убран флажок Обеспечение целостности данных, Access позволяет обновить любое значение или добавить/удалить любую запись, когда не изменится тип данных и не нарушаются правила проверки достоверности, описанные в главе 11, "Настройка таблиц". По этой причине флажок желательно не снимать. Кроме того, не следует устанавливать флажки каскадного обновления, не имея на то веского основания, и тем более не рекомендуется оставлять их постоянно установленными.