Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть I.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
18 Мб
Скачать
☆

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

При определении связи между полями двух таблиц в диалоговом окне Изменение связей имеется опция Обеспечение целостности данных (рис. 19). Целостность данных – это система правил, регулирующих взаимодействие между связанными таблицами и обеспечивающих корректность хранимых в таких таблицах данных. Целостность данных подразумевает, что данные, введенные в общее поле двух связанных таблиц, должны совпадать.

Если используются условия целостности данных, то Access будет поддерживать следующие правила.

  • В поле внешнего ключа дочерней таблицы нельзя ввести значение, не содержащиеся в поле первичного ключа родительской таблицы. Таким образом, если попытаться указать в поле Ngr номер группы, отсутствующий в списке Группы (поле Nгр), при сохранении записи программа Access выдаст сообщение об ошибке.

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

  • Нельзя изменить значение первичного ключа в родительской таблице, если для данной записи существуют связанные записи в дочерней таблице. Например, если попытаться изменить название кафедры в поле Deprt таблицы Кафедры, то это сделать будет невозможно, т.к. в таблице Преподаватели существуют записи, в которых используется старое название (рис. 22).

Рис. 22. Предупреждение Access о невозможности изменения данных, которое может нарушить их целостность

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

  • Если поставить флажок на опции Каскадное обновление связанных полей, то при любом изменении данных первичного ключа в родительской таблице (например, названия кафедры в поле Deprt таблицы Кафедры) автоматически будут обновляться соответствующие значения в поле связанной таблицы (поле Deprt таблицы Преподаватели). Благодаря внесению необходимых изменений в связанную таблицу целостность данных не будет нарушена. Если эта опция не включена, изменить значение ключевого поля первичной таблицы не удастся, как это уже было показано в предыдущем пункте.

  • Когда установлен флажок в опции Каскадное удаление связанных полей, то при удалении записи в родительской таблице автоматически будут удаляться соответствующие записи в дочерней связанной таблице. Например, если такого рода связь установлена между таблицами Учетная карта и Ведомость, то при удалении записи из одной таблицы Учетная карта автоматически будет удалена такая же запись из таблицы Ведомость.

ЗАДАНИЕ 8. Редактирование и удаление связей между таблицами

В предыдущем ЗАДАНИИ 7 между всеми таблицами БД Факультет были установлены связи. Любая связь может быть отредактирована или удалена. Для это необходимо выполнить следующие действия:

  1. Если таблицы, между которыми необходимо изменить связь, открыты, заройте их.

  2. Открыть окно Схема данных.

  3. В окне Схема данных подвести курсор к линии связи, которую надо откорректировать, и двойным щелчком открыть диалоговое окно Изменение связей (рис. 19).

  4. Внесите необходимые изменения: установите целостность данных и каскадное обновление полей, проставив в соответствующих окнах флажки. После закрытия окна Изменение связей вы снова вернетесь в окно Схема данных.

  5. Обратите внимание, как изменился вид линий связи: теперь по схеме данных можно определить тип связи (рис. 23).

  6. После установления целостности связей всех таблиц откройте в режиме таблицы таблицу Учетная карта и Ведомость. Введите в первую таблицу в поле ФИО фамилии Иванов И.И. и Петров П.П., другие поля заполнять необязательно (запись считается введенной, если курсор уже переведен в поле временной (новой) записи). Затем через буфер обмена перенесите эти фамилии в таблицу Ведомость.

  7. Установите расположение окон Слева направо, используя пункт горизонтального меню Окно. Перейдите в таблицу Учетная карта. Удалите запись Иванов И.И.. (используйте пункт Правка>Удалить запись горизонтального меню). Внимательно прочтите предупреждение, которое выдает Access на ваши действия (рис. 24 а). Подтвердите удаление. Обратите внимание, что произошло с этой же записью в таблице Ведомость.

Рис. 23. Схема связей между таблицами, в которых обеспечивается целостность данных

  1. Установите курсор в таблицу Ведомость. Удалите запись с фамилией Петров П.П. Обратите внимание на предупреждение, сделанное Access в этом случае (рис. 24 б). Самостоятельно удалите запись с фамилией Петров П.П. из таблицы Учетная карта. Закройте обе таблицы.

а)

б)

Рис. 24. Предупреждение Access при каскадном удалении записи а) в главной таблице. б) в подчиненной таблице

  1. Откройте таблицы Группы и Преподаватели. и расположите их Слева направо.

  2. Попробуйте удалить запись с фамилией Голованова Н.И. из таблицы Преподаватели. Access не может позволить вам этого сделать, иначе нарушается целостность данных (скопируйте запись с фамилией Голованова Н.И. в буфер обмена).

  3. Удалите фамилию Голованова Н.И. из поля Кураторы таблицы Группы. А затем еще раз повторите шаг 10. На этот раз удаление записи должно пройти успешно.

  4. Вставьте из буфера удаленную запись в таблицу Преподаватели и впишите эту же фамилию в поле Кураторы таблицы Группы. Закройте все таблицы.

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

  1. Щелкнуть на требуемой линии объединения в окне Схема данных (линия при этом станет более жирной) и нажмите клавишу <Delete>. Есть и другой способ: щелкнуть правой кнопкой мыши на нужной линии связи и выбрать из появившегося контекстного меню команду Удалить.

  2. На экране появится диалоговое окно Access, в котором необходимо будет подтвердить удаление связи.

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

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