Использование связей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание связи

Удаление связи

Обучение работе с Excel

Обучение работе с Outlook

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×