Руководство по связям между таблицами

Руководство по связям между таблицами

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

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

В этой статье

Введение

Типы связей между таблицами

Зачем создавать связи между таблицами?

Понятие о целостности данных

Просмотр связей между таблицами

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

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

Изменение связи между таблицами

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

Введение

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

Форма "Заказы", одновременно отображающая связанные сведения из пяти таблиц

1. Эта форма содержит данные из таблицы клиентов,

2. заказов,

3. товаров

4. и сведений о заказах.

Имя клиента в поле Плательщик получено из таблицы "Клиенты", значения кода заказа и даты заказа — из таблицы "Заказы", наименование товара — из таблицы "Товары", а цена и количество — из таблицы "Заказано". Чтобы можно было передать данные в форму, эти таблицы связаны друг с другом несколькими способами.

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

"Код сотрудника" используется в качестве первичного ключа в таблице "Сотрудники" и как внешний ключ в таблице "Заказы".

1. Поле "Код сотрудника" отображается в двух таблицах: как первичный ключ...

2. и как внешний ключ.

К началу страницы

Типы связей между таблицами

Существует три типа связей для таблицы в Access.

  • Связь "один-ко-многим"

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

    Чтобы создать отношение "один-ко-многим" в структуре базы данных, добавьте первичный ключ на стороне "один" в таблицу на стороне "многие" в виде дополнительного поля или полей. В данном примере необходимо добавить новое поле — поле "Код" из таблицы "Клиенты" — в таблицу "Заказы" и назвать его "Код клиента". После этого Access сможет использовать номер "Код клиента" из таблицы "Заказы" для поиска клиента каждого заказа.

  • Связь "многие-ко-многим"

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

    Чтобы представить связь "многие-ко-многим", нужно создать третью (связующую) таблицу, в которой она разбивается на две связи "один-ко-многим". Первичные ключи двух таблиц вставляются в третью таблицу. В результате в третьей таблице сохраняются все экземпляры связи. Например, таблицы "Заказы" и "Продукты" имеют связь "многие-ко-многим", определяемую путем создания двух связей "один-ко-многим" в таблице "Заказано". В одном заказе может быть много продуктов, и каждый продукт может быть указан во многих заказах.

  • Связь "один-к-одному"

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

К началу страницы

Зачем создавать связи между таблицами?

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

  • Связи между таблицами предоставляют сведения для структурирования запросов

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

  • Связи между таблицами предоставляют сведения для структурирования форм и отчетов

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

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

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

К началу страницы

Понятие о целостности данных

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

Предположим, между таблицами "Грузоотправители" и "Заказы" существует связь "один-ко-многим", и нужно удалить грузоотправителя. Если у грузоотправителя, которого нужно удалить, есть заказы в таблице "Заказы, они станут потерянными записями после удаления записи грузоотправителя. В таблице "Заказы" останется код грузоотправителя, но он будет недействителен, поскольку запись, на которую он ссылается, уже не существует.

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

Целостность данных обеспечивается путем ее использования при создании межтабличной связи (см. пошаговое руководство Обеспечение целостности данных). Если однажды обеспечить целостность данных, Access будет отклонять обновления, нарушающие целостность данных для этой межтабличной связи. Это значит, что Access будет отклонять как обновление целевого объекта ссылки, так и его удаление. Но может понадобиться изменить первичный ключ для грузоотправителя, имеющего заказы в таблице "Заказы". В таких случаях нужно, чтобы Access автоматически обновил все задействованные строки за одну операцию. Так Access гарантирует, что обновление полностью завершено, и база данных не осталась в несогласованном состоянии (одни строки обновлены, а другие — нет). Для этого в Access есть параметр Каскадное обновление связанных полей. Если при обеспечении целостности данных выбрать параметр Каскадное удаление связанных полей, а затем обновить первичный ключ, Access автоматически обновит все поля, ссылающиеся на этот первичный ключ.

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

К началу страницы

Просмотр связей между таблицами

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

Вызов окна "Схема данных"

  1. На вкладке Файл выберите команду Открыть.

  2. Выбор и открытые базы данных.

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

    Если в базе данных есть связи, будет отображено окно "Схема данных". Если в базе данных нет связей или это окно открывается впервые, будет отображено диалоговое окно Добавление таблицы. Нажмите кнопку Закрыть, чтобы закрыть это диалоговое окно.

  4. На вкладке Конструктор в группе Связи щелкните элемент Все связи.

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

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

Когда открыто окно "Схема данных", на ленте доступны указанные ниже команды.

На вкладке Конструктор в группе Сервис

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

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

  • Отчет о связях   . Создает отчет, отображающий таблицы и связи базы данных. В отчете отображаются только таблицы и связи, не скрытые в окне "Схема данных".

На вкладке Конструктор в группе Отношения

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

  • Скрыть таблицу   . Скрывает выбранную таблицу в окне "Схема данных".

  • Прямые связи   . Отображает все связи и связанные таблицы для выбранной таблицы в окне "Схема данных", если они еще не отображены.

  • Все связи   . Отображает все связи и связанные таблицы базы данных в окне "Схема данных". Имейте в виду, что скрытые таблицы (таблицы, для которых установлен флажок Скрытый в диалоговом окне Свойства) и их связи не будут отображены, если не установлен флажок "Показывать скрытые объекты" в диалоговом окне "Параметры переходов".

  • Закрыть   . Закрывает окно "Схема данных". Если в макет окна "Схема данных" были внесены какие-либо изменения, будет предложено сохранить их.

К началу страницы

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

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

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

  1. На вкладке Файл выберите команду Открыть.

  2. Выбор и открытые базы данных.

  3. На вкладке Работа с базами данных в группе Отношения щелкните элемент Схема данных.

  4. Если ни одна связь еще не определена, автоматически откроется диалоговое окно Добавление таблицы. Если это окно не открылось, на вкладке Конструктор в группе Связи нажмите кнопку Отобразить таблицу.

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

  5. Выберите одну или несколько таблиц или запросов и нажмите кнопку Добавить. По завершении добавления таблиц и запросов в окно "Схема данных" нажмите кнопку Закрыть.

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

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

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

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

  8. Нажмите кнопку Создать.

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

    Примечания : 

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

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

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

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

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

  1. На вкладке Файл нажмите кнопку Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

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

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

  • Нажмите клавиши ALT+F8.

    Будет отображена область Список полей.

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

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

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

  1. В области Список полей в группе Доступные поля в другой таблице щелкните знак плюс (+) рядом с именем таблицы.

  2. Перетащите нужное поле из области Список полей в таблицу, открытую в режиме таблицы.

  3. Когда появится линия вставки, вставьте поле в нужное место.

    Появится окно мастера подстановок.

  4. Следуйте инструкциям мастера подстановок.

    Поле будет отображено в таблице в режиме таблицы.

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

К началу страницы

Удаление связи между таблицами

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

  1. На вкладке Работа с базами данных в группе Связи щелкните элемент Связи.

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

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы с отношениями, а также соответствующие линии связи.

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

  4. Нажмите клавишу DEL

    -или-

Щелкните правой кнопкой мыши и выберите команду Удалить.

  • При этом в Access может появиться сообщение Подтвердите удаление выделенной связи. В этом случае нажмите кнопку Да.

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

К началу страницы

Изменение связи между таблицами

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

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

  1. На вкладке Работа с базами данных в группе Связи щелкните элемент Связи.

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

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Будут отображены все таблицы с отношениями, а также соответствующие линии связи.

  3. Щелкните линию связи, которую требуется изменить. Выделенная линия связи станет жирной.

  4. Дважды щелкните линию связи.

  5. Внесите изменения и нажмите кнопку ОК.

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

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

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

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

Для каждой связи можно задать тип объединения. Тип объединения сообщает Access, какие записи включить в результат запроса. Например, снова рассмотрим запрос, объединяющий таблицы "Клиенты" и "Заказы" по общим полям, представляющим поле "Код клиента". При использовании типа соединения по умолчанию (называемого внутренним соединением) запрос возвращает только те строки таблиц "Клиенты" и "Заказы", в которых общие поля (также называемые связанными полями) совпадают.

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

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

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

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

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

    Откроется диалоговое окно Параметры соединения.

  2. Выберите нужные параметры и нажмите кнопку ОК.

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

Вариант

Реляционное соединение

Левая таблица

Правая таблица

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

Внутреннее соединение

Сопоставленные строки

Сопоставленные строки

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

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

Все строки

Сопоставленные строки

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

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

Сопоставленные строки

Все строки

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

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

  1. На вкладке Работа с базами данных в группе Связи щелкните элемент Связи.

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

  2. На вкладке Конструктор в группе Связи нажмите кнопку Все связи.

    Появятся все таблицы со связями, а также соответствующие линии.

  3. Щелкните линию связи, которую требуется изменить. Выделенная линия связи станет жирной.

  4. Дважды щелкните линию связи.

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

  5. Нажмите кнопку Тип объединения.

  6. В диалоговом окне Параметры соединения выберите нужный параметр и нажмите кнопку ОК.

  7. Внесите в связь необходимые изменения и нажмите кнопку ОК.

К началу страницы

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

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

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

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

  2. Дважды щелкните линию связи.

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

  1. Установите флажок Обеспечение целостности данных.

  2. Внесите в связь необходимые изменения и нажмите кнопку ОК.

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Дважды щелкните линию связи.

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

  1. Установите флажок Обеспечение целостности данных.

  2. Установите флажок Каскадное обновление связанных полей или флажок Каскадное удаление связанных записей либо оба.

  3. Внесите в связь необходимые изменения и нажмите кнопку ОК.

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

К началу страницы

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

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×