Схема данных является не только удобным и наглядным средством графического отображения логических связей таблиц базы данных. Связи, заданные в схеме данных, автоматически используются для объединения записей связанных таблиц при любой обработке. Это упрощает процесс конструирования многотабличных форм, запросов и отчетов.
По заданному для связи параметру объединения определяется, как должно происходить объединение записей связываемых таблиц. По умолчанию происходит объединение только тех записей связанных таблиц, в которых значения поля связи совпадают.
Установление связи между двумя таблицами возможно только при выполнении следующих условий:
1.связываемые таблицы имеют поля с одинаковым типом данных, причем имена полей могут быть различными;
2.обе таблицы сохраняются в одной базе данных Access.
Если главная таблица связывается с подчиненной по первичному простому или составному ключу (уникальному индексу) главной таблицы, то Access определяет, что таблицы находятся в отношении 1:М или 1:1. Для таблиц, находящихся в этих отношениях, в схеме данных можно установить параметры поддержания связной целостности данных.
Поддержка связной целостности данных означает, что Access при корректировке базы данных обеспечивает для связанных таблиц контроль за соблюнием следующих условий:
1) в подчиненную таблицу не может быть добавлена запись со значением ключа связи, не существующим в главной таблице;
2) в главной таблице нельзя удалить запись, если не удалены связанные с ней записи в подчиненной таблице;
3) изменение значений ключа связи в записи главной таблицы невозможно, если в подчиненной таблице имеются записи, связанные с ней.
Если для связи обеспечивается поддержание целостности, то можно задать режимы, перечисленные ниже.
1.Каскадное обновление связанных полей обеспечивает при изменении значения ключа связи в записи главной таблицы автоматическое изменение значения в связанных полях в подчиненных записях.
2. Каскадное удаление связанных записей обеспечивает при удалении записи из главной таблицы автоматическое удаление всех связанных записей в подчиненной таблице. Каскадное удаление подчиненных записей выполняется на всех уровнях, если этот режим задан на каждом уровне.
Упражнение 6. Включение таблиц в схему данных и определение связей между ними
Рассмотрим процесс создания схемы данных, соответствующей логической структуре базы данных.
1. Откройте окно Схема данных . Для этого при активном окне базы данных нажмите кнопку Схема данных на панели инструментов.
2. В диалоговом окне Добавление таблицы (рис. 3.1) выберите вкладку Таблицы и, нажимая кнопку Добавить, разместите в окне Схема данных все ранее созданные таблицы базы данных, список которых отображен в диалоговом окне.
Рис.3.1 Добавление таблицы в схему данных |
![]() |
3. Нажмите кнопку Закрыть. В результате в окне Схема данных будут представлены все таблицы созданной базы данных со списками своих полей.
4. Установите связь между таблицами ГРУППА и СТУДЕНТ по простому ключу НГ. Для этого в окне Схемы данных установите курсор мыши на ключевом поле НГ главной таблицы ГРУППА и перетащите это поле на поле НГ в подчиненной таблице СТУДЕНТ.
5. В открывшемся окне (рис. 3.2) Изменение связей в строке Тип отношения установится один-ко-многим . Отметьте доступный для этого типа отношений параметр Обеспечение целостности данных. Если таблицы ГРУППА и СТУДЕНТ пустые или ранее были заполнены данными, отвечающими требованиям целостности, между таблицами будет установлена связь, один ко многим . В противном случае появится сообщение о невозможности установить связь с проверкой целостности.
Рис.3.2 Окно выбора параметров связи |
![]() |
6. Установите флажки каскадное обновление связанных полей и каскадное удаление связанных записей , тогда будет обеспечена автоматическая корректировка данных для сохранения целостности во взаимосвязанных таблицах.
7. Установите связи по простому ключу для других пар таблиц: КАФЕДРА ->ПРЕПОДАВАТЕЛЬ (ключ ККАФ), ПРЕДМЕТ-> ИЗУЧЕНИЕ (ключ КП), ПРЕПОДАВАТЕЛЬ -> ИЗУЧЕНИЕ (ключ ТАБН), ГРУППА -> ИЗУЧЕНИЕ (ключ НГ).
8. Установите связь по составному ключу НГ+НС между таблицами
СТУДЕНТ -> УСПЕВАЕМОСТЬ. Для этого в главной таблице СТУДЕНТ
выделите оба этих поля, удерживая клавишу
9. В окне Изменение связи для поля НС главной таблицы Таблица | запросвыберите соответствующее поле подчиненной таблицы Связанная таблица | запрос. В этом же окне установите режим Обеспечение целостности данных и другие параметры связи.
10. Аналогично по составному ключу НГ + КП + ТАБН + ВИДЗ установите связи между парой таблиц ИЗУЧЕНИЕ -> УСПЕВАЕМОСТЬ.
11. Разместите таблицы в окне схемы данных в соответствии с их относительной подчиненностью, перемещая и изменяя их размеры, как показано на рис. 3.3.
Рис.3.3 Схема данных базы данных |
![]() |
Проверим, как влияют установленные ранее параметры поддержания целостности при внесении изменений в таблицы ГРУППА, СТУДЕНТ, связанные одно-многозначными отношениями.
1. Откройте таблицы ГРУППА и СТУДЕНТ в режиме таблицы.
2. Измените значение ключевого поля НГ (номер группы) в записи главной таблицы ГРУППА, которая имеет подчиненные записи. Для завершения режима редактирования перейдите к другой записи. Убедитесь, что в записях подчиненной таблицы СТУДЕНТ автоматически изменилось значение поля НГ для студентов, обучающихся в этой группе. Происходит изменение, поскольку был установлен параметр, задающий каскадное обновление связанных полей. Открывая другие подчиненные таблицы, убедитесь, что каскадное обновление распространяется также на подчиненные таблицы следующих уровней: ИЗУЧЕНИЕ и УСПЕВАЕМОСТЬ.
3. Подготовьте новую запись в подчиненной таблице СТУДЕНТ со значением ключа связи НГ, не представленным в главной таблице ГРУППА. Убедитесь, что включить такую запись в подчиненную таблицу невозможно.
4. В главной таблице ГРУППА выделите запись, у которой есть подчиненные, и выполните команду Правка | Удалить. Убедитесь, что вместе с удалением записи в главной таблице ГРУППА удаляются все подчиненные записи, так как был установлен параметр каскадного удаления связанных записей.
Если для одно-многозначных связей, установленных в схеме данных, не задан параметр обеспечения целостности данных, то пользователь при добавлении, удалении записей и изменении значений ключевых полей должен сам отслеживать непротиворечивость данных и целостность связей.
Если установлен только флажок Обеспечение целостности данных, то Access разрешает пользователю:
1. добавить запись в таблицу, которая не подчинена никакой другой таблице в схеме данных (находится на верхнем уровне иерархии);
2. добавить запись в подчиненную таблицу, когда в главной имеется запись с вводимым значением ключа связи;
3. удалить запись в таблице, если нет связанных с ней записей в подчиненных таблицах.
Если наряду с флажком Обеспечение целостности данных установлен флажок каскадное удаление связанных записей , то пользователь может удалить запись. При этом автоматически будут удалены и все подчиненные записи.
Если наряду с параметром Обеспечение целостности данных задан параметр каскадное обновление связанных полей, то пользователь может изменять значение ключевого поля. При этом автоматически будут обновлены значения внешних ключей и во всех связанных подчиненных записях.
Таким образом, при загрузке таблиц базы данных при установленных параметрах целостности система отслеживает корректность связей для вводимых записей.
В Access 2000 имеется возможность при просмотре таблицы отображать записи подчиненных таблиц. Поэтому пользователь может контролировать корректность связей в отображаемой цепочке таблиц при добавлении, удалении и корректировке записей.