Что такое каскадное обновление связанных полей
Перейти к содержимому

Что такое каскадное обновление связанных полей

  • автор:

Что такое каскадное обновление связанных полей

Про связанные таблицы я уже упоминал неоднократно, но как создать эти самые связи — пока еще не сказал. Теперь настало время посвятить Вас в таинство связывания таблиц, присущее всем базам данных.

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

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

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

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

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

  • Обеспечение условия целостности данных — флаг служит для защиты от случаев, когда при удалении записей из одной таблицы, связанные с ними данные в других таблицах останутся без изменения. Для создания связи с таким условием целостности необходимо, чтобы поле основной таблицы было ключевым (см. «Шаг 5 — Ключевые и уникальные поля») и оба поля имели одинаковый тип (про типы полей говорилось в «Шаг 3 — Свойства и типы полей»).
  • Каскадное обновление связанных полей — установка этого флага обеспечит одновременное обновление данных во всех подчиненных таблицах, при их добавлении или редактировании в главной таблице. Например, если будет изменен код книги в таблице Книги, то это приведет к автоматическому изменению этого значения в таблицах Цитаты и КнигАвторы.
  • Каскадное удаление связанных полей — это свойство действует аналогично каскадному обновлению, но приводит к удалению данных из всех подчиненных таблиц, при их удалении в главной таблице.

Нажатие на кнопку Объединение позволит более точно установить параметры объединения записей, выбором одного из трех возможных вариантов. Тексты каждого из переключателей — говорят сами за себя, поэтому внимательного прочтения содержимого окна будет вполне достаточно для выбора нужного положения.

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

Каскадные обновления и удаления

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

Если в процессе создании связи установить флажок каскадное обновление связанных полей, то при любом изменении значения первичного ключа записи в главной таблице Microsoft Access автоматически обновит значение соответствующего поля во всех связанных записях. Например, при изменении ИД клиента в таблице «Клиенты» поле «Клиент» в таблице «Заказы» автоматически обновится для всех заказов этого клиента, чтобы сохранить связь. Microsoft Access выполнит каскадное обновление без вывода дополнительных сообщений.

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

Если в процессе создания связи установить флажок каскадное удаление связанных записей, то при удалении любой записи из главной таблицы Microsoft Access автоматически удалит связанные записи и в связанной таблице. Например, если удалить запись клиента из таблицы «Клиенты», то все заказы данного клиента будут автоматически удалены из таблицы «Заказы» (включая записи таблицы «Сведения о заказе», связанные с записями таблицы «Заказы»). При удалении записей из формы или таблицы с установленным флажком каскадное удаление связанных записей Microsoft Access предупреждает, что связанные записи также будут удалены. Однако при удалении записей с помощью запроса на удаление Microsoft Access автоматически удалит записи из связанных таблиц без вывода предупреждения.

Типы соединений

Ниже перечислены существующие типы соединений.

Вариант 1 — внутреннее соединение. Внутреннее соединение — это соединение, при котором записи из двух таблиц объединяются в результатах запроса лишь в том случае, если значения связанных полей соответствуют заданному условию. Внутреннее соединение является типом соединения по умолчанию, в результате в запросе происходит выборка лишь тех записей, для которых значения связанных полей совпадают.

Вариант 2 — левое внешнее соединение. Левое внешнее соединение — это соединение, при котором все записи таблицы по левую сторону от оператора LEFT JOIN (левое объединение) инструкции SQL попадают в результаты запроса даже в том случае, если в связанном поле из правой таблицы отсутствуют соответствующие значения.

Вариант 3 — правое внешнее соединение. Правое внешнее соединение — это соединение, при котором все записи таблицы по правую сторону от оператора RIGHT JOIN (правое объединение) инструкции SQL попадают в результаты запроса даже в том случае, если в связанном поле из левой таблицы отсутствуют соответствующие значения.

К базовым понятиями модели БД «сущность — связь» относятся: сущности, связи между ними и их атрибуты (свойства).

Сущность — любой конкретный или абстрактный объект в рассматриваемой предметной области. Сущности — это базовые типы информации, которые хранятся в БД (в реляционной БД каждой сущности назначается таблица). К сущностям могут относиться: студенты, клиенты, подразделения и т.д. Экземпляр сущности и тип сущности — это разные понятия. Понятие тип сущности относится к набору однородных личностей, предметов или событий, выступающих как целое (например, студент, клиент и т.д.). Экземпляр сущности относится, например, к конкретной личности в наборе. Типом сущности может быть студент, а экземпляром — Петров, Сидоров и т. д.

Атрибут — это свойство сущности в предметной области. Его наименование должно быть уникальным для конкретного типа сущности. Например, для сущности студент могут быть использованы следующие атрибуты: фамилия, имя, отчество, дата и место рождения, паспортные данные и т.д. В реляционной БД атрибуты хранятся в полях таблиц.

Связь — взаимосвязь между сущностями в предметной области. Связи представляют собой соединения между частями БД (в реляционной БД — это соединение между записями таблиц).

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

Задача о предметной области

Рассмотрим предметную область: Деканат (Успеваемость студентов)

В БД «Деканат» должны храниться данные о студентах, группах студентов, об оценках студентов по различным дисциплинам, о преподавателях, о стипендиях и т.д. Ограничимся данными о студентах, группах студентов и об оценках студентов по различным дисциплинам. Определим сущности, атрибуты сущностей и основные требования к функциям БД с ограниченными данными.

Основными предметно-значимыми сущностями БД «Деканат» являются: Студенты, Группы студентов, Дисциплины, Успеваемость.

Основные предметно-значимые атрибуты сущностей:

-студенты — фамилия, имя, отчество, пол, дата и место рождения, группа студентов;

-группы студентов — название, курс, семестр;

-дисциплины — название, количество часов

— успеваемость — оценка, вид контроля.

Основные требования к функциям БД:

-выбрать успеваемость студента по дисциплинам с указанием общего количества часов и вида контроля;

-выбрать успеваемость студентов по группам и дисциплинам;

-выбрать дисциплины, изучаемые группой студентов на определенном курсе или определенном семестре.

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

Логическая связь между сущностями Группы — Студенты определена как один — ко — многим исходя из того, что в группе имеется много студентов, а каждый студент входит в состав одной группе. Логическая связь между сущностями Дисциплины — Успеваемость определена как один — ко — многим, потому что по каждой дисциплине может быть поставлено несколько оценок различным студентам.

Создание, изменение и удаление отношения

Отношение в Access позволяет объединить данные из двух разных таблиц. Каждое отношение состоит из двух полей (по одному в каждой таблице) со связанными данными. Например, таблицы «Товары» и «Сведения о заказах» могут содержать поле «КодТовара». Каждая запись в таблице «Сведения о заказах» содержит значение поля «КодТовара», которому соответствует запись в таблице «Товары» с тем же значением в данном поле.

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

Перед началом работы с отношениями изучите основные понятия. Дополнительные сведения о см. в статьях Руководство по связям между таблицами и Начало работы со связями между таблицами.

В этой статье

  • Обзор
  • Создание отношения между таблицами с помощью окна отношений
  • Создание отношения между таблицами с помощью панели списка полей
  • Изменение отношения
  • Обеспечение целостности данных
  • Удаление отношения между таблицами

Обзор

Чтобы создать отношение в базе данных Access, можно воспользоваться одним из указанных ниже методов.

  • В окне «Схема данных» добавьте таблицы, которые требуется связать, а затем перетащите нужное поле из одной таблицы в другую.
  • Перетащите поле в таблицу из области Список полей.

При создании отношения между таблицами общие поля могут называться по-разному, однако часто требуется, чтобы эти имена совпадали. Очевидно, что общие поля должны иметь одинаковый тип данных. Однако если поле первичного ключа имеет тип «Счетчик», поле внешнего ключа также может быть числовым, если свойство Размер поля (FieldSize) обоих полей совпадает. Например, можно сопоставить поля с типами «Счетчик» и «Числовой», если свойство Размер поля обоих полей имеет значение «Длинное целое». Если оба общих поля являются числовыми, у них должно совпадать значение свойства Размер поля.

Создание отношения между таблицами с помощью окна отношений

  1. На вкладке Работа с базами данных в группе Отношения выберите элемент Схема данных.
  2. На вкладке Конструктор связей в группе Связи щелкните Добавить таблицы.
  3. Выберите одну или несколько таблиц или запросов и нажмите кнопку Добавить. После добавления таблиц и запросов на вкладку «Схема данных» нажмите кнопку Закрыть.
  4. Перетащите поле (как правило, поле первичного ключа) из одной таблицы на общее поле (поле внешнего ключа) в другой таблице. Чтобы перетащить сразу несколько полей, нажмите и удерживайте клавишу CTRL, нажмите каждое поле и перетащите выделенные поля.

Диалоговое окно

Откроется диалоговое окно Изменение связей.

  • Создание связи «один-к-одному» Оба общих поля (как правило, поля первичного ключа и внешнего ключа) должны иметь уникальный индекс. Это означает, что свойство Индексированное этих полей должно иметь значение Да(Совпадения не допускаются). Если оба поля имеют уникальный индекс, в Access будет создано отношение «один-к-одному».
  • Создание отношения «один-ко-многим». Поле на стороне «один» (как правило, первичный ключ) отношения должно иметь уникальный индекс. Это значит, что свойство Индексированное поле должно иметь значение Да(Совпадения не допускаются). Поле на стороне «многие» не должно иметь уникального индекса. Это поле может быть индексированным, но для него должны допускаться повторы. Это означает, что свойство Индексированное поле должно иметь значение Нет или Да (Допускаются совпадения). Когда у одного поля однозначный индекс, а у другого — нет, в приложении Access создается отношение «один-ко-многим».

Создание отношения между таблицами с помощью панели списка полей

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

При перетаскивании поля из «другой» (несвязанной) таблицы и выполнении инструкций мастера подстановок между таблицей из области Список полей и таблицей, в которую перетаскивается поле, автоматически создается новое отношение «один-ко-многим». Это отношение, созданное Access, не обеспечивает целостность данных по умолчанию. Чтобы обеспечить целостность данных, нужно изменить отношение. Дополнительные сведения см. в разделе Изменение отношения.

Открытие таблицы в режиме таблицы

  • Дважды щелкните таблицу в области навигации.

Открытие области «Список полей»

  • Нажмите клавиши ALT+F8. Будет отображена область Список полей.

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

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

Добавление поля и создание связи из области «Список полей»

  1. Открыв таблицу в режиме таблицы, нажмите клавиши ALT+F8. Будет отображена область Список полей.
  2. Чтобы отобразить список полей в таблице, в группе Доступные поля в другой таблице щелкните знак плюс (+) рядом с именем таблицы.
  3. Перетащите нужное поле из области Список полей в таблицу, открытую в режиме таблицы.
  4. Когда появится линия вставки, поместите поле в выбранное место. Появится окно мастера подстановок.
  5. Следуйте инструкциям мастера подстановок. Поле будет отображено в таблице в режиме таблицы.

При перетаскивании поля из «другой» (несвязанной) таблицы и выполнении инструкций мастера подстановок между таблицей из области Список полей и таблицей, в которую было перетаскивается поле, автоматически создается новое отношение «один-ко-многим». Это отношение, созданное Access, не обеспечивает целостность данных по умолчанию. Чтобы обеспечить целостность данных, нужно изменить отношение. Дополнительные сведения см. в разделе Изменение отношения.

Изменение отношения

Чтобы изменить отношение, выберите его в окне «Схема данных» и внесите нужные изменения.

  1. Установите указатель на линию связи и щелкните линию, чтобы выделить ее. При выделении линия связи становится толще.
  2. Дважды щелкните выделенную линию связи ИЛИ На вкладке Конструктор связей в группе Сервис щелкните Изменить связи.

Откроется диалоговое окно Изменение связей.

Открытие диалогового окна «Изменение связей»

Диалоговое окно

  1. На вкладке Работа с базами данных в группе Отношения выберите элемент Схема данных.
  2. На вкладке Конструктор связей в группе Связи щелкните Все связи. Будут отображены все таблицы с отношениями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».
  3. Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.
  4. Дважды щелкните линию связи. ИЛИ На вкладке Конструктор связей в группе Сервис щелкните Изменить связи. Откроется диалоговое окно Изменение связей.

Указание типа соединения

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

С помощью запроса к нескольким таблицам можно комбинировать данные из них путем сопоставления значений в общих полях. Операция сопоставления и комбинирования называется объединением. Например, требуется отобразить заказы клиентов. Для этого создается запрос, объединяющий таблицы «Клиенты» и «Заказы» по полю «Код клиента». Результаты запроса содержат сведения о клиенте, а также другие сведения только для строк с найденным соответствующим значением.

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

Предположим, что требуется включить в результаты всех клиентов — даже тех, которые еще не сделали ни одного заказа. Для этого нужно изменить тип объединения с внутреннего на так называемое левое внешнее соединение. При использовании левого внешнего соединения возвращаются все строки таблицы на левой стороне отношения и только сопоставленные строки на правой. При использовании правого внешнего соединения возвращаются все строки на правой стороне отношения и только сопоставленные — на левой.

Примечание: В этом случае термины «слева» и «справа» относятся к положению таблиц в диалоговом окне Изменение связей, а не в окне «Схема данных».

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

Указание типа соединения

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

  1. В диалоговом окне Изменение связей нажмите кнопку Тип соединения. Откроется диалоговое окно Параметры соединения.

В таблице ниже, составленной на основании таблиц «Клиенты» и «Заказы», приведены три варианта, отображаемые в окне Параметры объединения, указан используемый в них тип объединения, а также то, какие именно строки (все или только сопоставленные) возвращаются для каждой из таблиц.

1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают.

2. Объединение ВСЕХ записей из таблицы «Клиенты» и только тех записей из таблицы «Заказы», в которых связанные поля совпадают.

Левое внешнее соединение

3. Объединение ВСЕХ записей из таблицы «Заказы» и только тех записей из таблицы «Клиенты», в которых связанные поля совпадают.

Правое внешнее соединение

При выборе варианта 2 или 3 на линии связи будет отображена стрелка, указывающая на ту сторону связи, в которой отображаются только сопоставленные строки.

Внесение изменений в окне «Параметры объединения»

  1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
  2. На вкладке Конструктор связей в группе Связи щелкните Все связи.

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

Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».

  • Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.
  • Дважды щелкните линию связи. Откроется диалоговое окно Изменение связей.
  • Нажмите кнопку Тип объединения.
  • В диалоговом окне Свойства соединения выберите параметр и нажмите кнопку ОК.

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

    Целью обеспечения целостности данных является предотвращение появления непарных записей, ссылающихся на несуществующие записи. Обеспечение целостности данных включается для конкретного отношения между таблицами. В результате Access отменяет для этого отношения все действия, которые могут нарушить целостность данных. Это означает, что будет отменено как обновление, изменяющее целевой объект ссылки, так и удаление такого целевого объекта. Сведения о том, как настроить в Access распространение операций обновления и удаления таким образом, чтобы в результате изменялись и все связанные строки, см. в разделе Задание каскадных параметров.

    Включение и отключение обеспечения целостности данных

    1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
    2. На вкладке Конструктор связей в группе Связи щелкните Все связи.

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

    • Не допускается ввод в поле внешнего ключа связанной таблицы значений, отсутствующих в поле первичного ключа главной таблицы, поскольку это приводит к появлению потерянных записей.
    • Не допускается удаление записи из главной таблицы, если в связанной таблице существуют связанные с ней записи. Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику. Однако можно удалить главную запись и все связанные записи одним действием, установив флажок Каскадное удаление связанных записей.
    • Не допускается изменение значения первичного ключа в главной таблице, если это приведет к появлению потерянных записей. Например, нельзя изменить номер заказа в таблице «Заказы», если в таблице «Сведения о заказах» имеются строки, относящиеся к этому заказу. Однако можно обновить главную запись и все связанные записи одним действием, установив флажок «Каскадное обновление связанных полей».

    • Общее поле главной таблицы должно быть первичным ключом или иметь уникальный индекс.
    • Общие поля должны иметь одинаковый тип данных. Единственное исключение — поле типа «Счетчик» можно связать с полем типа «Числовой», если его свойство Размер поля имеет значение Длинное целое.
    • Обе таблицы существуют в одной базе данных Access. Обеспечение целостности данных нельзя включить для присоединенных таблиц. Однако если исходные таблицы имеют формат Access, можно открыть базу данных, в которой они хранятся, и включить обеспечение целостности данных в этой базе.

    Задание каскадных параметров

    Иногда возникает ситуация, в которой требуется изменить значение только на стороне «один» отношения. В этом случае необходимо, чтобы Access автоматически обновил все затронутые строки в ходе выполнения одной операции. Тогда обновление будет полностью завершено, а база данных не будет находиться в несогласованном состоянии, когда некоторые строки обновлены, а другие — нет. Этой проблемы можно избежать с помощью параметра Access «Каскадное обновление связанных полей». Если при включении обеспечения целостности данных был включен параметр «Каскадное обновление связанных полей», то при последующем обновлении первичного ключа автоматически будут обновлены все связанные с ним поля.

    Также может потребоваться удаление строки и всех связанных с ней записей — например, записи в таблице «Поставщики» и всех связанных с этим поставщиком заказов. Для этого в Access предназначен параметр «Каскадное удаление связанных записей». Если включить обеспечение целостности данных и установить флажок Каскадное удаление связанных записей, при удалении записи, содержащей первичный ключ, будут автоматически удалены все записи, связанные с этим первичным ключом.

    Включение и отключение каскадного обновления и каскадного удаления

    1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
    2. На вкладке Конструктор связей в группе Связи щелкните Все связи.

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

    Удаление отношения между таблицами

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

    Чтобы удалить отношение между таблицами, нужно удалить линию связи в окне «Схема данных». Установите указатель мыши на линию связи и щелкните ее. При выделении линия связи становится толще. Выделив линию связи, нажмите клавишу DEL.

    1. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
    2. На вкладке Конструктор связей в группе Связи щелкните Все связи.

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

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

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

    Простейшей и наиболее редкой формой связи между таблицами является связь «один к одному», при которой для каждой записи в одной таблице суще­ствует одна связанная с ней запись в другой таблице. Приме­ром такой ситуации может служить связь ЯВЛЯЮТСЯ _РОДИТЕЛЯМИ между таблицами «Сведения о студентах» и «Сведения о родителях».

    Гораздо чаще встречается связь «один ко многим», при которой для каж­дой записи в одной таблице существует одна, несколько или ни одной записи в другой таблице. Примером такой ситуации может служить связь ГОДОВЫЕ_ОЦЕНКИ_УЧЕНИКА между таблицами «Сведения о студентах» и «Годовая успеваемость группы».

    Нередко приходится иметь дело также со связью «многие ко многим», при которой отсутствуют ограничения на множества пар записей, принадлежа­щих связи. Такая связь в Access не используется. Ее необходимо представить в виде двух связей «один ко многим».

    При установке связи одна из таблиц является главной, а другая — подчи­ненной.

    Ясно, что заполняя таблицу « Сведения о студентах», мы можем указать в ней фамилии студентов, для которых в таблице «Сведения о родителях» пока нет записей. Обратное неверно: не имеет смысла включать в таблицу «Сведения о родителях» данные о родителях того студента, для которого нет записи и табли­це «Сведения о студентах». Поэтому в паре Сведения о студентах — Сведения о родителях первая таблица является главной, а вторая — подчиненной.

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

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

    Для каждой связи в Access обязательно должен быть выбран один из па­раметров объединения, который задается в окне Параметры объединения.

    Если пользователь не укажет параметр объединения, то программа авто­матически установит один из параметров. В зависимости от того, какой прин­цип объединения выбран, меняется объем выводимых из таблиц данных при их совместном использовании.

    Помимо определения параметра объединения, пользователь должен поза­ботиться о дополнительных средствах контроля связанных данных, вводимых в разные таблицы.

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

    Целостность данных означает:

    ­ в связанное поле подчиненной таблицы можно вводить только те значе­ния, которые имеются в связанном поле главной таблицы;

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

    Включив механизм поддержки целостности данных, пользователь может потребовать, чтобы при модификации данных система запускала следующие процессы:

    ­ каскадное обновление связанных полей;

    ­ каскадное удаление связанных записей.

    Если при определении связи установить флажок Каскадное обновление связанных полей, любое изменение значения в ключевом поле главной табли­цы приведет к автоматическому обновлению соответствующих значений во всех связанных записях. Например, при изменении кода ученика в таблице Сведения об учениках будет автоматически обновлено поле Код ученика во всех записях таблицы Годовая успеваемость класса, поэтому целостность данных не будет нарушена. Microsoft Access выполнит каскадное обновление без ввода предупреждающих сообщений.

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

    Установить связь между таблицами «Сведения о студентах» и «Сведения о родителях».

    1) Из меню Сервис выберем команду Схема данных. На экране появится окно Схема данных, в котором можно создавать, просматривать или удалять связи между таблицами базы данных. При работе с базой дан­ных мы обращаемся к этой команде первый раз, поэтому окно должно быть пустым. Если это не так, то предварительно очистим его, выбрав команду О чистить макет из меню Правка или нажав кнопку Очистить макет на панели инструментов;

    2) Чтобы добавить таблицы в окно Схема данных, выберем опцию Д обавить таблицу в меню Связи или нажмем кнопку Добавить на панели инструментов;

    3) Укажем системе те таблицы, между которыми устанавливаем связь. В списке таблиц, находящемся на вкладке Таблицы окна Добавление таблицы, маркируем таблицу Сведения о студентах и нажмем кноп­ку Д обавить. Проделав ту же операцию с таблицей Сведения о роди­телях, щелкнем на кнопке З акрыть;

    Рис. 21 . Окно добавление таблицы.

    4) Переместим используемое для связи поле (в данном случае – Код студента) таблицы « Сведения о студентах» к соответствующему полю (Код студента) «Сведения о родителях» с помощью мыши;

    5) На экране появится диалоговое окно Связи, в котором будет предло­жена связь между таблицами «Сведения о студентах» и «Сведения о родителях» через поле Код студента;

    6) Теперь путем установления типа отношений между таблицами опреде­лим параметры связи. Щелкнем на кнопке Объединение и в раскрывшемся окне выберем параметр объединения. Затем активизируем оп­цию Обеспечение целостности данных;

    7) После нажатия кнопки С оздать в окне Связи созданная связь между таблицами «Сведения о студентах» и «Сведения о родителях» отобра­жается графически.

    Самостоятельная работа № 1

    1) Свяжите таблицы «Сведения о студентах» и «Годовая успеваемость группы» по полю Код студента.

    2) Свяжите таблицы «Сведения о студентах» и «Сведения о родителях» по полю Код студента.

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *