Access

Access создание связей между таблицами: Определение связей между таблицами в базе данных Access

Содержание

Определение связей между таблицами в базе данных Access

  • Чтение занимает 10 мин
  • Применяется к:
    Access 2013, Access 2010, Microsoft Office Access 2007, Microsoft Office Access 2003

В этой статье

Примечание

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Оригинальный номер КБ:   304466

Примечание

Внимание! Материал, изложенный в этой статье, требует знания пользовательского интерфейса на компьютерах с одним пользователем. Эта статья относится только к базе данных Microsoft Access (.mdb или .accdb).

Аннотация

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

  • Что такое связи между таблицами?
  • Виды связей между таблицами
    • Связи "один ко многим"
    • Связи "многие ко многим"
    • Связи "один к одному"
  • Как определить связи между таблицами
    • Как определить связи "один ко многим" или "один к одному"
    • Как определить связь "многие ко многим"
  • Целостность данных
  • Каскадные обновления и удаления
  • Типы соединения

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

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

Лучшим решением является хранение информации издателя только один раз, в отдельной таблице, которую мы будем называть "Издатели". Затем вы поместите указатель в таблице "Названия", которая ссылается на запись в таблице "Издатели".

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

Логические отношения в базе данных позволяют эффективно запрашивать данные и создавать отчеты.

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

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

title_ID) в таблице "Названия" и столбцом в таблице "Продажи", который называется title_ID. Столбец title_ID в таблице "Продажи" является внешним ключом.

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

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

Связь "один ко многим" являются наиболее распространенным типом связи. В такого рода связях строка в таблице А может иметь много строк в таблице B. Но строка в таблице B может иметь только одну строку в таблице А. Например, таблицы "Издатели" и "Названия" имеют связь "один ко многим". То есть, каждый издатель выпускает много названий. Но каждое название принадлежит только одному издателю.

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

В окне связей в Access, сторона первичного ключа связи "один ко многим" обозначается номером 1. Сторона внешнего ключа связи обозначается символом бесконечности.

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

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

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

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

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

  • Разделите таблицу на множество столбцов.
  • Из соображений безопасности изолируйте часть таблицы.
  • Храните данные, которые недолговечны и могут быть легко удалены при удалении таблицы.
  • Храните информацию, которая относится только к подмножеству основной таблицы.

В Access сторона первичного ключа связи "один к одному" обозначается символом ключа. Сторона внешнего ключа также обозначается символом ключа.

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

При создании связи между таблицами связанные поля не должны иметь одни и те же имена. Однако связанные поля должны иметь один и тот же тип данных, если только поле первичного ключа не является полем AutoNumber. Вы можете сопоставить поле AutoNumber с полем Number, только если свойство FieldSize обоих совпадающих полей совпадает. Например, можно сопоставить поле AutoNumber и поле Number, если свойство theFieldSizeproperty обоих полей имеет значение Long Integer. Даже если оба совпадающих поля являются числовыми полями, они должны иметь параметр sameFieldSizeproperty.

Как определить связи "один ко многим" или "один к одному"

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

  1. Закройте все таблицы. Нельзя создавать или изменять связи между открытыми таблицами.

  2. В Access 2002 и Access 2003 выполните следующие действия.

    1. Нажмите F11, чтобы переключиться в окно базы данных.
    2. В меню Инструменты выберите Связи.

    В Access 2007, Access 2010 или Access 2013 нажмите Связи в группе Показать/Скрыть на вкладке Инструменты базы данных.

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

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

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

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

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

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

  7. Нажмите кнопку Создать, чтобы создать связь.

  8. Повторите шаги с 4 по 7 для каждой пары таблиц, которые вы хотите связать.

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

    Примечание

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

Как определить связь "многие ко многим"

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

  1. Создайте две таблицы, которые будут иметь связь "многие ко многим".

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

  3. В связующей таблице установите первичный ключ, чтобы включить основные ключевые поля из двух других таблиц. Например, в связующей таблице "TitleAuthors" первичный ключ будет состоять из полей OrderID и ProductID.

    Примечание

    Чтобы создать первичный ключ, выполните следующие действия:

    1. Откройте таблицу в Конструкторе.

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

    3. В Access 2002 или в Access 2003 нажмите на Первичный ключ на панели инструментов.

      В Access 2007 нажмите на Первичный ключ в группе Инструменты на вкладке Дизайн.

      Примечание

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

  4. Определите связь один-ко-многим между каждой основной и связующей таблицами.

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

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

  • Совпадающие поля из основной таблицы являются первичным ключом или имеет уникальный индекс.
  • Связанные поля имеют один и тот же тип данных. Из этого правила есть два исключения: Поле AutoNumber может быть связано с полем Number, которое имеет FieldSize настройку свойства Long Integer, а поле AutoNumber, которое имеет  FieldSize настройку свойства Replication ID, может быть связано с полем Number, которое имеет  FieldSize настройку свойства Replication ID.
  • Обе таблицы относятся к одной и той же базе данных Access. Если таблицы являются связанными таблицами, они должны быть таблицами в формате Access, и необходимо открыть базу данных, в которой они хранятся, чтобы установить целостность данных. Референтная целостность не может быть применена для связанных таблиц из баз данных в других форматах.

При использовании целостности данных применяются следующие правила:

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

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

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

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

Примечание

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

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

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

Существует три основных типа соединения: Вы можете увидеть их на следующем снимке экрана:

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

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

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

Установка связей между таблицами БД Access 2007

2.4. Microsoft Access 2007

2.4.3. Установка логических связей в БД Access 2007

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

Для установления связей используем ключевые поля: КодГруппы, КодСтудентов и КодДисциплины. Например, между первичным ключом (КодГруппы) tables Группы студентов и вторичным ключом (КодГруппы) tables Студенты устанавливаем связь один - ко - многим.

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


Рис. 1.

В окне Добавление таблиц необходимо выделить имена таблиц и нажать кнопку Добавить, при этом в окне "Схема данных" появятся все tables (рис. 2). После этого необходимо закрыть окно диалога.


Рис. 2.

Далее необходимо установить связи между табл. в окне Схема данных. Для этого в окне Схема данных необходимо отбуксировать (переместить) поле КодГруппы из таблицы Группы студентов на соответствующее поле tables Студенты, в результате этой операции появится окно "Изменение связей" (рис. 3) .


Рис. 3.

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

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


Рис. 4.

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

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

Далее >>> Раздел: 2.4.4. Заполнение таблиц базы данных Access 2007

Схема данных в Access - Базы данных Access

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

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

Создание схемы данных

Создание схемы данных начинается с выполнения команды Схема данных (Relationships) в группе Отношения (Relationships) на вкладке ленты Работа с базами данных (Database Tools). В результате выполнения этой команды открывается окно схемы данных и диалоговое окно Добавление таблицы (Show Table), в котором осуществляется выбор таблиц, включаемых в схему (см. рис. 3.48). Диалоговое окно Добавление таблицы откроется автоматически, если в базе данных еще не определена ни одна связь. Если окно не открылось, на ленте Работа со связями | Конструктор (Relationship Tools | Design) в группе Связи (Relationships) нажмите кнопку Отобразить таблицу (Show Table).

Включение таблиц в схему данных

В окне Добавление таблицы (Show Table) (рис. 3.48) отображены все таблицы и запросы, содержащиеся в базе данных. Выберем вкладку Таблицы (Tables) и с помощью кнопки Добавить (Add) разместим в окне Схема данных (Relationships) все ранее созданные таблицы базы данных Поставка товаров, отображенные в окне Добавление таблицы (Show Table). Затем нажмем кнопку Закрыть (Close). В результате в окне Схема данных (Relationships) таблицы базы будут представлены окнами со списками своих полей и выделенными жирным шрифтом ключами (см. рис. 3.52).

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

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

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

Установим связь между таблицами ПОКУПАТЕЛЬ и ДОГОВОР, которые находятся в отношении «один-ко-многим». Устанавливая связи между парой таблиц, находящихся в отношении типа 1 : M, выделим в главной таблице ПОКУПАТЕЛЬ ключевое поле КОД_ПОК, по которому устанавливается связь. Далее при нажатой кнопке мыши перетащим его в соответствующее поле подчиненной таблицы ДОГОВОР.

Поскольку поле связи является уникальным ключом в главной таблице связи, а в подчиненной таблице связи не является ключевым, схема данных в Access выявляет отношение «один-ко-многим» между записями этих таблиц. Значение «один-ко-многим» (One-To-Many) отобразится в окне Изменение связей (Edit Relationships) в строке Тип отношения (Relationship Type) (рис. 3.49).

ЗАМЕЧАНИЕ
Если поле связи является уникальным ключом в обеих связываемых таблицах, схема данных в Access выявляет отношение «один-к-одному«. Если для связи таблиц вместо ключевого поля главной таблицы используется некоторый уникальный индекс, система также констатирует отношение таблиц как 1 : М или 1 : 1.

Определение связей по составному ключу

Определим связи между таблицами НАКЛАДНАЯ ОТГРУЗКА, которые связаны по составному ключу НОМ_НАКЛ + КОД_СК. Для этого в главной таблице НАКЛАДНАЯ выделим оба этих поля, нажав клавишу <Ctrl>, и перетащим их в подчиненную таблицу ОТГРУЗКА.

В окне Изменение связей (Edit Relationships) (рис. 3.50) для каждого поля составного ключа главной таблицы НАКЛАДНАЯ, названной Таблица/запрос (Table/Query), выберем соответствующее поле подчиненной таблицы ОТГРУЗКА, названной Связанная таблица/запрос (Related Table/Query).

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

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

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

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

Установить в окне Изменение связей (Edit Relationships) (см. рис. 3.49) флажки каскадное обновление связанных полей (Cascade Update Related Fields) и каскадное удаление связанных записей (Cascade Delete Related Records) можно только после задания параметра обеспечения целостности данных.

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

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

Вот основное, что мы хотели рассказать на тему «Схема данных в Access».

Дальше будем изучать запросы в Access.

Урок 37. Лабораторная работа № 24. Создание связей в базе данных

Лабораторная работа № 24

Тема: Создание связей в базе данных.

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

Оборудование: ПК, Windows XP Professional, MS Access 2007.

Ход работы

1 В соответствие с заданием создать и заполнить таблицы БД "Фирма", установить связи между ними.

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

3 Ответить на контрольные вопросы.

4 Сделать вывод о проделанной работе.

Порядок выполнения:

1.  Запустите Microsoft Access.

2.  Создайте базу данных Фирма. Сотрудники данной организации работают с клиентами и выполняют их заказы.

Для этого запустите Access, создайте новую базу данных, задайте имя базы данных Фирма, выберите место сохранения Вашей базы данных (диск Х:) и нажмите кнопку Создать. (подробный порядок действий описан в лабораторной работе № 23)

3.  Создайте в режиме Конструктор  3 таблицы: Сотрудники, Клиенты и Заказы. Если все сведения поместить в одной таблице, то она станет очень неудобной для работы. В ней начнутся повторы данных. Всякий раз, когда сотрудник Иванов будет работать с какой-либо фирмой, придется прописывать данные о сотруднике и клиенте заново, в результате чего можно допустить множество ошибок. Чтобы уменьшить число ошибок, можно исходную таблицу разбить на несколько таблиц и установить связи между ними. Это будет более рационально.

Таблица Сотрудники

Таблица Клиенты

Таблица Заказы

4. Установите ключевые поля.

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

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

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

1) в таблице Сотрудники ключевое поле Код сотрудника

2) в таблице Клиенты ключевое поле Код клиента

3) в таблице Заказы ключевое поле Код заказа

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

5. Создайте раскрывающиеся списки с помощью Мастера подстановок

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

Откройте таблицу Заказы в режиме Конструктора.  Для поля Код клиента выберите тип данных Мастер подстановок.

В появившемся окне выберите команду Объект "столбец подстановки" будет использовать значения из таблицы или запроса и щелкните на кнопке Далее.

В списке таблиц выберите таблицу Клиенты и щелкните на кнопке Далее.

В списке Доступные поля выберите поле Код клиента и щелкните на кнопке со стрелкой >>, чтобы ввести поле в список Выбранные поля. Таким же образом добавьте поле Название компании и щелкните на кнопке Далее.

Выберите порядок сортировки списка по полю Название компании и нажмите кнопку Далее.

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

На последнем шаге Мастера подстановок замените при необходимости надпись для поля подстановок и щелкните на кнопке Готово.

Сохраните полученный результат.

6. Аналогичным образом создайте раскрывающийся список для поля Код сотрудника.

Теперь в списке таблиц выберите таблицу Сотрудники

В списке Доступные поля выберите поля Код сотрудника, Фамилия, Имя.

Порядок сортировки списка выберите по полю Фамилия.

Все остальные действия проводятся аналогично пункту 6.

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

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

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

- при отношении «один-к-многим» каждой записи в первой таблице соответствует несколько записей во второй, но запись во второй таблице не может иметь более одной связанной записи в первой таблице;

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

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

Выполните команду вкладки Лента Работа с базами данных кнопка Схема данных

 

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

Если связи между таблицами уже были заданы, то откроется окно Схема данных, на котором будут отображены таблицы и связи между ними.

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

Откроется диалоговое окно Изменение связей, в котором включите флажок Обеспечение целостности данных. Это позволит предотвратить случаи удаления записей из одной таблицы, при кото­рых связанные с ними данные других таблиц останутся без связи. Обратите внимение на тип отношений: один-ко-многим.

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

Аналогично измените связь между таблицами Клиенты и Заказы.

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

На схеме данных связи отображаются в виде соединительных линий со специальными значками около таблиц. Связь «один-к-многим» помечается «1» вблизи глав­ной таблицы (имеющей первичный ключ) и «∞» вблизи подчиненной таблицы (имеющей внешний ключ). Связь «один-к-одному» помечается двумя «1» (оба поля таблиц имеют первичные ключи). Неопределенная связь не имеет никаких знаков. Если установлено объединение, то его направление отмечается стрелкой на конце соединительной линии (ни одно из объединенных полей не является ключевым и не имеет уникального индекса).

7.  В таблицу Сотрудники внесите данные о 7 работниках.

8.  В таблицу Клиенты внесите данные о 7 предприятиях, с которыми работает данная фирма.

9.  В таблице Заказы оформите 5 заявок, поступивших на фирму.

10.  Покажите работу преподавателю.

11.  Ответьте на контрольные вопросы.

Контрольные вопросы:

1 С помощью чего можно создавать таблицы?

2 Что такое ключевое поле?

3 Как установить несколько ключевых полей?

4 Как установить связи между таблицами?

5 Какие существуют отношения между таблицами?

6 Что означают на схеме данных «1» и «∞»?

7 Зачем нужен Мастер подстановок?

8 Для чего нужен механизм запросов?

 Методические указания к лабораторной работе № 24 Создание связей в базе данных

Создание базы данных в access (установка связей между таблицами)

Сброс настроек и переустановка

Если же вы добрались до настроек и обнаружили, что все значения уже заданы, а буфер всё же не работает, попробуйте следующее:

  1. Сбросьте параметры общего буфера обмена.
  2. Установите заголовочный файл ядра, имеющий следующий вид: apt-get install make gcc linux-headers-$(uname -r).
  3. Заново переустановите расширение VirtualBox Guest Additions – оно уже предусмотрено в пакете установки, если у вас официальная версия продукта.
  4. Выполните перезагрузку и вернитесь к параметрам буфера обмена, о которых говорилось ранее.

Связь типа «один-к-одному»

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

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

Рис. 3.2. Связи между таблицами в БД Деканат

Создание запроса на выборку с помощью Конструктора

С помощью
конструктора можно создать следующие
виды запросов:

 Простой

 По
условию


Параметрические

 Итоговые

 С
вычисляемыми полями

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

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

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

В нижней
части окна находится Бланк построения
запроса QBE (Query by Example), в котором каждая
строка выполняет определенную функцию:

 Поле
– указывает имена полей, которые
участвуют в запросе

 Имя
таблицы – имя таблицы, с которой выбрано
это поле


Сортировка – указывает тип сортировки

 Вывод
на экран – устанавливает флажок просмотра
поля на экране

 Условия
отбора  — задаются критерии поиска

 Или –
задаются дополнительные критерии отбора

 В окне
 «Запрос: запрос на выборку» с помощью
инструментов формируем query:

 Выбрать
таблицу – источник, из которой производится
выборка записей.


Переместить имена полей с источника в
Бланк запроса. Например, из таблицы
Группы студентов отбуксировать поле
Название в первое поле Бланка запросов,
из таблицы Студенты отбуксировать поле
Фамилии во второе поле Бланка запросов,
а из таблицы Успеваемость отбуксировать
поле Оценка в третье поле и из таблицы
Дисциплины отбуксировать поле Название
в четвертое поле Бланка запросов.

 Задать
принцип сортировки. Курсор мыши
переместить в строку Сортировка для
любого поля, появится кнопка открытия
списка режимов сортировки: по возрастанию
и по убыванию. Например, установить в
поле Фамилия режим сортировки – по
возрастанию.

 В
строке вывод на экран автоматически
устанавливается флажок просмотра
найденной информации в поле.

 В
строке «Условия» отбора и строке
«Или» необходимо ввести условия
ограниченного поиска – критерии поиска.
Например, в поле Оценка ввести  -
«отл/A», т.е. отображать все фамилии
студентов, которые получили оценки
отл/A.

 После
завершения формирования запроса закрыть
окно Запрос на выборку. Откроется окно
диалога Сохранить – ответить Да (ввести
имя созданного запроса, например, Образец
запроса в режиме Конструктор) и щелкнуть
ОК и вернуться в окно базы данных.

Чтобы
открыть query из окна базы данных, необходимо
выделить имя запроса и щелкнуть кнопку
Открыть, на экране появится окно запрос
на выборку с требуемым именем.

Чтобы
внести изменения в query его необходимо
выбрать щелчком мыши в окне базы данных,
выполнить щелчок по кнопке Конструктор,
внести изменения. Сохранить запрос,
повторить его выполнение.

Параметрические
запросы

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

Последовательность
создания параметрического запроса:

 Создать
query в режиме конструктора или открыть
существующий запрос в режиме конструктора,
например «Образец запроса в режиме
Конструктор».

 В Бланк
запроса в строке Условия отбора ввести
условие отбора в виде приглашения в
квадратных скобках, например

 Закрыть
окно Запрос на выборку, на вопрос о
сохранении изменения ответить – Да.
Вернуться в окно базы данных, где
созданный query будет выделен.


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

Бизнес и финансы

БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумагиУправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги — контрольЦенные бумаги — оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудитМеталлургияНефтьСельское хозяйствоЭнергетикаАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством

Навигация по столам

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

Чтобы перемещаться между полями, вы можете использовать клавиши со стрелками влево и вправо или прокручивать влево и вправо.

Понимание таблиц

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

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

Запись — это одна единица информации. Каждая ячейка в данной строке является частью записи этой строки. Каждая запись имеет свой идентификационный номер. В таблице каждый идентификационный номер уникален для своей записи и относится ко всей информации в этой записи. Идентификационный номер для записи не может быть изменен.

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

Шаг 11 — Связываем таблицы в БД

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

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

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

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

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

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

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

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

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


Предыдущий Шаг | Следующий Шаг | ОглавлениеАвтор .

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

При создании связи между таблицами связанные поля не должны иметь одни и те же имена. Однако связанные поля должны иметь один и тот же тип данных, если только поле первичного ключа не является полем AutoNumber. Вы можете сопоставить поле AutoNumber с полем Number, только если свойство FieldSize обоих совпадающих полей совпадает. Например, можно сопоставить поле AutoNumber и поле Number, если свойство theFieldSizeproperty обоих полей имеет значение Long Integer. Даже если оба совпадающих поля являются числовыми полями, они должны иметь параметр sameFieldSizeproperty.

Как определить связи «один ко многим» или «один к одному»

Чтобы создать связь «один ко многим» или «один к одному», выполните следующие действия.

  1. Закройте все таблицы. Нельзя создавать или изменять связи между открытыми таблицами.

  2. В Access 2002 и Access 2003 выполните следующие действия.

    1. Нажмите F11, чтобы переключиться в окно базы данных.
    2. В меню Инструменты выберите Связи.

    В Access 2007, Access 2010 или Access 2013 нажмите Связи в группе Показать/Скрыть на вкладке Инструменты базы данных.

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

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

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

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

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

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

  7. Нажмите кнопку Создать, чтобы создать связь.

  8. Повторите шаги с 4 по 7 для каждой пары таблиц, которые вы хотите связать.

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

    Примечание

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

Как определить связь «многие ко многим»

Чтобы создать связь «многие ко многим», выполните следующие действия.

  1. Создайте две таблицы, которые будут иметь связь «многие ко многим».

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

  3. В связующей таблице установите первичный ключ, чтобы включить основные ключевые поля из двух других таблиц. Например, в связующей таблице «TitleAuthors» первичный ключ будет состоять из полей OrderID и ProductID.

    Примечание

    Чтобы создать первичный ключ, выполните следующие действия:

    1. Откройте таблицу в Конструкторе.

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

    3. В Access 2002 или в Access 2003 нажмите на Первичный ключ на панели инструментов.

      В Access 2007 нажмите на Первичный ключ в группе Инструменты на вкладке Дизайн.

      Примечание

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

  4. Определите связь один-ко-многим между каждой основной и связующей таблицами.

Изменение записей в таблицеUpdate records in a table

Чтобы изменить текущие данные в таблице, используйте инструкцию UPDATE, которую обычно называют запросом на обновление.To modify the data that is currently in a table, you use the UPDATE statement, which is commonly referred to as an update query. Инструкция UPDATE может изменить одну или несколько записей и обычно имеет указанный ниже вид.The UPDATE statement can modify one or more records and generally takes this form.

Чтобы изменить все записи в таблице, укажите имя таблицы и с помощью выражения SET укажите поле или поля, которые необходимо изменить.To update all the records in a table, specify the table name, and then use the SET clause to specify the field or fields to be changed.

В большинстве случаев вам потребуется уточнить инструкцию UPDATE с помощью выражения WHERE, чтобы ограничить количество изменяемых записей.In most cases, you will want to qualify the UPDATE statement with a WHERE clause to limit the number of records changed.

Вставка записей в таблицуInsert records into a table

По существу, существует два метода добавления записей в таблицу.There are essentially two methods for adding records to a table. Первый — добавление по одной записи за раз, второй — одновременное добавление нескольких записей.The first is to add one record at a time; the second is to add many records at a time. В обоих случаях для выполнения задачи необходимо использовать инструкцию SQL INSERT INTO.In both cases, you use the SQL statement INSERT INTO to accomplish the task. Инструкции INSERT INTO обычно называют запросами на добавление.INSERT INTO statements are commonly referred to as append queries.

Чтобы добавить одну запись в таблицу, с помощью списка полей определите, в какие поля следует поместить данные, а затем разместите данные в списке значений.To add one record to a table, you must use the field list to define which fields to put the data in, and then you must supply the data itself in a value list. Для определения списка значений используйте выражение VALUES.To define the value list, use the VALUES clause. Например, указанная ниже инструкция вставляет значения 1, Kelly и Jill в поля CustomerID, Last Name и First Name соответственно.For example, the following statement will insert the values «1», «Kelly», and «Jill» into the CustomerID, Last Name, and First Name fields, respectively.

Вы можете опустить список полей, но только в том случае, если вы передаете все значения, которые должна содержать запись.You can omit the field list, but only if you supply all the values that record can contain.

Чтобы добавить одновременно несколько записей в таблицу, используйте инструкцию INSERT INTO совместно с инструкцией SELECT.To add many records to a table at one time, use the INSERT INTO statement along with a SELECT statement. Если вы вставляете записи из другой таблицы, тип каждого вставляемого значения должен быть совместим с типом поля, принимающего данные.When you are inserting records from another table, each value being inserted must be compatible with the type of field that will be receiving the data.

Указанная ниже инструкция INSERT INTO вставляет все значения полей CustomerID, Last Name и First Name таблицы tblOldCustomers в соответствующие поля таблицы tblCustomers.The following INSERT INTO statement inserts all the values in the CustomerID, Last Name, and First Name fields from the tblOldCustomers table into the corresponding fields in the tblCustomers table.

Если таблицы определены совершенно одинаково, можно не использовать списки полей.If the tables are defined exactly alike, you can leave out the field lists.

Удаление записей из таблицыDelete records from a table

Чтобы удалить текущие данные в таблице, используйте инструкцию DELETE, которую обычно называют запросом на удаление.To delete the data that is currently in a table, you use the DELETE statement, which is commonly referred to as a delete query. Эту операцию также называют усечением таблицы.This is also known as truncating a table. Инструкция DELETE может удалить одну или несколько записей из таблицы и обычно имеет следующий вид:The DELETE statement can remove one or more records from a table and generally takes this form:

Инструкция DELETE не удаляет структуру таблицы, она удаляет только данные, хранящиеся в структуре таблицы.The DELETE statement does not remove the table structure—only the data that is currently being held by the table structure. Чтобы удалить все записи из таблицы, используйте инструкцию DELETE и укажите одну или несколько таблиц, из которых вы хотите удалить все записи.To remove all the records from a table, use the DELETE statement and specify which table or tables from which you want to delete all the records.

В большинстве случаев вам потребуется уточнить инструкцию DELETE с помощью выражения WHERE, чтобы ограничить количество удаляемых записей.In most cases, you will want to qualify the DELETE statement with a WHERE clause to limit the number of records to be removed.

Если вы хотите удалить данные только из определенных полей таблицы, используйте инструкцию UPDATE и присвойте этим полям значение NULL, но только в том случае, если эти поля допускают значение NULL.If you want to remove data only from certain fields in a table, use the UPDATE statement and set those fields equal to NULL, but only if they are nullable fields.

Поддержка и обратная связьSupport and feedback


Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Параметры форматирования таблиц

Цвет чередующихся строк

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

Чтобы изменить цвет другой строки:

  1. 1. Выберите вкладку «Главная» и найдите группу форматирования текста.
  1. 2. Нажмите стрелку раскрывающегося списка «Альтернативный ряд».
  1. 3. Выберите цвет в раскрывающемся меню или выберите «Нет цвета», чтобы удалить цвет другой строки.
  1. 4. Цвет вашей альтернативной строки будет обновлен.

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

Лучшим решением является хранение информации издателя только один раз, в отдельной таблице, которую мы будем называть «Издатели». Затем вы поместите указатель в таблице «Названия», которая ссылается на запись в таблице «Издатели».

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

Логические отношения в базе данных позволяют эффективно запрашивать данные и создавать отчеты.

Добавление записей и ввод данных

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

Чтобы добавить новую запись:

Существует три способа добавления новой записи в таблицу:

В группе «Запись» на вкладке «Главная» щелкните команду «Создать».

На панели навигации «Запись» в нижней части окна нажмите кнопку «Новая запись».

Просто начните печатать в строке ниже вашей последней добавленной записи.

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

Чтобы сохранить запись:

  1. 1. Выберите вкладку «Главная» и найдите группу «Записи».
  1. 2. Нажмите кнопку «Сохранить».

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

Дополнительные параметры форматирования

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

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

В конечном итоге у Вас изменится вид таблицы и станет напоминать Excel.

Новые статьи

  • Проектирование собственной базы данных в Access — 21/08/2018 15:16
  • Форматирование форм в Access — 21/08/2018 15:11
  • Создание форм в Access — 21/08/2018 15:05
  • Изменение таблиц в Access — 21/08/2018 14:58
  • Дополнительные параметры отчета в Access — 21/08/2018 14:48
  • Создание отчетов в Access — 21/08/2018 14:42
  • Дополнительные параметры дизайна запроса в Access — 21/08/2018 14:36
  • Проектирование запроса в Access — 21/08/2018 04:49
  • Сортировка и фильтрация записей в Access — 21/08/2018 04:37
  • Работа с формами в Access — 21/08/2018 04:25

Предыдущие статьи

  • MS Access — Управление базами данных и объектами — 30/03/2018 16:18
  • Начало работы в Access. Знакомство с Access 2010 — 10/02/2018 18:24
  • MS Access: Введение в объекты — Таблицы, формы, запросы и отчеты — 07/02/2018 08:32
  • MS Access: Что такое база данных? Отличие Access от Excel. — 03/02/2018 18:18

Читайте также:

3.1. Определение связей между таблицами

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

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

Рис. 3.1.

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

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

Исключение из этого правила: поле типа
Счетчик можно связывать с числовым
полем, имеющим в свойстве Размер поля
значение «Длинное целое». Кроме того,
связываемые поля числового типа должны
иметь одинаковые значения свойства
Размер поля. Например, для получения
информации о студентах и полученных
ими оценках следует определить связь
по полям Код Студента в таблицах Студенты
и Сессия. Главной в этой связи будет
таблица Студенты, а подчиненной —
таблица Сессия. Каждой записи в главной
таблице — данным о студенте — соответствует
несколько (или ни одной) записей из
подчиненной таблицы — информация об
его оценках. Поле Код Студента в таблице
Сессия является внешним ключом.

Загрузка...

Как связать несколько таблиц в Microsoft Access

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

Пошаговая инструкция

  1. Откройте БД в программе (помните, что связать можно минимум 2 таблицы в Access).
  2. Заполните поля информацией, учитывая, что для осуществления операции, поля должны иметь схожий тип данных. Если созданная связь имеет формат «один ко многим», то поля в первой таблице могут иметь тип «Счетчика», а соответствующая ячейка во второй – должна быть числовой. В качестве ключевого следует задать именно счетчик.
  3. Откройте меню «Сервис/Схема данных» после чего на экране появится область со связанными элементами. Если же она пуста, то окно добавления таблиц откроется в Access автоматически.
  4. Для того чтобы включить связываемые таблицы Access в открытую БД, следует выделять необходимые названия и кликать на кнопку «Добавить». При этом изображения с табличками будут появляться в рабочей области.
  5. Чтобы установить связи между таблицами в Access следует захватить поле одного объекта, перенести и отпустить мышку над соответствующим полем в другом. После этого на экране появится окошко с настройками.
  6. Если задать точное расположение ячеек в Access с помощью мышки не удалось, их можно настроить в выпадающих списках. Включение всех «флажков» обеспечит целостность и сохранность данных, а также их каскадное изменение.
  7. Установленный тип отношений можно просмотреть внизу окошка. Всего их три: «1 ко многим», «к одному» и «многие ко многим». Если в окне отобразился не тот параметр, значит, типы полей были заданы неверно.
  8. После нажатия на кнопку «Создать» между изображениями появится линия с цифрой 1 и символом бесконечности. Это значит, что объекты Access связаны соотношением «один ко многим».

Как видите, ничего сложного в установлении связи между таблицами в Access нет. Надеемся, что наше руководство окажется полезным для вас!

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

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

В этой статье

Введение

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

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

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

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

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

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

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

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

В Access есть три типа связей между таблицами.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.1. Определение связей между таблицами

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

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

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

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

Исключение из этого правила: поле типа Счетчик можно связывать с числовым полем, имеющим в свойстве Размер поля значение «Длинное целое». Кроме того, связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля. Например, для получения информации о студентах и полученных ими оценках следует определить связь по полям Код Студента в таблицах Студенты и Сессия. Главной в этой связи будет таблица Студенты, а подчиненной — таблица Сессия. Каждой записи в главной таблице — данным о студенте — соответствует несколько (или ни одной) записей из подчиненной таблицы — информация об его оценках. Поле Код Студента в таблице Сессия является внешним ключом.

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

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

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

2. Связь типа «один-к-одному»

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

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

Рис. 3.2. Связи между таблицами в БД Деканат

Часть 3.2: Виды связей между таблицами в базе данных. Связи в реляционных базах данных. Отношения, кортежи, атрибуты

  • 26.05.2016
  • SQLite библиотека, Базы данных
  • Комментариев нет

Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Продолжаем изучать теорию реляционных баз данных и в этой части мы познакомимся с видами и типами связей между таблицами в реляционных базах данных. Так же мы познакомимся с такими термина, как: кортеж, атрибут и отношения. Данная тема является базовой и ее понимание необходимо для работы с базами данных и для их проектирования.

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

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

Термины кортеж, атрибут и отношение в реляционных базах данных

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

Таблица с данными из базы данных World

У нас есть простая таблица City из базы данных World, в которой есть строки и столбцы. Но термины: таблица, строка, столбец — это термины стандарта SQL.
Кстати: ни одна из существующих в мире СУБД не имеет полной поддержки того или иного стандарта SQL, но и ни один стандарт SQL полностью не реализует математику реляционных баз данных.
В терминологии реляционных баз данных: таблица — это отношение (принимается такое допущение), строка — это кортеж, а столбец — атрибут. Иногда вы можете услышать, как некоторые разработчики называют строки записями. Чтобы не было путаницы в дальнейшем предлагаю использовать термины SQL.
Если рассматривать таблицу, как объект (например книга), то столбец — это характеристики объекта, а строки содержат информацию об объекте.

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

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

Реализация связи один ко многим в теории баз данных

Связь один ко многим в реляционных базах данных реализуется тогда, когда объекту А может принадлежать или же соответствовать несколько объектов Б, но объекту Б может соответствовать только один объект А. Не совсем понятно, поэтому смотрим пример ниже.

Реализация связи один ко многим в реляционных базах данных

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

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

Связь многие ко многим реализуется в том случае, когда нескольким объектам из таблицы А может соответствовать несколько объектов из таблицы Б, и в тоже время нескольким объектам из таблицы Б соответствует несколько объектов из таблицы А. Рассмотрим простой пример.

Пример связи многие ко многим

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

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

Связь один к одному — самая редко встречаемая связь между таблицами. В 97 случаях из 100, если вы видите такую связь, вам необходимо объединить две таблицы в одну.

Пример связи один к одному

Таблицы будут связаны один к одному тогда, когда одному объекту таблицы А соответствует один объект таблицы Б, и одному объекту таблицы Б соответствует один объект таблицы А. Как я уже говорил: если вы видите, что связь один к одному — смело объединяйте таблицы в одну, за исключением тех случаев, когда происходит модернизация базы данных.
Например, у нас была таблица, в которой хранились данные о сотрудниках компании. Но произошли какие-то изменения в бизнес-процессе и появилась необходимость создать таблицы с теми же самыми сотрудниками, но не для всей компании, а разбив их по отделам. Таблицы отделов будут дочерними по отношению к таблице, в которой хранятся данные обо всех сотрудниках компании, и связаны такие таблицы будут связью один к одному.

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

НАШ САЙТ РЕКОМЕНДУЕТ:

Метки:  

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

Отношение в Access помогает объединить данные из двух разных таблиц. Каждое отношение состоит из полей в двух таблицах с соответствующими данными. Например, у вас может быть поле ProductID в таблице Products и в таблице OrderDetails. Каждая запись в таблице OrderDetails имеет ProductID, который соответствует записи в таблице Products с тем же ProductID.

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

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

В этой статье

Обзор

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

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

  • Перетащите поле в таблицу из области Список полей .

Когда вы создаете связь между таблицами, общие поля не обязательно должны иметь одинаковые имена, хотя это часто бывает. Общие поля должны иметь один и тот же тип данных. Однако, если поле первичного ключа является полем AutoNumber, поле внешнего ключа также может быть числовым полем, если свойство FieldSize обоих полей одинаково.Например, вы можете сопоставить поле AutoNumber и поле Number, если свойство FieldSize обоих полей имеет значение Long Integer. Если оба общих поля являются числовыми полями, они должны иметь одинаковую настройку свойства FieldSize .

Верх страницы

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

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

  2. На вкладке Design в группе Взаимосвязи щелкните Добавить таблицы (или Показать таблицу в Access 2013).

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

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

    Откроется диалоговое окно Редактировать отношения .

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

    Чтобы обеспечить ссылочную целостность для этого отношения, установите флажок Enforce Referential Integrity .Дополнительные сведения о ссылочной целостности см. В разделе Обеспечение ссылочной целостности.

  6. Щелкните Создать .

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

    Примечания:

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

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

Верх страницы

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

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

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

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

Открыть панель списка полей

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

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

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

  1. Открыв таблицу в режиме таблицы, нажмите ALT + F8. Появится панель Список полей .

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

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

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

    Мастер поиска запускается.

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

    Поле появится в таблице в режиме таблицы.

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

Верх страницы

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

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

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

    При выборе линия связи выглядит толще.

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

    –или–

    На вкладке Design в группе Инструменты щелкните Изменить отношения .

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

Откройте диалоговое окно "Редактировать отношения"

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

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

    Отображаются все таблицы со связями, показывающие линии связи. Обратите внимание, что скрытые таблицы (таблицы, для которых установлен флажок Hidden в диалоговом окне Properties таблицы) и их связи не будут отображаться, если в диалоговом окне Navigation Options не выбран параметр Show Hidden Objects.

  3. Щелкните линию отношения для отношения, которое вы хотите изменить. При выборе линия связи выглядит толще.

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

    -или-

    На вкладке Design в группе Инструменты щелкните Изменить отношения .

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

  5. Внесите изменения и нажмите ОК .

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

Задайте тип соединения

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

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

Одно из значений, которое вы можете указать для каждой связи, - это тип соединения. Тип соединения сообщает Access, какие записи нужно включить в результат запроса.Например, снова рассмотрим запрос, который объединяет таблицу «Клиенты» и таблицу «Заказы» в общих полях, представляющих идентификатор клиента. Используя тип соединения по умолчанию (называемый внутренним соединением), запрос возвращает только строки Customer и строки Order, в которых общие поля (также называемые объединенными полями) равны.

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

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

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

Задайте тип соединения
  1. В диалоговом окне Изменить отношения щелкните Тип соединения .

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

  2. Щелкните по своему выбору, а затем щелкните ОК .

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

Выбор

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

Стол левый

Стол правый

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

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

Соответствующие строки

Соответствующие строки

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

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

Все строки

Соответствующие строки

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

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

Соответствующие строки

Все строки

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

Внесите изменения в диалоговое окно «Свойства соединения»

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

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

    Все таблицы, имеющие отношения, отображаются с линиями отношений.Обратите внимание, что скрытые таблицы (таблицы, для которых установлен флажок Hidden в диалоговом окне Properties таблицы) и их связи не будут отображаться, если в диалоговом окне Navigation Options не выбран параметр Show Hidden Objects.

  3. Щелкните линию отношения для отношения, которое вы хотите изменить. При выборе линия связи выглядит толще.

  4. Дважды щелкните линию связи.Откроется диалоговое окно Изменить отношения .

  5. Щелкните Тип соединения .

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

  7. Внесите любые дополнительные изменения в отношение, а затем нажмите ОК .

Верх страницы

Обеспечить ссылочную целостность

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

Включение или отключение ссылочной целостности

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

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

    Отображаются все таблицы со связями, показывающие линии связи. Обратите внимание, что скрытые таблицы (таблицы, для которых установлен флажок Hidden в диалоговом окне Properties таблицы) и их связи не будут отображаться, если в диалоговом окне Navigation Options не выбран параметр Show Hidden Objects.

  3. Щелкните линию отношения для отношения, которое вы хотите изменить.При выборе линия связи выглядит толще.

  4. Дважды щелкните линию связи. Откроется диалоговое окно Изменить отношения .

  5. Установите или снимите флажок Обеспечить ссылочную целостность .

  6. Внесите любые дополнительные изменения в отношение, а затем нажмите ОК .

Если вы применяете ссылочную целостность, применяются следующие правила:

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

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

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

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

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

    • Общие поля должны иметь один и тот же тип данных. Единственным исключением является то, что поле AutoNumber может быть связано с полем Number, для которого значение свойства FieldSize равно Long Integer .

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

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

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

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

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

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

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

    Отображаются все таблицы со связями, показывающие линии связи. Обратите внимание, что скрытые таблицы (таблицы, для которых установлен флажок Hidden в диалоговом окне Properties таблицы) и их связи не будут отображаться, если в диалоговом окне Navigation Options не выбран параметр Show Hidden Objects.

  3. Щелкните линию отношения для отношения, которое вы хотите изменить.При выборе линия связи выглядит толще.

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

    Откроется диалоговое окно Редактировать отношения .

  5. Установите флажок Обеспечить ссылочную целостность .

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

  7. Внесите любые дополнительные изменения в отношение, а затем нажмите ОК .

Примечание: Если первичным ключом является поле AutoNumber, установка флажка Cascade Update Related Fields не будет иметь никакого эффекта, поскольку вы не можете изменить значение в поле AutoNumber.

Верх страницы

Удалить связь таблицы

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

Чтобы удалить связь таблицы, необходимо удалить строку связи в окне "Связи". Установите курсор так, чтобы он указывал на линию связи, а затем щелкните эту линию. При выборе линия связи выглядит толще. Выделив линию связи, нажмите УДАЛИТЬ.

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

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

    Отображаются все таблицы со связями, показывающие линии связи. Обратите внимание, что скрытые таблицы (таблицы, для которых установлен флажок Hidden в диалоговом окне Properties таблицы) и их связи не будут отображаться, если в диалоговом окне Navigation Options не выбран параметр Show Hidden Objects.

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

  4. Нажмите клавишу УДАЛИТЬ.

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

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

Верх страницы

Существуют важные различия при работе со связями в веб-приложении Access.

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

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

Вот как создать поле поиска в веб-приложении Access:

  1. Откройте таблицу, в которой вы хотите создать новое поле поиска, дважды щелкнув ее в области навигации. (Подсказка: вам может потребоваться щелкнуть Home > Navigation Pane , чтобы увидеть доступные таблицы.)

    В приведенном выше примере щелкните таблицу Сотрудники .

  2. Щелкните столбец Имя поля чуть ниже последнего поля в таблице и введите имя для нового поля поиска.

    В этом примере введите Регион в качестве имени поля.

  3. В столбце Тип данных щелкните стрелку и выберите Поиск .

    Мастер поиска запускается.

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

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

    В примере выберите Таблица: регионы .

    (Названия таблиц на изображении соответствуют используемому нами примеру)

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

    В этом примере вы оставите выбранное поле Заголовок в качестве отображаемого значения.

  7. Используйте Вы хотите отсортировать элементы в вашем списке поиска , чтобы установить сортировку, если хотите.

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

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

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

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

  2. Выберите поле, которое получает значения из другой таблицы.

  3. На вкладке Design в разделе Инструменты для таблиц щелкните Изменить поиск .

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

    • Поле, являющееся источником значений

    • Порядок сортировки значений

    • Ширина поля и необходимость скрытия ключевого столбца

    • Метка для поля поиска

    • Включена ли целостность данных

    • Если включена целостность данных, независимо от того, выполняется ли удаление каскадом или ограничено

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

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

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

  3. На вкладке Design в разделе Работа с таблицами щелкните Удалить поля .

  4. Access отображает сообщение Вы хотите окончательно удалить выбранные поля и все данные в этих полях? Щелкните Да , чтобы подтвердить удаление поля поиска и его данных.

    Примечание. Access также может предложить вам удалить один или несколько индексов при удалении поля поиска.Если появится это подтверждающее сообщение, нажмите Да .

  5. Нажмите Сохранить , чтобы сохранить изменения дизайна таблицы.

Верх страницы

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

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

  1. Откройте таблицу, значения которой должны быть получены из другой таблицы.

  2. Справа от последнего поля щелкните Щелкните, чтобы добавить , а затем щелкните Поиск и связь .

    Примечание: Возможно, вам потребуется прокрутить по горизонтали, чтобы увидеть Нажмите, чтобы добавить .

  3. На первом экране мастера поиска выберите Я хочу, чтобы поле поиска получало значения из другой таблицы , а затем щелкните Далее .

  4. Выберите таблицу с исходными значениями и нажмите Далее .

  5. В поле Доступные поля дважды щелкните поле, содержащее исходные значения, а затем щелкните Далее .

  6. При желании укажите порядок сортировки для поля поиска. Щелкните Далее .

  7. При желании отрегулируйте ширину поля поиска - хорошая идея, если значения длинные.Щелкните Далее .

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

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

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

      Примечание: Не выбирайте Разрешить несколько значений в мастере поиска, когда вы используете мастер для создания отношения.

  1. Откройте таблицу, которая получает значения из другой таблицы.

  2. Выберите поле, которое получает значения из другой таблицы.

  3. На вкладке Поля в группе Свойства щелкните Изменить поиск .

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

    • Поле, являющееся источником значений

    • Порядок сортировки значений

    • Ширина поля и необходимость скрытия ключевого столбца

    • Метка для поля поиска

    • Включена ли целостность данных

    • Если включена целостность данных, независимо от того, выполняется ли удаление каскадом или ограничено

Верх страницы

См. Также

Добавить поле поиска в таблицу

Что такое окно "Отношения"?

Сравните две таблицы в Access и найдите только совпадающие данные

Руководство по отношениям таблиц - Access

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

В этой статье

Введение

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

1. Информация в этой форме взята из таблицы «Клиенты» ...

2. ... таблица заказов ...

3. ... таблица "Товары"...

4. ... и таблица "Сведения о заказе".

Имя клиента в поле Счет на извлекается из таблицы «Клиенты», значения идентификатора заказа и даты заказа берутся из таблицы «Заказы», ​​имя продукта берется из таблицы «Продукты», а значения цены за единицу и количества берутся из таблица "Детали заказа". Эти таблицы связаны друг с другом различными способами, чтобы переносить информацию из каждой в форму.

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

1. EmployeeID отображается в обеих таблицах - как первичный ключ ...

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

Верх страницы

Типы связей таблиц

В Access есть три типа отношений таблиц.

  • Отношение "один ко многим"

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

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

  • Отношение "многие ко многим"

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

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

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

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

Верх страницы

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

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

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

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

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

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

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

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

Верх страницы

Понимание ссылочной целостности

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

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

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

Вы обеспечиваете ссылочную целостность, включив ее для связи между таблицами.После принудительного применения Access отклоняет любую операцию, которая нарушает ссылочную целостность этой связи между таблицами. Это означает, что Access отклонит как обновления, которые изменяют цель ссылки, так и удаления, которые удаляют цель ссылки. Возможно, вам совершенно необходимо изменить первичный ключ для грузоотправителя, у которого есть заказы в таблице заказов. В таких случаях вам действительно нужно, чтобы Access автоматически обновлял все обработанные строки как часть одной операции.Таким образом, Access гарантирует, что обновление завершено полностью, и ваша база данных не останется в несогласованном состоянии, при этом некоторые строки будут обновлены, а некоторые нет. По этой причине Access поддерживает параметр Каскадное обновление связанных полей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Update Related Fields , а затем обновляете первичный ключ, Access автоматически обновляет все поля, которые ссылаются на первичный ключ.

Также возможно, что у вас может быть действительная необходимость удалить строку и все связанные записи - например, запись отправителя и все связанные заказы для этого отправителя.По этой причине Access поддерживает опцию Каскадное удаление связанных записей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Delete Related Records , а затем удаляете запись на стороне первичного ключа связи, Access автоматически удаляет все записи, которые ссылаются на первичный ключ.

Верх страницы

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

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

Откройте окно отношений

  1. Щелкните Файл , щелкните Открыть , а затем выберите и откройте базу данных.

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

  3. На вкладке Design в группе Взаимосвязи щелкните Все взаимосвязи .

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

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

Когда активно окно «Связи», вы можете выбрать одну из следующих команд на ленте:

На вкладке Design в группе Инструменты :

  • Редактировать отношения Открывает диалоговое окно Редактировать отношения . Когда вы выбираете строку отношения, вы можете нажать Изменить отношения , чтобы изменить отношение таблицы. Вы также можете дважды щелкнуть линию связи.

  • Очистить макет Удаляет все таблицы и связи из окна «Связи». Обратите внимание, что эта команда скрывает только таблицы и связи - она ​​не удаляет их.

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

На вкладке Модель в группе Взаимосвязи :

  • Добавить таблицы (Показать таблицу в Access 2013 Позволяет выбрать таблицы для отображения в окне «Связи».

  • Скрыть таблицу Скрывает выбранную таблицу в окне «Связи».

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

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

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

Верх страницы

Руководство по отношениям таблиц - Access

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

В этой статье

Введение

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

1. Информация в этой форме взята из таблицы «Клиенты» ...

2. ... таблица заказов ...

3. ... таблица товаров ...

4. ... и таблица "Сведения о заказе".

Имя клиента в поле Счет на извлекается из таблицы «Клиенты», значения идентификатора заказа и даты заказа берутся из таблицы «Заказы», ​​имя продукта берется из таблицы «Продукты», а значения цены за единицу и количества берутся из таблица "Детали заказа".Эти таблицы связаны друг с другом различными способами, чтобы переносить информацию из каждой в форму.

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

1. EmployeeID отображается в обеих таблицах - как первичный ключ ...

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

Верх страницы

Типы связей таблиц

В Access есть три типа отношений таблиц.

  • Отношение "один ко многим"

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

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

  • Отношение "многие ко многим"

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

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

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

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

Верх страницы

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

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

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

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

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

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

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

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

Верх страницы

Понимание ссылочной целостности

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

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

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

Вы обеспечиваете ссылочную целостность, включив ее для связи между таблицами.После принудительного применения Access отклоняет любую операцию, которая нарушает ссылочную целостность этой связи между таблицами. Это означает, что Access отклонит как обновления, которые изменяют цель ссылки, так и удаления, которые удаляют цель ссылки. Возможно, вам совершенно необходимо изменить первичный ключ для грузоотправителя, у которого есть заказы в таблице заказов. В таких случаях вам действительно нужно, чтобы Access автоматически обновлял все обработанные строки как часть одной операции.Таким образом, Access гарантирует, что обновление завершено полностью, и ваша база данных не останется в несогласованном состоянии, при этом некоторые строки будут обновлены, а некоторые нет. По этой причине Access поддерживает параметр Каскадное обновление связанных полей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Update Related Fields , а затем обновляете первичный ключ, Access автоматически обновляет все поля, которые ссылаются на первичный ключ.

Также возможно, что у вас может быть действительная необходимость удалить строку и все связанные записи - например, запись отправителя и все связанные заказы для этого отправителя.По этой причине Access поддерживает опцию Каскадное удаление связанных записей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Delete Related Records , а затем удаляете запись на стороне первичного ключа связи, Access автоматически удаляет все записи, которые ссылаются на первичный ключ.

Верх страницы

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

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

Откройте окно отношений

  1. Щелкните Файл , щелкните Открыть , а затем выберите и откройте базу данных.

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

  3. На вкладке Design в группе Взаимосвязи щелкните Все взаимосвязи .

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

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

Когда активно окно «Связи», вы можете выбрать одну из следующих команд на ленте:

На вкладке Design в группе Инструменты :

  • Редактировать отношения Открывает диалоговое окно Редактировать отношения . Когда вы выбираете строку отношения, вы можете нажать Изменить отношения , чтобы изменить отношение таблицы. Вы также можете дважды щелкнуть линию связи.

  • Очистить макет Удаляет все таблицы и связи из окна «Связи». Обратите внимание, что эта команда скрывает только таблицы и связи - она ​​не удаляет их.

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

На вкладке Модель в группе Взаимосвязи :

  • Добавить таблицы (Показать таблицу в Access 2013 Позволяет выбрать таблицы для отображения в окне «Связи».

  • Скрыть таблицу Скрывает выбранную таблицу в окне «Связи».

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

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

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

Верх страницы

Руководство по отношениям таблиц - Access

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

В этой статье

Введение

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

1. Информация в этой форме взята из таблицы «Клиенты» ...

2. ... таблица заказов ...

3. ... таблица товаров ...

4. ... и таблица "Сведения о заказе".

Имя клиента в поле Счет на извлекается из таблицы «Клиенты», значения идентификатора заказа и даты заказа берутся из таблицы «Заказы», ​​имя продукта берется из таблицы «Продукты», а значения цены за единицу и количества берутся из таблица "Детали заказа".Эти таблицы связаны друг с другом различными способами, чтобы переносить информацию из каждой в форму.

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

1. EmployeeID отображается в обеих таблицах - как первичный ключ ...

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

Верх страницы

Типы связей таблиц

В Access есть три типа отношений таблиц.

  • Отношение "один ко многим"

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

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

  • Отношение "многие ко многим"

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

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

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

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

Верх страницы

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

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

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

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

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

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

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

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

Верх страницы

Понимание ссылочной целостности

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

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

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

Вы обеспечиваете ссылочную целостность, включив ее для связи между таблицами.После принудительного применения Access отклоняет любую операцию, которая нарушает ссылочную целостность этой связи между таблицами. Это означает, что Access отклонит как обновления, которые изменяют цель ссылки, так и удаления, которые удаляют цель ссылки. Возможно, вам совершенно необходимо изменить первичный ключ для грузоотправителя, у которого есть заказы в таблице заказов. В таких случаях вам действительно нужно, чтобы Access автоматически обновлял все обработанные строки как часть одной операции.Таким образом, Access гарантирует, что обновление завершено полностью, и ваша база данных не останется в несогласованном состоянии, при этом некоторые строки будут обновлены, а некоторые нет. По этой причине Access поддерживает параметр Каскадное обновление связанных полей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Update Related Fields , а затем обновляете первичный ключ, Access автоматически обновляет все поля, которые ссылаются на первичный ключ.

Также возможно, что у вас может быть действительная необходимость удалить строку и все связанные записи - например, запись отправителя и все связанные заказы для этого отправителя.По этой причине Access поддерживает опцию Каскадное удаление связанных записей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Delete Related Records , а затем удаляете запись на стороне первичного ключа связи, Access автоматически удаляет все записи, которые ссылаются на первичный ключ.

Верх страницы

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

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

Откройте окно отношений

  1. Щелкните Файл , щелкните Открыть , а затем выберите и откройте базу данных.

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

  3. На вкладке Design в группе Взаимосвязи щелкните Все взаимосвязи .

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

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

Когда активно окно «Связи», вы можете выбрать одну из следующих команд на ленте:

На вкладке Design в группе Инструменты :

  • Редактировать отношения Открывает диалоговое окно Редактировать отношения . Когда вы выбираете строку отношения, вы можете нажать Изменить отношения , чтобы изменить отношение таблицы. Вы также можете дважды щелкнуть линию связи.

  • Очистить макет Удаляет все таблицы и связи из окна «Связи». Обратите внимание, что эта команда скрывает только таблицы и связи - она ​​не удаляет их.

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

На вкладке Модель в группе Взаимосвязи :

  • Добавить таблицы (Показать таблицу в Access 2013 Позволяет выбрать таблицы для отображения в окне «Связи».

  • Скрыть таблицу Скрывает выбранную таблицу в окне «Связи».

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

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

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

Верх страницы

Руководство по отношениям таблиц - Access

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

В этой статье

Введение

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

1. Информация в этой форме взята из таблицы «Клиенты» ...

2. ... таблица заказов ...

3. ... таблица товаров ...

4. ... и таблица "Сведения о заказе".

Имя клиента в поле Счет на извлекается из таблицы «Клиенты», значения идентификатора заказа и даты заказа берутся из таблицы «Заказы», ​​имя продукта берется из таблицы «Продукты», а значения цены за единицу и количества берутся из таблица "Детали заказа".Эти таблицы связаны друг с другом различными способами, чтобы переносить информацию из каждой в форму.

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

1. EmployeeID отображается в обеих таблицах - как первичный ключ ...

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

Верх страницы

Типы связей таблиц

В Access есть три типа отношений таблиц.

  • Отношение "один ко многим"

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

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

  • Отношение "многие ко многим"

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

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

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

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

Верх страницы

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

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

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

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

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

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

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

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

Верх страницы

Понимание ссылочной целостности

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

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

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

Вы обеспечиваете ссылочную целостность, включив ее для связи между таблицами.После принудительного применения Access отклоняет любую операцию, которая нарушает ссылочную целостность этой связи между таблицами. Это означает, что Access отклонит как обновления, которые изменяют цель ссылки, так и удаления, которые удаляют цель ссылки. Возможно, вам совершенно необходимо изменить первичный ключ для грузоотправителя, у которого есть заказы в таблице заказов. В таких случаях вам действительно нужно, чтобы Access автоматически обновлял все обработанные строки как часть одной операции.Таким образом, Access гарантирует, что обновление завершено полностью, и ваша база данных не останется в несогласованном состоянии, при этом некоторые строки будут обновлены, а некоторые нет. По этой причине Access поддерживает параметр Каскадное обновление связанных полей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Update Related Fields , а затем обновляете первичный ключ, Access автоматически обновляет все поля, которые ссылаются на первичный ключ.

Также возможно, что у вас может быть действительная необходимость удалить строку и все связанные записи - например, запись отправителя и все связанные заказы для этого отправителя.По этой причине Access поддерживает опцию Каскадное удаление связанных записей . Когда вы применяете ссылочную целостность и выбираете опцию Cascade Delete Related Records , а затем удаляете запись на стороне первичного ключа связи, Access автоматически удаляет все записи, которые ссылаются на первичный ключ.

Верх страницы

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

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

Откройте окно отношений

  1. Щелкните Файл , щелкните Открыть , а затем выберите и откройте базу данных.

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

  3. На вкладке Design в группе Взаимосвязи щелкните Все взаимосвязи .

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

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

Когда активно окно «Связи», вы можете выбрать одну из следующих команд на ленте:

На вкладке Design в группе Инструменты :

  • Редактировать отношения Открывает диалоговое окно Редактировать отношения . Когда вы выбираете строку отношения, вы можете нажать Изменить отношения , чтобы изменить отношение таблицы. Вы также можете дважды щелкнуть линию связи.

  • Очистить макет Удаляет все таблицы и связи из окна «Связи». Обратите внимание, что эта команда скрывает только таблицы и связи - она ​​не удаляет их.

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

На вкладке Модель в группе Взаимосвязи :

  • Добавить таблицы (Показать таблицу в Access 2013 Позволяет выбрать таблицы для отображения в окне «Связи».

  • Скрыть таблицу Скрывает выбранную таблицу в окне «Связи».

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

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

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

Верх страницы

Отношения между таблицами - Основы Microsoft Access

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

Создание отношений «один ко многим» между таблицами

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

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

Мы рассмотрим простой способ сделать каждое из этих действий:

  1. Использование таблицы для предоставления значений поиска в поле в другой таблице (ПРИМЕЧАНИЕ: первые два шага предполагают, что таблица, из которой вы хотите извлечь значения, еще не существует)
    1. Перейдите на вкладку «Создать» на панели инструментов в верхней части окна Access и выберите «Таблица» в строке вариантов, которая отображается под вкладкой.
    2. Перейдите в представление «Дизайн» (используйте раскрывающееся меню «Просмотр» в левом верхнем углу) и сохраните таблицу, присвоив ей имя для типа элементов, которые вы хотите включить в свой список поиска (в приведенном выше примере книги это будет «Поставщики»). . Затем добавьте дополнительное поле (вы сохраните поле идентификатора), которое будет содержать ваши значения поиска. Снова сохраните новую таблицу, а затем добавьте элементы, которые вы хотите разместить в столбце подстановки исходной таблицы в представлении таблицы новой таблицы.
    3. Вернитесь к просмотру дизайна исходной таблицы.Выберите «Мастер поиска» в качестве типа данных поля, для которого вы хотите создать список.
    4. Откроется диалоговое окно мастера поиска. На первом экране вам будет предложено выбрать, хотите ли вы, чтобы столбец подстановки выполнял поиск значений в таблице или запросе, или вы хотите ввести эти значения в себя. Выберите первый вариант, затем нажмите «Далее».
    5. Мастер поиска спросит вас, какая таблица или запрос предоставит ваши значения. Выберите только что созданную таблицу и нажмите «Далее».”
    6. Затем вас спросят, какие поля использовать для значений поиска. Выберите поле, которое вы добавили в новую таблицу (в данном примере поле «Краткий текст« Поставщики »), дважды щелкнув имя поля. Нажмите "Далее."
    7. На этом экране вам будет предложено указать порядок сортировки элементов в поле со списком. Выберите поле, которое вы выбрали на предыдущем экране, из первого раскрывающегося меню и отсортируйте их в порядке возрастания (это значение по умолчанию). Нажмите "Далее.”
    8. Следующий экран дает вам возможность установить ширину ваших столбцов. Щелкните и перетащите правый край видимого столбца образца, чтобы настроить столбцы на желаемую ширину. Не снимайте флажок «Скрыть ключевой столбец». Нажмите "Далее."
    9. Последний экран дает вам возможность изменить метку для столбца подстановки (обычно в этом нет необходимости). На этом экране также появится флажок с вопросом, следует ли «Обеспечивать ссылочную целостность». Если вы установите этот флажок, Access не позволит вам удалить что-либо на «одной» стороне ваших отношений, что включено в какие-либо записи в других таблицах.Для этого типа использования, вероятно, было бы полезно проверить это, но не обязательно. По завершении нажмите «Далее».
    10. Вы вернетесь в режим «Дизайн». Теперь вы можете сохранить таблицу и вернуться в режим таблицы. Поле, для которого вы настроили значения подстановки, теперь должно иметь поля со списком, отображающие значения из второй таблицы.
  2. Использование второй таблицы для предоставления подмножества данных вашей первой. (Мы будем использовать предыдущий пример заказа видео. Цель состоит в том, чтобы для каждого заказа было несколько заголовков.)
    1. Нам понадобятся отдельные таблицы для заказов и для названий. Вот примеры того, как каждый из них может выглядеть в представлении «Дизайн»:

    2. Затем нам нужно будет найти общий атрибут, чтобы связать их. Поскольку каждый заказ видео имеет уникальное значение идентификатора и каждая запись заголовка будет частью определенного заказа, лучше всего начать с поля идентификатора в нашей таблице заказов видео.
    3. Чтобы связать две таблицы по значению идентификатора заказов на видео, нам нужно иметь поле, которое может ссылаться на это значение непосредственно во второй таблице.Мы можем сделать это, добавив новое поле в таблицу «Заголовки» под названием «ID заказа видео». Поскольку исходный тип данных является числовым, он также должен быть числовым. (ПРИМЕЧАНИЕ: это будет считаться «внешним ключом», поскольку он ссылается на первичный ключ другой таблицы.)
    4. Теперь нам нужно создать связь между двумя таблицами, чтобы Access распознал, что они связаны. Сохраните и закройте обе таблицы, выберите вкладку «Инструменты базы данных» в меню в верхней части окна Access, затем выберите значок «Связи» на ленте ниже.Вы должны получить всплывающее окно с просьбой выбрать, какие таблицы отображать. Добавьте таблицы «Заказы на видео» и «Заголовки». Вы получите такое окно:
    5. Чтобы установить взаимосвязь, щелкните поле «ID» в таблице «Заказы на видео» и перетащите его в поле «ID заказа видео» в таблице «Заголовки». Вы получите диалоговое окно, которое выглядит следующим образом:
    6. Access автоматически создаст связь «один ко многим» между двумя полями. Он также предложит вам флажок с вопросом, следует ли «Обеспечивать ссылочную целостность».«Для чего-то вроде списка порядка видео, где один список полностью зависит от другого, вы захотите проверить это. Таким образом, если вы попытаетесь удалить или изменить что-то, что является частью отношений, Access предупредит вас об этом.

После того, как связь установлена ​​и сохранена, вы можете повторно открыть форму на стороне «один» вашего отношения «один ко многим», и вы увидите знак «+» рядом с каждой записью:

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

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

Access 2016: создание отношений

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

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

Отношение состоит из родительской и дочерней таблиц. Дочерняя таблица ссылается на родительскую таблицу, имея поле, которое соответствует полю в родительской таблице. Дочернее поле называется внешним ключом . Родительское поле - это первичный ключ .

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

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

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

  1. Откройте диалоговое окно отношений

    Щелкните Отношения на вкладке Инструменты базы данных на ленте.

    Должно появиться диалоговое окно Показать таблицы .Если он не появляется, щелкните Показать таблицы .

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

    Если у вас ранее созданное отношение, вместо него появятся текущие отношения.

  2. Выберите таблицы

    Выберите в списке таблицы Artists и Albums и нажмите Добавить .

    Нажмите Закрыть , чтобы закрыть диалоговое окно.

  3. Создание отношения

    Щелкните и перетащите поле Albums.ArtistId на поле Artists.ArtistId и отпустите.

    Откроется диалоговое окно Редактировать отношения .

  4. Изменить отношение

    Проверьте Обеспечить ссылочную целостность и нажмите Создать .

    Параметр Enforce Referential Integrity гарантирует, что дочерние записи не могут ссылаться на несуществующий родительский элемент.

    Таким образом, если пользователь попытается войти в альбом с ArtistId , которого нет в таблице Artists , Access помешает ему это сделать.

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

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

  5. Отношения

    Появится диаграмма, представляющая взаимосвязь.

    Сохраните связь, нажав Ctrl + S , щелкнув вкладку правой кнопкой мыши и выбрав Сохранить или щелкнув значок X , чтобы закрыть связь.

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

Типы отношений

Есть три типа отношений:

Один к одному
Строка в таблице A может иметь только одну совпадающую строку в таблице B, и наоборот.
Один ко многим (или многие к одному)
Строка в таблице A может иметь много совпадающих строк в таблице B, но строка в таблице B может иметь только одну совпадающую строку в таблице A.

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

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