Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Access_03_студентам.doc
Скачиваний:
6
Добавлен:
09.11.2018
Размер:
3.75 Mб
Скачать

2.6. Связывание таблиц

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

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

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

Установить связь между таблицами позволяет команда "Схема данных…" меню "Сервис". На экране появится окно, в котором можно определить и просмотреть связи между таблицами базы данных.

Построим схему данных для учебной базы данных "Успеваемость студентов". Для этого надо выполнить команду "Сервис"-"Схема данных…" и в первом диалоговом окне (Рис. 1) с помощью кнопки "Добавить" выбрать все три таблицы базы данных (Рис. 2) и закрыть окно.

Рис. 1

Теперь надо связать таблицы. Для этого надо переместить используемое для связи поле одной таблицы (например, поле "№ зачетки" в отношении "Студенты") к соответствующему полю другой таблицы (поле "№ зачетки" в отношении "Успеваемость") с помощью мыши. При этом указатель мыши примет вид линейки.

Рис. 2 Рис. 3

На экране появится диалоговое окно "Связи" (Рис. 3), в котором будет предложена связь между таблицами (между таблицей "Студенты" и таблицей "Успеваемость" через поле "№ зачетки").

Теперь надо определить целостность данных.

Что означает целостность данных?

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

Уникальный индекс – это индекс, определенный для поля с заданным для свойства "Индексированное поле" значением "Да (Совпадения не допускаются)". При этом ввод в индексированное поле повторяющихся значений становится невозможным. Для ключевых полей уникальный индекс создается автоматически.

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

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

  • Связанные поля имеют один тип данных. Здесь существует два исключения. Поле "Счетчика" может быть связано с числовым полем, если в последнем в свойстве "Размер поля" указано значение "Длинное целое". А также поле "Счетчика" можно связать с числовым полем, если и в обеих ячейках свойства "Размер поля" задано значение "Код репликации".

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

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

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

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

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

Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок "Обеспечение целостности данных". Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет.

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

Примечания:

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

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

Тип создаваемой связи зависит от полей, для которых определяется связь:

  • Отношение "один-к-одному" создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы.

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

  • Отношение "один-ко-многим" создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс.

Отношение "один-ко-многим" – это связь между двумя таблицами, при которой:

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

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

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

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

После установления всех параметров связи "Схема данных…" для учебной базы данных будет выглядеть так (Рис. 4).

Рис. 4

На линиях связи устанавливаются специальные символы "1" или "", обозначающие тип отношения. Так в таблице "Студенты" ключевое поле "№ зачетки" не допускает совпадений значений, поэтому около него стоит символ "1", а в таблице "Успеваемость" это же поле допускает совпадения, около него стоит символ "". Значит, связь между таблицами имеет тип "один-ко-многим". Такой тип отношений был определен Access и при установлении самой связи при формировании "Схемы данных…".

При закрытии окна "Схема данных…" Access запросит сохранение схемы данных.