Перейти к основному контенту
Office
Использование связей

Начало работы со связями между таблицами

Браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

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

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

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

Описание области "Схема данных"

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

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

По линиям и символам можно определить параметры связи.

  • Толстая соединительная линия означает, что включено обеспечение целостности данных. Это хорошо. Данные будут синхронизироваться.

  • На приведенном изображении цифра 1 означает, что в таблице слева может быть только одна связанная запись. В таблице "Заказы" каждому заказу может соответствовать только одна запись.

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

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

Между таблицами могут быть установлены связи трех видов:

  • Один-к-одному. Каждый элемент используется в каждой таблице только один раз. Например, каждый сотрудник может использовать только один служебный автомобиль. Дополнительные сведения см. в статье Создание связей типа "один-к-одному".

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

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

Связи типа «один ко многим»

Связи типа "один-ко-многим" — одни из наиболее распространенных в хорошо структурированных базах данных.

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

В показанной ниже связи у каждого человека из таблицы "Контакты" есть идентификатор, представляющий собой первичный ключ (он отмечен значком ключа). Этот идентификатор также используется в поле "Владелец" в таблице "Активы". Чтобы написать электронное письмо человеку, связанному с активом, следует использовать значение поля "Адрес электронной почты". Для этого необходимо узнать значение поля "Владелец" из таблицы "Активы", а затем найти этот идентификатор в таблице "Контакты". Число 1 на одном конце соединительной линии и знак "∞" на другом означают, что это связь типа "один-ко-многим", поэтому один контакт может быть связан с несколькими активами.

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

Изменение связи

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

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

  1. Выберите Работа с базами данных > Схема данных.

  2. Выберите линию, соединяющую две связанные таблицы.

    Совет: Если необходимая связь отсутствует, на вкладке Конструктор в группе Связи нажмите кнопку Все связи.

  3. На вкладке Конструктор нажмите кнопку Изменить связи.

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

    Таблица/запрос — это родительская таблица, указанная слева (в рассмотренном примере — «Клиенты»).

    Связанная таблица/запрос — это дочерняя таблица (в рассмотренном примере — «Заказы»).

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

  4. Чтобы изменить соединенные поля, выберите другое поле под каждой отображаемой таблицей. В рассмотренном примере поле "Код" из таблицы "Клиенты" соединяется с полем "Код клиента" из таблицы "Заказы".

  5. Настройте синхронизацию данных между таблицами.

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

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

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

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

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

    Установите этот флажок, чтобы данные в связанных полях обновлялись во всех связанных таблицах.

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

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

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

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

  6. Чтобы изменить связь между таблицами с внутреннего соединения на внешнее, нажмите кнопку Объединение. Дополнительные сведения см. в статье Создание запросов с внешними соединениями.

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

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

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

  1. Выберите Работа с базами данных > Схема данных.

  2. Выберите линию, соединяющую две связанные таблицы.

    Совет: Если необходимая связь отсутствует, на вкладке Конструктор в группе Связи нажмите кнопку Все связи.

  3. Нажмите клавишу DELETE. Если потребуется подтвердить удаление, нажмите кнопку Да.

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

Вам нужны дополнительные возможности?

Создание, изменение или удаление связи

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

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

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

В нашем примере используется именно этот тип связей. У каждого клиента может быть один либо несколько номеров телефонов, а каждый номер телефона связан только с одним клиентом.

При связи «многие ко многим» каждая запись в таблице А может быть связана с одной или несколькими записями в таблице Б, а каждая запись в таблице Б может быть связана с одной или несколькими записями в таблице А.

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

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

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

Давайте откроем вкладку Работа с базами данных и нажмем кнопку Схема данных. Откроется область «Схема данных». Этот инструмент еще не раз вам пригодится.

Он используется для построения связей и управления ими. Здесь мы видим типичную связь: две таблицы соединены линией. Линия обозначает связь между таблицами.

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

Во-первых, таблица со стороны «один» называется родительской, а таблица со стороны «многие» — дочерней.

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

Стороны играют важную роль при построении запросов.

Теперь выделим линию связи, а затем выберем на ленте элемент Изменить связи.

Есть три параметра, которые влияют на данные и помогают правильно построить связи: целостность данных, каскадное обновление и каскадное удаление. Опишем их функции.

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

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

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

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

Если, к примеру, клиент сменил имя, вам достаточно будет внести соответствующее изменение в таблицу «Клиенты», и все связанные записи изменятся.

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

Например, если вы удалите клиента, его номера телефонов также будут удалены.

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

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

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

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

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

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

×