Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания для практик / Практическая работа 5.doc
Скачиваний:
23
Добавлен:
10.02.2015
Размер:
205.31 Кб
Скачать

Связи между таблицами

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

Связи между таблицами удобно представлять графически. В Access для этого используется схема данных. Чтобы открыть схему данных, необходимо выбрать в меню пункт Сервис, Схема данных. Вместе с окном схемы данных открывается окноДобавление таблицы, в котором нужно выбрать все таблицы и нажать кнопкуДобавить, а затем кнопкуЗакрыть.

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

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

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

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

Чтобы изменить связь необходимо выбрать в меню пункт Связи, Изменение связей. После выполнения этих действий откроется окноСвязи.

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

  1. Флажок "Обеспечение целостности данных" включает режим, при котором:

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

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

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

  1. Флажок "Каскадное обновление связанных полей" включает режим автоматического изменения значений связанных полей дочерней таблицы при изменении значения ключевого поля родительской таблицы.

  2. Флажок "Каскадное удаление связанных записей" включает режим автоматического удаления связанных записей дочерней таблицы при удалении записи в родительской таблице.

Чтобы активизировать один или несколько из этих режимов для какой-либо связи, нужно установить соответствующий флажок в окне Связи для выбранной связи.

Пример

Создадим связь между таблицами StudentиDepartmentпо полюNDepartment. Откройте окноСхемы данных и перетащите с помощью мыши полеNDepartmentиз таблицыStudentна полеNDepartmentв таблицеDepartment. В открывшемся окне установите флажок "Обеспечение целостности данных". Теперь в полеNDepartmentтаблицыStudentневозможно внести код, отсутствующий в таблицеDepartment. Невозможно удалить строку из таблицыDepartmentили изменить значение поляNDepartmentв этой таблице, если в таблицеStudentесть хотя бы одна запись с кодом факультета равным коду факультета удаляемой или изменяемой записи.

На рисунке представлено окно Схемы данныхсо связью между таблицамиStudentиDepartment

Для того чтобы после изменения кода факультета в таблице Departmentавтоматически изменялись соответствующие коды факультета в таблицеStudent, необходимо установить флажок Каскадное обновление связанных полей. Для того чтобы после удаления записи из таблицыDepartmentудалялись все записи с таким же кодом факультета из таблицыStudent, необходимо установить флажок каскадное удаление связанных записей.

  1. Установите еще четыре связи между таблицами, соответствующие содержанию этих таблиц.

  2. Установите следующие правила целостности:

а). запрещается удалять информацию о факультете, если на нем учится хотя бы один студент или работает хотя бы один преподаватель;

б). запрещается удалять информацию о преподавателе, если он читает хотя бы один предмет;

в). разрешить каскадное изменение во всех дочерних таблицах при изменении кода преподавателя;

г). при удалении должности разрешить каскадное удаление всех преподавателей, имеющих эту должность;

д). при добавлении нового студента установить проверку на на наличие вводимого кода факультета и вводимого кода преподавателя.