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

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

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

В этой статье

Общие сведения

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

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

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

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

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

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

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

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

Введение

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

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

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

2. таблицы «Заказы»,

3. таблицы «Продукты»

4. и таблицы «Заказано».

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

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

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

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

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

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

Типы межтабличных связей

Существует три типа межтабличных связей.

  • Отношение «один-ко-многим»

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

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

  • Отношение «многие-ко-многим»

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

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

  • Отношение «один-к-одному»

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

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

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

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

  • Межтабличные связи предоставляют сведения для структуры запросов

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

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

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

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

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

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

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

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

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

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

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

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

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

Просмотр межтабличных связей

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

Открытие окна «Схема данных»

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

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

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

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

    Дополнительную информацию о параметре "Показывать скрытые объекты" см. в статье Руководство по области навигации.

Окно «Схема данных»

1. Первичный ключ

2. Эта линия представляет связь

3. Внешний ключ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание межтабличной связи с помощью окна «Схема данных»

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

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

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

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

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

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

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

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

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

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

Перетаскивание поля из одной таблицы на соответствующее поле другой таблицы

Примечания : 

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

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

Создание межтабличной связи с помощью области «Список полей»

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

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

  • На вкладке Таблица в группе Поля и столбцы выберите команду Добавить поля.

    Изображение ленты Access

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

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

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

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

  1. На вкладке Таблица в группе Поля и столбцы выберите команду Добавить поля.

    Изображение ленты Access

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

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

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

  4. Когда появится линия вставки, вставьте поле в выбранное место.

    Будет запущен мастер подстановок.

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

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

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

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

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

Будет открыто окно «Схема данных».

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

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

Будут отображены все связанные таблицы и все линии связи.

  1. Щелкните линию связи, которую требуется удалить. При выделении линия связи становится толще.

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

    –или–

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

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

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

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

Изменение межтабличной связи

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

Будет открыто окно «Схема данных».

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

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

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

Дополнительную информацию о параметре "Показывать скрытые объекты" см. в статье Руководство по области навигации.

  1. Щелкните линию связи, которую требуется изменить. При выделении линия связи становится толще.

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

    –или–

    на вкладке Конструктор в группе Сервис выберите команду Изменить связи.

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

    Диалоговое окно "Изменение связей"

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

    Диалоговое окно « Изменение связей » позволяет изменять отношения между таблицами. В частности вы можете изменить таблицы или запросы на обеих сторон отношения или поля с обеих сторон. Можно также задание типа объединения или обеспечение целостности данных и выберите параметр каскадного. Дополнительные сведения о типа соединения и настроить его в разделе Задание типа объединения. Дополнительные сведения о том, как обеспечение целостности данных и выберите параметр каскадного обратитесь к разделу Принудительная целостности данных.

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

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

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

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

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

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

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

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

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

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

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

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

Вариант

Реляционное объединение

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

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

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

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

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

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

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

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

Все строки

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

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

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

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

Все строки

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

Будет открыто окно «Схема данных».

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

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

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

Дополнительную информацию о параметре "Показывать скрытые объекты" см. в статье Руководство по области навигации.

  1. Щелкните линию связи, которую требуется изменить. При выделении линия связи становится толще.

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

    –или–

    на вкладке Конструктор в группе Сервис выберите команду Изменить связи.

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

  3. Нажмите кнопку Тип соединения.

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

    Диалоговое окно "Параметры объединения"

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

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

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

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

Будет открыто окно «Схема данных».

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

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

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

Дополнительную информацию о параметре "Показывать скрытые объекты" см. в статье Руководство по области навигации.

  1. Щелкните линию связи, которую требуется изменить. При выделении линия связи становится толще.

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

    –или–

    на вкладке Конструктор в группе Сервис выберите команду Изменить связи.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office , а затем — Открыть.

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

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

Будет открыто окно «Схема данных».

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

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

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

Дополнительные сведения о параметр Показывать скрытые объекты в руководстве в область навигации.

  1. Щелкните линию связи, которую требуется изменить. При выделении линия связи становится толще.

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

    –или–

    на вкладке Конструктор в группе Сервис выберите команду Изменить связи.

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

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

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

  5. Произведите любые дополнительные изменения в связи и нажмите кнопку ОК.

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

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

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

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

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

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

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

×