Проверьте, как это работает!
Главное достоинство реляционных баз данных заключается в возможности использовать информацию из разных таблиц. Для этого сначала требуется создать между ними связи. После этого вы сможете объединять эти данные в запросах, формах и отчетах.
Чтобы увидеть все связи в базе данных, откройте шаблон Access, а затем на вкладке Работа с базами данных нажмите кнопку Схема данных.
Примечание: Если вы открыли пустую базу данных или не еще не создали связей между таблицами, в Access вам будет предложено добавить таблицу или запрос. Для создания связи у вас должны быть хотя бы две таблицы. Лучше всего сразу создать все нужные таблицы. Дополнительные сведения см. в статьях Создание связей с помощью мастера подстановок и Создание связей в области "Схема данных".
Описание области "Схема данных"
Линии в представлении "Отношения" указывают на связи между таблицами. На рисунке ниже таблица слева является родительской. Таблица справа является детской. Линия между ними соединяет поля (в данном случае — "ИД заказа" и "ИД товара"), используемые для совпадения данных.
По линиям и символам можно определить параметры связи.
-
Толстая соединительная линия означает, что включено обеспечение целостности данных. Это хорошо. Данные будут синхронизироваться.
-
На приведенном изображении цифра 1 означает, что в таблице слева может быть только одна связанная запись. В таблице "Заказы" каждому заказу может соответствовать только одна запись.
-
Значок "∞" означает, что в нескольких записях может быть указан одинаковый номер или код. Заказ из таблицы слева, определяемый номером заказа, может быть указан в таблице "Сведения о заказах" несколько раз, поскольку в одном заказе может быть несколько продуктов.
Виды связей между таблицами
Между таблицами могут быть установлены связи трех видов:
-
Один-к-одному. Каждый элемент используется в каждой таблице только один раз. Например, каждый сотрудник может использовать только один служебный автомобиль. Дополнительные сведения см. в статье Создание связей типа "один-к-одному".
-
Один-ко-многим. Для одного элемента из первой таблицы можно создать связь с несколькими элементами из второй таблицы. Например, в каждой накладной может быть указано несколько продуктов.
-
Многие-ко-многим. Для одного или нескольких элементов из первой таблицы можно создать связь с одним или несколькими элементами из второй таблицы. Например, в каждый заказ может входить несколько продуктов, и каждый продукт может быть указан в нескольких заказах. Дополнительные сведения см. в статье Создание связей типа "многие-ко-многим".
Связи типа «один ко многим»
Связи типа "один-ко-многим" — одни из наиболее распространенных в хорошо структурированных базах данных.
Связи между таблицами обычно определяются первичным ключом в одной из них. Первичный ключ служит уникальным идентификатором каждой записи (часто числовым). Чтобы показать, что сведения в двух таблицах связаны, с помощью первичного ключа обычно создается связь, исходящая из одной таблицы.
В показанной ниже связи у каждого человека из таблицы "Контакты" есть идентификатор, представляющий собой первичный ключ (он отмечен значком ключа). Этот идентификатор также используется в поле "Владелец" в таблице "Активы". Чтобы написать электронное письмо человеку, связанному с активом, следует использовать значение поля "Адрес электронной почты". Для этого необходимо узнать значение поля "Владелец" из таблицы "Активы", а затем найти этот идентификатор в таблице "Контакты". Число 1 на одном конце соединительной линии и знак "∞" на другом означают, что это связь типа "один-ко-многим", поэтому один контакт может быть связан с несколькими активами.
Изменение связи
Если вы работаете с существующей базой данных или создали базу из шаблона, вы можете изменить связь нужным образом.
Примечание: Если необходимые таблицы открыты, сначала следует закрыть их, а также любые открытые объекты, которые их используют.
-
Выберите Работа с базами данных > Схема данных.
-
Выберите линию, соединяющую две связанные таблицы.
Совет: Если необходимая связь отсутствует, на вкладке Конструктор в группе Связи нажмите кнопку Все связи.
-
На вкладке Конструктор нажмите кнопку Изменить связи.
Таблица/запрос — это родительская таблица, указанная слева (в рассмотренном примере — «Клиенты»).
Связанная таблица/запрос — это дочерняя таблица (в рассмотренном примере — «Заказы»).
Даже если в области "Схема данных" таблицы расположены в другом порядке, их размещение в показанном диалоговом окне определяет направление соединительной линии между ними и, соответственно, направление связи. Это важно, например, для связей типа "один-ко-многим", потому что в таблице слева (родительской) в таком случае может быть связано только одно поле, а в таблице справа (дочерней) — несколько.
-
Чтобы изменить соединенные поля, выберите другое поле под каждой отображаемой таблицей. В рассмотренном примере поле "Код" из таблицы "Клиенты" соединяется с полем "Код клиента" из таблицы "Заказы".
-
Настройте синхронизацию данных между таблицами.
Обеспечение целостности данных
Выберите этот пункт, чтобы избежать ошибок в данных и поддерживать синхронизацию сведений с помощью связи.
Например, предположим, что у вас есть связь типа "один-к-одному" между таблицами "Сотрудники" и "Льготы сотрудников". Если сотрудник уволится и вы удалите его из таблицы "Сотрудники", соответствующая запись в таблице "Льготы сотрудников" тоже удалится.
Иногда не имеет смысла применять обеспечение целостности данных. Предположим, у вас есть связь "один-к-многим" между "Грузоотправителями" и "Заказы". Вы удаляете грузоотправителя, и он сопопосывается с заказами в таблице "Заказы". Эти заказы становятся потерянными, то есть по-прежнему содержат ИД грузоотправителя, но он не является допустимым, так как запись, на которую он ссылается, больше не существует.
Каскадное обновление связанных полей
Установите этот флажок, чтобы данные в связанных полях обновлялись во всех связанных таблицах.
Предположим, вам нужно просто изменить код поставщика. Если у вас установлен этот флажок, код поставщика обновится не только в таблице "Поставщики", но и в других связанных с ней таблицах, в которых также используется это значение кода (например, в таблице "Заказы").
Каскадное удаление связанных записей
Установите этот флажок, если при удалении записей вам требуется удалять и связанные записи из других таблиц.
Предположим, вы удалили грузоотправителя. Если выбран этот параметр, Access удаляет все записи во всех таблицах, ссылаясь на этот ИД грузоотправителя, включая все заказы (в таблице "Заказы"), отправленные этим грузоотправии. Этот параметр можно выбрать только в том случае, если вы уверены, что хотите удалить историю заказов.
-
Чтобы изменить связь между таблицами с внутреннего соединения на внешнее, нажмите кнопку Объединение. Дополнительные сведения см. в статье Создание запросов с внешними соединениями.
Удаление отношения между таблицами
Примечание: Если необходимые таблицы открыты, сначала следует закрыть их, а также любые открытые объекты, которые их используют.
Удаление связи между таблицами
-
Выберите Работа с базами данных > Схема данных.
-
Выберите линию, соединяющую две связанные таблицы.
Совет: Если необходимая связь отсутствует, на вкладке Конструктор в группе Связи нажмите кнопку Все связи.
-
Нажмите клавишу DELETE. Если потребуется подтвердить удаление, нажмите кнопку Да.
Примечание: При удалении связи для нее также отключается обеспечение целостности данных, если оно было включено. В результате Access больше не будет предотвращать изменения, ведущие к появлению неполных записей со стороны многих записей в связи типа "один-ко-многим".