Отношение в Access позволяет объединить данные из двух разных таблиц. Каждое отношение состоит из двух полей (по одному в каждой таблице) со связанными данными. Например, таблицы «Товары» и «Сведения о заказах» могут содержать поле «КодТовара». Каждая запись в таблице «Сведения о заказах» содержит значение поля «КодТовара», которому соответствует запись в таблице «Товары» с тем же значением в данном поле.
При помощи отношений между связанными таблицами приложение Access определяет, какие записи из каждой таблицы поместить в набор результатов запроса. Отношение также позволяет избежать потери данных, препятствуя исключению удаленных данных из синхронизации. Это называется целостностью данных.
Перед началом работы с отношениями изучите основные понятия. Дополнительные сведения о см. в статьях Руководство по связям между таблицами и Начало работы со связями между таблицами.
В этой статье
-
Обзор
-
Создание отношения между таблицами с помощью окна отношений
-
Создание отношения между таблицами с помощью панели списка полей
-
Изменение отношения
-
Обеспечение целостности данных
-
Удаление отношения между таблицами
-
Создание, изменение и удаление отношения в веб-приложении
-
Создание или изменение отношения в веб-базе данных Access 2010
Обзор
Чтобы создать отношение в базе данных Access, можно воспользоваться одним из указанных ниже методов.
-
В окне «Схема данных» добавьте таблицы, которые требуется связать, а затем перетащите нужное поле из одной таблицы в другую.
-
Перетащите поле в таблицу из области Список полей.
При создании отношения между таблицами общие поля могут называться по-разному, однако часто требуется, чтобы эти имена совпадали. Очевидно, что общие поля должны иметь одинаковый тип данных. Однако если поле первичного ключа имеет тип «Счетчик», поле внешнего ключа также может быть числовым, если свойство Размер поля (FieldSize) обоих полей совпадает. Например, можно сопоставить поля с типами «Счетчик» и «Числовой», если свойство Размер поля обоих полей имеет значение «Длинное целое». Если оба общих поля являются числовыми, у них должно совпадать значение свойства Размер поля.
К началу страницы
Создание отношения между таблицами с помощью окна отношений
-
На вкладке Работа с базами данных в группе Отношения выберите элемент Схема данных.
-
На вкладке Конструктор в группе Связи нажмите наДобавление таблиц (илиДобавление таблицы в Access 2013).
-
Выберите одну или несколько таблиц или запросов и нажмите кнопку Добавить. После добавления таблиц и запросов на вкладку «Схема данных» нажмите кнопку Закрыть.
-
Перетащите поле (как правило, поле первичного ключа) из одной таблицы на общее поле (поле внешнего ключа) в другой таблице. Чтобы перетащить сразу несколько полей, нажмите и удерживайте клавишу CTRL, нажмите каждое поле и перетащите выделенные поля.
Откроется диалоговое окно Изменение связей.
-
Убедитесь, что имена общих полей отношения отображаются правильно. Если имя поля неправильное, щелкните его и выберите нужное поле из списка.
Чтобы обеспечить целостность данных для этой связи, установите флажок Обеспечение целостности данных. Дополнительные сведения о целостности данных см. в разделе Обеспечение целостности данных.
-
Нажмите кнопку Создать.
Будет нарисована линия связи между двумя таблицами. Если установлен флажок Обеспечение целостности данных, концы линии выглядят утолщенными. Кроме того, если установлен флажок Обеспечение целостности данных, над утолщенной частью на одном конце линии связи будет отображаться цифра 1, а на другом — символ бесконечности (∞), как показано на рисунке ниже.
Примечания:
-
Создание связи «один-к-одному» Оба общих поля (как правило, поля первичного ключа и внешнего ключа) должны иметь уникальный индекс. Это означает, что свойство Индексированное этих полей должно иметь значение Да (Совпадения не допускаются). Если оба поля имеют уникальный индекс, в Access будет создано отношение «один-к-одному».
-
Создание отношения «один-ко-многим». Поле на стороне «один» (как правило, первичный ключ) отношения должно иметь уникальный индекс. Это значит, что свойство Индексированное поле должно иметь значение Да (Совпадения не допускаются). Поле на стороне «многие» не должно иметь уникального индекса. Это поле может быть индексированным, но для него должны допускаться повторы. Это означает, что свойство Индексированное поле должно иметь значение Нет или Да (Допускаются совпадения). Когда у одного поля однозначный индекс, а у другого — нет, в приложении Access создается отношение «один-ко-многим».
-
К началу страницы
Создание отношения между таблицами с помощью панели списка полей
Добавить поле в существующую таблицу, открытую в режиме таблицы, можно путем перетаскивания этого поля из области Список полей. В области Список полей отображаются доступные поля из связанных таблиц, а также из других таблиц базы данных.
При перетаскивании поля из «другой» (несвязанной) таблицы и выполнении инструкций мастера подстановок между таблицей из области Список полей и таблицей, в которую перетаскивается поле, автоматически создается новое отношение «один-ко-многим». Это отношение, созданное Access, не обеспечивает целостность данных по умолчанию. Чтобы обеспечить целостность данных, нужно изменить отношение. Дополнительные сведения см. в разделе Изменение отношения.
Открытие таблицы в режиме таблицы
-
Дважды щелкните таблицу в области навигации.
Открытие области «Список полей»
-
Нажмите клавиши ALT+F8. Будет отображена область Список полей.
В области Список полей отображены все другие таблицы базы данных, сгруппированные по категориям. При работе с таблицей в режиме таблицы в области Список полей отображаются поля в одной из двух категорий: Доступные поля в связанной таблице и Доступные поля в другой таблице. К первой категории относятся все таблицы, связанные отношением с текущей таблицей. Во второй категории перечислены все таблицы, с которыми данная таблица не связана отношением.
Чтобы просмотреть список всех полей таблицы, щелкните знак плюс (+) рядом с именем таблицы в области Список полей. Чтобы добавить поле в таблицу, перетащите его из области Список полей в таблицу в режиме таблицы.
Добавление поля и создание связи из области «Список полей»
-
Открыв таблицу в режиме таблицы, нажмите клавиши ALT+F8. Будет отображена область Список полей.
-
Чтобы отобразить список полей в таблице, в группе Доступные поля в другой таблице щелкните знак плюс (+) рядом с именем таблицы.
-
Перетащите нужное поле из области Список полей в таблицу, открытую в режиме таблицы.
-
Когда появится линия вставки, поместите поле в выбранное место.
Появится окно мастера подстановок.
-
Следуйте инструкциям мастера подстановок.
Поле будет отображено в таблице в режиме таблицы.
При перетаскивании поля из «другой» (несвязанной) таблицы и выполнении инструкций мастера подстановок между таблицей из области Список полей и таблицей, в которую было перетаскивается поле, автоматически создается новое отношение «один-ко-многим». Это отношение, созданное Access, не обеспечивает целостность данных по умолчанию. Чтобы обеспечить целостность данных, нужно изменить отношение. Дополнительные сведения см. в разделе Изменение отношения.
К началу страницы
Изменение отношения
Чтобы изменить отношение, выберите его в окне «Схема данных» и внесите нужные изменения.
-
Установите указатель на линию связи и щелкните линию, чтобы выделить ее.
При выделении линия связи становится толще.
-
Дважды щелкните выделенную линию связи
ИЛИ
на вкладке Конструктор в группе Сервис выберите команду Изменить связи.
Откроется диалоговое окно Изменение связей.
Открытие диалогового окна «Изменение связей»
-
На вкладке Работа с базами данных в группе Отношения выберите элемент Схема данных.
-
На вкладке Конструктор в группе Связи нажмите кнопку Все связи.
Будут отображены все таблицы с отношениями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».
-
Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.
-
Дважды щелкните линию связи.
ИЛИ
На вкладке Конструктор в группе Сервис выберите команду Изменить связи.
Откроется диалоговое окно Изменение связей.
-
Внесите изменения и нажмите кнопку ОК.
В диалоговом окне Изменение связей можно изменить связи между таблицами (например, таблицы, запросы или поля на любой стороне связи). Можно также задать тип соединения или включить обеспечение целостности данных и выбрать каскадный параметр. Дополнительные сведения о типе соединения и его просмотре см. в разделе Указание типа соединения. Дополнительные сведения об обеспечении целостности данных и выборе каскадного параметра см. в разделе Обеспечение целостности данных.
Указание типа соединения
При определении отношения между таблицами сведения о нем влияют на структуру запросов. Например, при определении отношения между двумя таблицами и создании запроса, работающего с этими двумя таблицами, в Access автоматически выбираются сопоставляемые поля по умолчанию на основе полей, указанных в отношении. Эти исходные значения в запросе можно переопределить, но часто значения, определенные отношением между таблицами, являются верными. Поскольку сопоставление и объединение данных из двух таблиц являются часто воспроизводимыми действиями во всех базах данных, кроме самых простых, параметры по умолчанию, определенные отношениями между таблицами, могут быть полезны и экономить время.
С помощью запроса к нескольким таблицам можно комбинировать данные из них путем сопоставления значений в общих полях. Операция сопоставления и комбинирования называется объединением. Например, требуется отобразить заказы клиентов. Для этого создается запрос, объединяющий таблицы «Клиенты» и «Заказы» по полю «Код клиента». Результаты запроса содержат сведения о клиенте, а также другие сведения только для строк с найденным соответствующим значением.
Одно из значений, которое можно задать для каждого отношения, — это тип объединения. Тип объединения определяет, какие записи будут включены в результаты запроса. Обратимся к описанному примеру с объединением таблиц «Клиенты» и «Заказы» по общим полям, представляющим код клиента. При использовании типа объединения по умолчанию (внутреннего соединения) запрос возвращает только строки таблиц «Клиенты» и «Заказы», для которых общие поля (также называемые связанными полями) совпадают.
Предположим, что требуется включить в результаты всех клиентов — даже тех, которые еще не сделали ни одного заказа. Для этого нужно изменить тип объединения с внутреннего на так называемое левое внешнее соединение. При использовании левого внешнего соединения возвращаются все строки таблицы на левой стороне отношения и только сопоставленные строки на правой. При использовании правого внешнего соединения возвращаются все строки на правой стороне отношения и только сопоставленные — на левой.
Примечание: В этом случае термины «слева» и «справа» относятся к положению таблиц в диалоговом окне Изменение связей, а не в окне «Схема данных».
Следует определить, какие результаты наиболее часто требуются от запроса, соединяющего таблицы в конкретной связи, и в соответствии с этим выбрать тип соединения.
Указание типа соединения
-
В диалоговом окне Изменение связей нажмите кнопку Тип соединения.
Откроется диалоговое окно Параметры соединения.
-
Выберите нужные параметры и нажмите кнопку ОК.
В таблице ниже, составленной на основании таблиц «Клиенты» и «Заказы», приведены три варианта, отображаемые в окне Параметры объединения, указан используемый в них тип объединения, а также то, какие именно строки (все или только сопоставленные) возвращаются для каждой из таблиц.
|
Выбор |
Родственное объединение |
Левая таблица |
Правая таблица |
|---|---|---|---|
|
1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают. |
Внутреннее соединение |
Сопоставленные строки |
Сопоставленные строки |
|
2. Объединение ВСЕХ записей из таблицы «Клиенты» и только тех записей из таблицы «Заказы», в которых связанные поля совпадают. |
Левое внешнее соединение |
Все строки |
Сопоставленные строки |
|
3. Объединение ВСЕХ записей из таблицы «Заказы» и только тех записей из таблицы «Клиенты», в которых связанные поля совпадают. |
Правое внешнее соединение |
Сопоставленные строки |
Все строки |
При выборе варианта 2 или 3 на линии связи будет отображена стрелка, указывающая на ту сторону связи, в которой отображаются только сопоставленные строки.
Внесение изменений в окне «Параметры объединения»
-
На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
-
На вкладке Конструктор в группе Связи нажмите кнопку Все связи.
Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».
-
Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.
-
Дважды щелкните линию связи. Откроется диалоговое окно Изменение связей.
-
Нажмите кнопку Тип объединения.
-
В диалоговом окне Параметры объединения выберите нужный параметр и нажмите кнопку ОК.
-
Внесите в связь необходимые изменения и нажмите кнопку ОК.
К началу страницы
Обеспечение целостности данных
Целью обеспечения целостности данных является предотвращение появления непарных записей, ссылающихся на несуществующие записи. Обеспечение целостности данных включается для конкретного отношения между таблицами. В результате Access отменяет для этого отношения все действия, которые могут нарушить целостность данных. Это означает, что будет отменено как обновление, изменяющее целевой объект ссылки, так и удаление такого целевого объекта. Сведения о том, как настроить в Access распространение операций обновления и удаления таким образом, чтобы в результате изменялись и все связанные строки, см. в разделе Задание каскадных параметров.
Включение и отключение обеспечения целостности данных
-
На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
-
На вкладке Конструктор в группе Связи нажмите кнопку Все связи.
Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».
-
Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.
-
Дважды щелкните линию связи. Откроется диалоговое окно Изменение связей.
-
Выберите или отмените параметр Обеспечение целостности данных.
-
Внесите в отношение необходимые изменения и нажмите кнопку ОК.
В режиме обеспечения целостности данных действуют перечисленные ниже правила.
-
Не допускается ввод в поле внешнего ключа связанной таблицы значений, отсутствующих в поле первичного ключа главной таблицы, поскольку это приводит к появлению потерянных записей.
-
Не допускается удаление записи из главной таблицы, если в связанной таблице существуют связанные с ней записи. Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику. Однако можно удалить главную запись и все связанные записи одним действием, установив флажок Каскадное удаление связанных записей.
-
Не допускается изменение значения первичного ключа в главной таблице, если это приведет к появлению потерянных записей. Например, нельзя изменить номер заказа в таблице «Заказы», если в таблице «Сведения о заказах» имеются строки, относящиеся к этому заказу. Однако можно обновить главную запись и все связанные записи одним действием, установив флажок «Каскадное обновление связанных полей».
Примечания: Если при включении обеспечения целостности данных возникли трудности, обратите внимание на то, что должны выполняться условия, перечисленные ниже.
-
Общее поле главной таблицы должно быть первичным ключом или иметь уникальный индекс.
-
Общие поля должны иметь одинаковый тип данных. Единственное исключение — поле типа «Счетчик» можно связать с полем типа «Числовой», если его свойство Размер поля имеет значение Длинное целое.
-
Обе таблицы существуют в одной базе данных Access. Обеспечение целостности данных нельзя включить для присоединенных таблиц. Однако если исходные таблицы имеют формат Access, можно открыть базу данных, в которой они хранятся, и включить обеспечение целостности данных в этой базе.
-
Задание каскадных параметров
Иногда возникает ситуация, в которой требуется изменить значение только на стороне «один» отношения. В этом случае необходимо, чтобы Access автоматически обновил все затронутые строки в ходе выполнения одной операции. Тогда обновление будет полностью завершено, а база данных не будет находиться в несогласованном состоянии, когда некоторые строки обновлены, а другие — нет. Этой проблемы можно избежать с помощью параметра Access «Каскадное обновление связанных полей». Если при включении обеспечения целостности данных был включен параметр «Каскадное обновление связанных полей», то при последующем обновлении первичного ключа автоматически будут обновлены все связанные с ним поля.
Также может потребоваться удаление строки и всех связанных с ней записей — например, записи в таблице «Поставщики» и всех связанных с этим поставщиком заказов. Для этого в Access предназначен параметр «Каскадное удаление связанных записей». Если включить обеспечение целостности данных и установить флажок Каскадное удаление связанных записей, при удалении записи, содержащей первичный ключ, будут автоматически удалены все записи, связанные с этим первичным ключом.
Включение и отключение каскадного обновления и каскадного удаления
-
На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
-
На вкладке Конструктор в группе Связи нажмите кнопку Все связи.
Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».
-
Щелкните линию отношения, которое вы хотите изменить. При выделении линия связи становится толще.
-
Дважды щелкните линию связи.
Откроется диалоговое окно Изменение связей.
-
Установите флажок Обеспечение целостности данных.
-
Установите флажок Каскадное обновление связанных полей, Каскадное удаление связанных записей или оба эти флажка.
-
Внесите в отношение необходимые изменения и нажмите кнопку ОК.
Примечание: Если первичным ключом является поле «Счетчик», установка флажка Каскадное обновление связанных полей не произведет никакого эффекта, поскольку изменить значение поля «Счетчик» нельзя.
К началу страницы
Удаление отношения между таблицами
Важно: При удалении связи также отключается обеспечение целостности данных для этой связи, если оно было включено. В результате Access больше не будет автоматически предотвращать появление потерянных записей на стороне «многие» отношения.
Чтобы удалить отношение между таблицами, нужно удалить линию связи в окне «Схема данных». Установите указатель мыши на линию связи и щелкните ее. При выделении линия связи становится толще. Выделив линию связи, нажмите клавишу DEL.
-
На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
-
На вкладке Конструктор в группе Связи нажмите кнопку Все связи.
Будут отображены все таблицы со связями, а также соответствующие линии связи. Обратите внимание на то, что скрытые таблицы (таблицы, для которых установлен флажок скрытый в диалоговом окне Свойства) и их отношения не отображаются, если в диалоговом окне Параметры переходов не выбран параметр «Показывать скрытые объекты».
-
Щелкните линию связи, которую требуется удалить. При выделении линия связи становится толще.
-
Нажмите клавишу DEL
-
При этом может появиться сообщение Подтвердите удаление выделенной связи из базы данных. В этом случае нажмите кнопку Да.
Примечание: Если одна из таблиц, участвующих в отношении, в данный момент используется (возможно, третьим лицом, процессом либо в открытом объекте базы данных, например в форме), удалить отношение между таблицами будет невозможно. Перед попыткой удаления отношения между таблицами закройте все открытые объекты, использующие эти таблицы.
К началу страницы
Существуют важные отличия при работе со связями в веб-приложении Access.
В веб-приложении Access отсутствует окно «Схема данных». Вместо связи необходимо создать поле подстановки, которое получает значения из связанного поля в другой таблице. Например, предположим, что у вас есть таблица «Сотрудники» и вы хотите добавить подстановку на таблицу «Регионы», чтобы показывать регионы, в которых работают сотрудники.
Примечание: Поле, используемое в качестве источника для подстановки, должно существовать перед созданием поля подстановки.
Вот как можно создать поле подстановки в веб-приложении Access:
-
Откройте таблицу, в которой вы хотите создать поле подстановки, дважды щелкнув ее в области навигации. (Совет: вам может понадобиться выбрать Главная > Область навигации для просмотра доступных таблиц.)
Как указано в примере выше, щелкните таблицу Сотрудники.
-
Щелкните столбец Имя поля под последним полем в таблице и введите имя для нового поля подстановки.
В этом примере введите имя Регион.
-
В столбце Тип данных щелкните стрелку и выберите значение Подстановка.
Появится окно мастера подстановок.
-
На первой странице мастера подстановок выберите Получать значения из другой таблицы или запроса для поля подстановки. В диалоговом окне появятся дополнительные параметры.
-
Выберите имя таблицы или запроса, которые будут предоставлять значения для подстановки.
В этом примере выберите Таблица: Регионы.
(Имена таблиц на изображении соответствуют используемому примеру.)
-
После выбора таблицы укажите в списке Выберите значение, которое должно отображаться в поле подстановки поле, которое вы хотите использовать в качестве отображаемого значения для поля подстановки. По умолчанию Access выбирает первое текстовое поле, обнаруженное в выбранной таблице.
В этом примере в качестве отображаемого значения следует оставить выбранное поле (Название).
-
При необходимости настройте сортировку с помощью списка Отсортировать элементы в поле подстановки?.
-
В разделе Какое действие должно выполняться при удалении записи из таблицы «Регионы»? выберите тип связи между двумя таблицами и укажите, нужно ли обеспечивать целостность данных. (Имя таблицы в этом вопросе меняется в зависимости от того, какая таблица была выбрана на этапе 5.)
По умолчанию мастер подстановок использует значение Запретить удаление, если существуют соответствующие записи в таблице «Сотрудники», так как в большинстве случаев это самый безопасный вариант. В этом примере данный параметр означает, что из таблицы «Регионы» невозможно удалить значение, если оно используется в записях таблицы «Сотрудники». Таким образом, если в записях сотрудников указан регион «Запад» и вы пытаетесь удалить его из таблицы «Регионы», Access предотвратит это. В таком случае вам потребуется заменить значение «Запад» во всех записях сотрудников на что-то еще, прежде чем удалять его из таблицы «Регионы». В данном примере может подойти последний вариант, позволяющий удалить значение «Запад» из таблицы «Регионы». При этом значение «Запад» будет автоматически удалено из записей сотрудников, а вместо него останутся пустые значения. При выборе второго варианта будут удалены все записи сотрудников с регионом «Запад» из таблицы «Сотрудники». Это так называемое каскадное удаление приведет к удалению намного большего объема данных, чем требуется в примере. Будьте внимательны при выборе этого параметра.
В веб-приложении Access отсутствует окно «Схема данных». Поле в одной таблице служит источником (полем подстановки) значений для связанного поля в другой таблице.
-
Откройте таблицу, содержащую подстановку, которое нужно изменить, выбрав команду Изменить таблицу.
-
Выберите поле, в которое подставляются значения из другой таблицы.
-
На вкладке Конструктор в группе Работа с таблицами нажмите кнопку Изменить подстановки.
-
Внесите нужные изменения в соответствии с инструкциями мастера. Можно изменить следующие элементы.
-
Поле-источник значений
-
Порядок сортировки значений
-
Ширину поля и отображение ключевого столбца
-
Подпись поля подстановки
-
Включение проверки целостности данных
-
Каскадное или ограниченное удаление в случае, если включена проверка целостности данных
-
В веб-приложении Access отсутствует окно «Схема данных». Поле в одной таблице служит источником (полем подстановки) значений для связанного поля в другой таблице. Чтобы удалить связь между двумя таблицами в веб-приложении Access, необходимо удалить поле подстановки и связанные с ним данные.
-
Откройте таблицу, содержащую поле подстановки, которое нужно удалить, выбрав команду Изменить таблицу.
-
Выберите поле подстановки, в которое подставляются значения из другой таблицы веб-приложения.
-
На вкладке Конструктор в разделе Работа с таблицами нажмите кнопку Удалить поля.
-
В Access отображается сообщение Удалить выделенные поля и все содержащиеся в них данные? Нажмите кнопку Да, чтобы подтвердить удаление поля подстановки и его данных.
Примечание: При удалении поля подстановки приложение Access также может предложить вам удалить один или несколько индексов. Если такое сообщение появляется, нажмите кнопку Да.
-
Нажмите кнопку Сохранить, чтобы сохранить изменения в структуре таблиц.
К началу страницы
Чтобы создать отношение в веб-базе данных Access 2010, необходимо использовать мастер подстановок. Окно «Схема данных» отсутствует в веб-базе данных. Поле в одной таблице используется в качестве источника для значения в связанном поле другой таблицы.
Примечание: Воспользоваться мастером подстановок можно только при наличии поля, используемого в качестве источника значений.
-
Откройте таблицу, в которую будут переноситься значения из другой таблицы.
-
Справа от последнего поля нажмите кнопку Щелкните для добавления, а затем выберите пункт Подстановка и отношение.
Примечание: Для отображения кнопки Щелкните для добавления, может понадобиться прокрутить страницу по горизонтали.
-
На первом экране мастера подстановок выберите элемент Получать значения из другой таблицы для поля подстановки и нажмите кнопку Далее.
-
Выберите таблицу-источник и нажмите кнопку Далее.
-
В окне Доступные поля двойным щелчком выберите поле, содержащее нужные значения, и нажмите кнопку Далее.
-
Если нужно, определите порядок сортировки для поля подстановки. Нажмите кнопку Далее.
-
При необходимости отрегулируйте ширину окна подстановки — это удобно, если значения имеют большую длину. Нажмите кнопку Далее.
-
Введите имя для нового поля. Чтобы иметь полную уверенность в том, что данные в двух таблицах всегда совпадают, установите флажок Включить проверку целостности данных, а затем выберите одну из перечисленных ниже функций.
-
Каскадное удаление позволяет при удалении записи в одной таблице удалять соответствующую запись в другой.
-
Ограниченное удаление не разрешает удалить запись из таблицы, если она связана с записью в другой таблице.
Примечание: Не выбирайте элемент Разрешить несколько значений в мастере подстановок, если он используется для создания отношения.
-
-
Откройте таблицу, в которую подставляются значения из другой таблицы.
-
Выберите поле, в которое подставляются значения из другой таблицы.
-
На вкладке Поля в группе Свойства нажмите кнопку Изменить подстановки.
-
Внесите нужные изменения в соответствии с инструкциями мастера. Можно изменить следующие элементы.
-
Поле-источник значений
-
Порядок сортировки значений
-
Ширину поля и отображение ключевого столбца
-
Подпись поля подстановки
-
Включение проверки целостности данных
-
Каскадное или ограниченное удаление в случае, если включена проверка целостности данных
-
К началу страницы
См. также
Добавление поля подстановки в таблицу
Общие сведения об окне схемы данных
Сравнение двух таблиц в Access с целью выявления только совпадающих данных
Проверьте, как это работает!
Главное достоинство реляционных баз данных заключается в возможности использовать информацию из разных таблиц. Для этого сначала требуется создать между ними связи. После этого вы сможете объединять эти данные в запросах, формах и отчетах.
Чтобы увидеть все связи в базе данных, откройте шаблон Access, а затем на вкладке Работа с базами данных нажмите кнопку Схема данных.
Примечание: Если вы открыли пустую базу данных или не еще не создали связей между таблицами, в Access вам будет предложено добавить таблицу или запрос. Для создания связи у вас должны быть хотя бы две таблицы. Лучше всего сразу создать все нужные таблицы. Дополнительные сведения см. в статьях Создание связей с помощью мастера подстановок и Создание связей в области «Схема данных».
Описание области «Схема данных»
Линии в представлении «Отношения» указывают на связи между таблицами. На рисунке ниже таблица слева является родительской. Таблица справа является детской. Линия между ними соединяет поля (в данном случае — «ИД заказа» и «ИД товара»), используемые для совпадения данных.
По линиям и символам можно определить параметры связи.
-
Толстая соединительная линия означает, что включено обеспечение целостности данных. Это хорошо. Данные будут синхронизироваться.
-
На приведенном изображении цифра 1 означает, что в таблице слева может быть только одна связанная запись. В таблице «Заказы» каждому заказу может соответствовать только одна запись.
-
Значок «∞» означает, что в нескольких записях может быть указан одинаковый номер или код. Заказ из таблицы слева, определяемый номером заказа, может быть указан в таблице «Сведения о заказах» несколько раз, поскольку в одном заказе может быть несколько продуктов.
Виды связей между таблицами
Между таблицами могут быть установлены связи трех видов:
-
Один-к-одному. Каждый элемент используется в каждой таблице только один раз. Например, каждый сотрудник может использовать только один служебный автомобиль. Дополнительные сведения см. в статье Создание связей типа «один-к-одному».
-
Один-ко-многим. Для одного элемента из первой таблицы можно создать связь с несколькими элементами из второй таблицы. Например, в каждой накладной может быть указано несколько продуктов.
-
Многие-ко-многим. Для одного или нескольких элементов из первой таблицы можно создать связь с одним или несколькими элементами из второй таблицы. Например, в каждый заказ может входить несколько продуктов, и каждый продукт может быть указан в нескольких заказах. Дополнительные сведения см. в статье Создание связей типа «многие-ко-многим».
Связи типа «один ко многим»
Связи типа «один-ко-многим» — одни из наиболее распространенных в хорошо структурированных базах данных.
Связи между таблицами обычно определяются первичным ключом в одной из них. Первичный ключ служит уникальным идентификатором каждой записи (часто числовым). Чтобы показать, что сведения в двух таблицах связаны, с помощью первичного ключа обычно создается связь, исходящая из одной таблицы.
В показанной ниже связи у каждого человека из таблицы «Контакты» есть идентификатор, представляющий собой первичный ключ (он отмечен значком ключа). Этот идентификатор также используется в поле «Владелец» в таблице «Активы». Чтобы написать электронное письмо человеку, связанному с активом, следует использовать значение поля «Адрес электронной почты». Для этого необходимо узнать значение поля «Владелец» из таблицы «Активы», а затем найти этот идентификатор в таблице «Контакты». Число 1 на одном конце соединительной линии и знак «∞» на другом означают, что это связь типа «один-ко-многим», поэтому один контакт может быть связан с несколькими активами.
Изменение связи
Если вы работаете с существующей базой данных или создали базу из шаблона, вы можете изменить связь нужным образом.
Примечание: Если необходимые таблицы открыты, сначала следует закрыть их, а также любые открытые объекты, которые их используют.
-
Выберите Работа с базами данных > Схема данных.
-
Выберите линию, соединяющую две связанные таблицы.
Совет: Если необходимая связь отсутствует, на вкладке Конструктор в группе Связи нажмите кнопку Все связи.
-
На вкладке Конструктор нажмите кнопку Изменить связи.
Таблица/запрос — это родительская таблица, указанная слева (в рассмотренном примере — «Клиенты»).
Связанная таблица/запрос — это дочерняя таблица (в рассмотренном примере — «Заказы»).
Даже если в области «Схема данных» таблицы расположены в другом порядке, их размещение в показанном диалоговом окне определяет направление соединительной линии между ними и, соответственно, направление связи. Это важно, например, для связей типа «один-ко-многим», потому что в таблице слева (родительской) в таком случае может быть связано только одно поле, а в таблице справа (дочерней) — несколько.
-
Чтобы изменить соединенные поля, выберите другое поле под каждой отображаемой таблицей. В рассмотренном примере поле «Код» из таблицы «Клиенты» соединяется с полем «Код клиента» из таблицы «Заказы».
-
Настройте синхронизацию данных между таблицами.
Обеспечение целостности данных
Выберите этот пункт, чтобы избежать ошибок в данных и поддерживать синхронизацию сведений с помощью связи.
Например, предположим, что у вас есть связь типа «один-к-одному» между таблицами «Сотрудники» и «Льготы сотрудников». Если сотрудник уволится и вы удалите его из таблицы «Сотрудники», соответствующая запись в таблице «Льготы сотрудников» тоже удалится.
Иногда не имеет смысла применять обеспечение целостности данных. Предположим, у вас есть связь «один-к-многим» между «Грузоотправителями» и «Заказы». Вы удаляете грузоотправителя, и он сопопосывается с заказами в таблице «Заказы». Эти заказы становятся потерянными, то есть по-прежнему содержат ИД грузоотправителя, но он не является допустимым, так как запись, на которую он ссылается, больше не существует.
Каскадное обновление связанных полей
Установите этот флажок, чтобы данные в связанных полях обновлялись во всех связанных таблицах.
Предположим, вам нужно просто изменить код поставщика. Если у вас установлен этот флажок, код поставщика обновится не только в таблице «Поставщики», но и в других связанных с ней таблицах, в которых также используется это значение кода (например, в таблице «Заказы»).
Каскадное удаление связанных записей
Установите этот флажок, если при удалении записей вам требуется удалять и связанные записи из других таблиц.
Предположим, вы удалили грузоотправителя. Если выбран этот параметр, Access удаляет все записи во всех таблицах, ссылаясь на этот ИД грузоотправителя, включая все заказы (в таблице «Заказы»), отправленные этим грузоотправии. Этот параметр можно выбрать только в том случае, если вы уверены, что хотите удалить историю заказов.
-
Чтобы изменить связь между таблицами с внутреннего соединения на внешнее, нажмите кнопку Объединение. Дополнительные сведения см. в статье Создание запросов с внешними соединениями.
Удаление отношения между таблицами
Примечание: Если необходимые таблицы открыты, сначала следует закрыть их, а также любые открытые объекты, которые их используют.
Удаление связи между таблицами
-
Выберите Работа с базами данных > Схема данных.
-
Выберите линию, соединяющую две связанные таблицы.
Совет: Если необходимая связь отсутствует, на вкладке Конструктор в группе Связи нажмите кнопку Все связи.
-
Нажмите клавишу DELETE. Если потребуется подтвердить удаление, нажмите кнопку Да.
Примечание: При удалении связи для нее также отключается обеспечение целостности данных, если оно было включено. В результате Access больше не будет предотвращать изменения, ведущие к появлению неполных записей со стороны многих записей в связи типа «один-ко-многим».
Вам нужны дополнительные возможности?
Создание, изменение и удаление отношения
Нужна дополнительная помощь?
|
1 / 1 / 0 Регистрация: 19.12.2010 Сообщений: 27 |
|
|
1 |
|
Поменять связь с «один к одному » в «один ко многим» межу таблицам19.05.2012, 21:48. Показов 27539. Ответов 9
У меня такой глупый вопрос. Не могу разобраться. Мне нужно поменять связь с «один к одному » в «один ко многим». Межу таблицам «Замовники» и «Замовлення». Как мне это сделать ? Миниатюры
__________________
1 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
19.05.2012, 21:48 |
|
9 |
|
Перпетум модуле 147 / 119 / 8 Регистрация: 24.07.2009 Сообщений: 263 |
|
|
19.05.2012, 21:57 |
2 |
|
выложите бд в архиве!
0 |
|
1 / 1 / 0 Регистрация: 19.12.2010 Сообщений: 27 |
|
|
19.05.2012, 22:08 [ТС] |
3 |
|
Хорошо.
0 |
|
Перпетум модуле 147 / 119 / 8 Регистрация: 24.07.2009 Сообщений: 263 |
|
|
19.05.2012, 22:29 |
4 |
|
Eragon, у вас было индексировано поле, поэтому связь была один-к-одному.
1 |
|
1178 / 629 / 39 Регистрация: 30.05.2010 Сообщений: 715 |
|
|
19.05.2012, 22:35 |
5 |
|
Здравствуйте Eragon. мнение: необходимости в таблице Готовність и её связях нет, Евгений.
1 |
|
1 / 1 / 0 Регистрация: 19.12.2010 Сообщений: 27 |
|
|
19.05.2012, 23:09 [ТС] |
6 |
|
Спасибо за ответы. Будем пробовать.
0 |
|
1 / 1 / 0 Регистрация: 19.12.2010 Сообщений: 27 |
|
|
19.05.2012, 23:20 [ТС] |
7 |
|
Еще один вопрос. А как мне сделать так, что бы при выборе заказчика(КЗ) в таблице «Замволення» мне выбирало не только код но и название ? Миниатюры
0 |
|
Перпетум модуле 147 / 119 / 8 Регистрация: 24.07.2009 Сообщений: 263 |
|
|
20.05.2012, 00:07 |
8 |
|
в таблицах лучше не использовать такие задачи!
0 |
|
7262 / 4465 / 287 Регистрация: 12.08.2011 Сообщений: 13,448 |
|
|
20.05.2012, 14:41 |
9 |
|
___________________________ Миниатюры
0 |
|
1 / 1 / 0 Регистрация: 19.12.2010 Сообщений: 27 |
|
|
20.05.2012, 15:17 [ТС] |
10 |
|
Здравствуйте Eragon. мнение: необходимости в таблице Готовність и её связях нет, Евгений. А как осуществить такой запрос ? Я не очень силен в этом.
0 |
В Microsoft Access связь помогает объединять или связывать данные из одной таблицы в другую. Отношения позволяют пользователю создавать запросы, формы и отчеты. Когда таблицы создаются для каждой темы в базе данных, вы должны поместить общие поля в связанную таблицу и сформировать с ними связь, чтобы информация снова была объединена.
Есть три типа отношений:
- Отношения «один к одному»: отношения «один к одному» — это самый простой вид отношений и наименее распространенный, потому что связанная информация хранится в той же таблице. Он связывает одну таблицу с отдельной записью в другой таблице; Первичные ключи связывают таблицы. Отношения «один-к-одному» могут соединять таблицу со многими полями вместе и разделять таблицу по соображениям безопасности.
- Отношения «один-ко-многим». Отношения «один-ко-многим» — это наиболее распространенные отношения; он связывает каждую запись в одной таблице с несколькими записями в другой таблице. Только одно из связанных полей может быть первичным ключом, а первичный ключ должен иметь одну запись для многих записей в другой таблице.
- Отношения «многие ко многим»: для отношения «многие ко многим» требуется таблица соединений, которая включает столбец первичного ключа двух таблиц, которые вы хотите соединить. Отношение «многие-ко многим» позволяет связать каждую строку одной таблицы со многими строками другой таблицы.
Зачем использовать отношения таблиц в Access?
- Взаимосвязи таблиц обновляют дизайн формы и отчета. При разработке формы и отчета необходимо, чтобы Access собирал информацию, которая может быть помещена в форму или отчет, которые вы создали.
- Взаимосвязи таблиц обновляют структуру вашего запроса — чтобы записи работали более чем из одной таблицы, необходимо создать запрос для объединения этих таблиц. Запрос работает путем сопоставления значений в поле первичного ключа первой таблицы с внешним ключом во второй таблице.
- Ссылочная целостность может быть усилена в связи между таблицами — ссылочная целостность помогает предотвратить потерянные записи в вашей базе данных. Сиротская запись — это запись со ссылкой на другую несуществующую запись.
В этой статье мы собираемся объяснить:
- Как создать отношения в Microsoft Access
- Как изменить отношение в Microsoft Access
- Как удалить связь в Microsoft Access
1]Как создать отношения в Microsoft Access
Перейдите на вкладку Таблица в строке меню. Выберите отношение. В окне отношений выберите «Добавить таблицу». Откроется диалоговое окно добавления таблицы; нажмите «Добавить выбранные таблицы».
В левом углу в разделе инструментов окна «Отношения» щелкните «Редактировать отношения». Выберите «Создать».
При создании нового диалогового окна вы выберете имя левой таблицы и имя правой таблицы для своей таблицы, затем выберите имя левого столбца и имя правого столбца, которые должны быть первичным ключом ваших таблиц; теперь нажмите ОК.
Диалоговое окно «Изменить взаимосвязь» снова появится с выбранным вами вариантом; нажмите создать. Существует также вариант быстрого доступа, с помощью которого вы можете перетащить первичный ключ из одной таблицы в другую; любая связанная таблица должна быть связана с первичным ключом. Это сформирует связь между двумя таблицами.
2]Как редактировать отношения в Microsoft Access
Вы можете изменить свои отношения в Microsoft Access; вот несколько шагов для этого.
Дважды коснитесь линии связи, и откроется диалоговое окно «Изменить связь».
Есть еще один способ открыть диалоговое окно редактирования отношения. На вкладке «Дизайн» вы увидите параметр «Изменить взаимосвязь»; нажмите здесь.
Внесите любые изменения, которые хотите внести.
3]Удаление отношений в Microsoft Access
Чтобы удалить связь, вы должны удалить строку из двух таблиц; это меры.
Щелкните курсор правой кнопкой мыши и выберите Удалить. Другой вариант — поместить курсор на строку и нажать кнопку «Удалить».
Появится диалоговое окно с вопросом: «Если вы уверены, что хотите окончательно удалить Связь».
Щелкните ОК.
Связанное чтение: Как создавать таблицы с помощью конструктора таблиц в Access.
Сообщите нам в комментариях, если у вас возникнут проблемы, и мы вам ответим.
.
Содержание
- 0.1 Создание схемы данных
- 0.2 Включение таблиц в схему данных
- 0.3 Создание связей между таблицами схемы данных
- 0.4 Создание связей по простому ключу
- 0.5 Определение связей по составному ключу
- 0.6 Каскадное обновление и удаление связанных записей
- 1 Как в 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.
Определение связей по составному ключу
Определим связи между таблицами НАКЛАДНАЯ ОТГРУЗКА, которые связаны по составному ключу НОМ_НАКЛ + КОД_СК. Для этого в главной таблице НАКЛАДНАЯ выделим оба этих поля, нажав клавишу , и перетащим их в подчиненную таблицу ОТГРУЗКА.
В окне Изменение связей (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.
В разделе Программное обеспечение на вопрос Как в Access установить связи между таблицами, с поддержкой целостности данных заданный автором Алексей Ковалёв лучший ответ это оздание связей «один ко многим» или «один к одному»
Чтобы создать связь вида «один ко многим» или «один к одному», воспользуйтесь приведенной ниже последовательностью действий:
1. Закройте все открытые таблицы. Создавать или изменять связи между открытыми таблицами нельзя.
2. В Access версий 2002 или 2003 выполните указанные ниже действия.
a. Нажмите клавишу F11, чтобы перейти в окно базы данных.
b. В меню Сервис выберите команду Связи.
В Access 2007 нажмите кнопку Связи в группе Показать или скрыть вкладки Инструменты для баз данных.
3. Если в базе данных отсутствуют связи, то автоматически появится диалоговое окно Добавление таблицы. Если окно Добавление таблицы не появилось, но при этом нужно добавить таблицы в список связываемых, выберите команду Добавить таблицу в меню Связи.
4. Дважды щелкните названия таблиц, которые необходимо связать, после чего закройте диалоговое окно Добавление таблицы. Чтобы связать таблицу с самой собой, добавьте ее два раза.
5. Перетащите связываемое поле из одной таблицы на связываемое поле в другой. Чтобы перетащить несколько полей, нажмите клавишу CTRL, щелкните каждое поле, а затем перетащите их.
В большинстве случаев понадобится перетащить поле первичного ключа (выделенное полужирным текстом) из одной таблицы на аналогичное поле (часто с тем же самым названием) , называемое внешним ключом, другой таблицы.
6. Появится окно Изменение связей. Убедитесь, что в каждом из столбцов отображаются названия нужных полей. Если нужно, их можно изменить.
При необходимости задайте параметры связи. Если требуются сведения о конкретном элементе окна Изменение связей, нажмите кнопку со знаком вопроса, а затем щелкните соответствующий элемент. Эти параметры будут подробно описаны ниже.
7. Чтобы установить связь, нажмите кнопку Создать.
8. Повторите действия с 5 по 8 для каждой пары связываемых таблиц.
При закрытии диалогового окна Изменение связей Microsoft Access спросит, нужно ли сохранить макет. Вне зависимости от ответа на этот вопрос создаваемые связи сохраняются в базе данных.
Примечание. Создавать связи можно не только в таблицах, но и в запросах. При этом, однако, не обеспечивается целостность данных.
Создание связей «многие ко многим»
Чтобы создать связь вида «многие ко многим», выполните указанные ниже действия.
1. Создайте две таблицы, которые необходимо связать отношением «многие ко многим».
2. Создайте третью таблицу, называемую соединительной, и добавьте в нее поля с теми же определениями, что и поля первичных ключей в каждой из двух других таблиц. Поля первичных ключей соединительной таблицы служат внешними ключами. В соединительную таблицу, как и в любую другую, можно добавить и другие поля.
3. Задайте первичный ключ этой таблицы таким образом, чтобы он включал в себя поля первичных ключей обеих основных таблиц. Например, первичный ключ соединительной таблицы «АвторыКниг» будет состоять из полей «ИД_заказа» и «ИД_продукта».
Примечание. Чтобы создать первичный ключ, выполните указанные ниже действия.
a. Откройте таблицу в режиме конструктора.
b. Выберите одно или несколько полей, которые необходимо определить в качестве первичного ключа. Чтобы выбрать одно поле, щелкните знак выбора строки для нужного поля.
Чтобы выбрать несколько полей, удерживайте нажатой клавишу CTRL и щелкните знак выбора строки для каждого из полей.
c. В Access версий 2002 или 2003 нажмите кнопку Первичный ключ на панели инструментов.
В Access 2007 нажмите кнопку Первичный ключ в группе Сервис вкладки Структура.
Примечание. Чтобы порядок следования полей в первичном ключе, состоящем из нескольких полей, отличался от такового в таблице, нажмите кнопку Индексы на панели инструментов, в результате чего появится диалоговое окно Индексы, в котором можно изменить порядок следования полей индекса под названием КлючевоеПоле.
Реляционная база данных, созданная в соответствии с проектом канонической модели данных предметной области, состоит из нормализованных таблиц, связанных одно-многозначными отношениями. В такой базе данных обеспечивается отсутствие дублирования описательных данных, их однократный ввод, поддержание целостности данных средствами системы. Связи между таблицами позволяют выполнить объединение данных различных таблиц, необходимое для решения большинства задач ввода, просмотра и корректировки данных, получения информации по запросам и вывода отчетов.
Связи между таблицами устанавливаются в соответствии с проектом логической структуры базы данных и запоминаются в схеме данных 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.
Логические
связи
устанавливаются
между одноименными полями
таблиц
базы
данных Access 2007. Связь данных в одной
таблице с данными в других таблицах
осуществляется через уникальные
идентификаторы (ключи) или ключевые
поля.
Существует
несколько
типов
отношений
между
таблицами:
1.
Отношение «один-к-одному» (1:1) означает,
что каждая запись одной таблицы
соответствует только одной записи в
другой таблице и наоборот. Отношение
«один-к-одному» (1:1) создается в том
случае, когда оба связываемых поля
являются ключевыми или имеют уникальные
индексы. Отношения
такого
типа
используются
не
очень
часто.
Иногда
их
можно
использовать
для
разделения
таблиц,
содержащих
много
полей,
для
отделения
части
таблицы
по
соображениям
безопасности
2.
Отношение «один-ко-многим» означает,
что каждая запись одной таблицы
соответствует более одной записи в
другой таблице. Отношение «один-ко-многим»
(1:М) создается в том случае, когда только
одно из полей является ключевым или
имеет уникальный индекс. В отношении
«один-ко-многим» главной
таблицей
является таблица, которая содержит
первичный ключ и составляет часть «один»
в этом отношении. Таблица со стороны
«много» является подчиненной
таблицей.
Связующее поле (или поля) в ней с таким
же типом информации, как в первичном
ключе главной таблицы, является полем
внешнего ключа.
3.
Отношение «многие-ко-многим» (М:М)
возникает между двумя таблицами в тех
случаях, когда одна запись из первой
таблице соответствует более одной
записи во второй таблице, а одна запись
из второй таблице соответствует более
одной записи в первой таблице. Связь
фактически представляет две связи с
отношением «один-ко-многим» через третью
таблицу, ключ которой состоит, по крайней
мере, двух полей, которые являются полями
внешнего ключа двух других таблицах.
В
случае, если для какой-то из таблиц не
было определено ключевое поле, то в поле
Тип отношения отображается текст: «Hе
определено».
Для
удаления связи: в окне Схема
данных
выделите ненужную связь и нажмите
клавишу <Delete> или в контекстном меню
команду Удалить.
Если
для выбранной связи разрешен режим
обеспечения поддержки целостности, то
в этом случае можно задействовать
механизм каскадного обновления и
удаления связанных записей. Этот механизм
при изменении значения в поле связи
главной таблицы обеспечит автоматическое
изменение значения в соответствующем
поле в подчиненных записях. В случае
каскадного удаления связанных записей
при удалении записи из главной таблицы
выполняется удаление подчиненных
записей на всех уровнях.
В
нашем случае мы должны установить
логические связи между таблицами: Группы
студентов, Студенты, Дисциплины и
Успеваемость.
Для
установления связей используем ключевые
поля: КодГруппы, КодСтудентов и
КодДисциплины. Например, между первичным
ключом (КодГруппы) tables Группы студентов
и вторичным ключом (КодГруппы) tables
Студенты устанавливаем связь один — ко
— многим.
Прежде
чем приступить к созданию логических
связей надо в Окне редактирования
закрыть все tables и перейти на вкладку
Работа с базами данных. Затем щелкнуть
на пиктограмме Схема данных, в окне
редактирования появится активное
диалоговое окно «Добавление таблицы»
на фоне неактивного окна Схема данных
(рис. 5.1).
Рис.
5.1.
В
окне Добавление таблиц необходимо
выделить имена таблиц и нажать кнопку
Добавить, при этом в окне «Схема
данных» появятся все tables (рис. 5.2).
После этого необходимо закрыть окно
диалога.
Рис.
5.2
Далее
необходимо установить связи между табл.
в окне Схема данных. Для этого в окне
Схема данных необходимо отбуксировать
(переместить) поле КодГруппы из таблицы
Группы студентов на соответствующее
поле tables Студенты, в результате этой
операции появится окно «Изменение
связей» (рис. 5.3) .
Рис.
5.3.
В
появившемся окне диалога «Изменение
связей» (рис. 11) необходимо установить
флажки: «Обеспечить целостность
данных», «каскадное обновление
связанных полей» и «каскадное
удаление связанных записей», убедиться
в том, что установлен тип отношений
один-ко-многим и нажать кнопку Создать.
Данное
действие позволит предотвратить
случайное удаление или изменение
связанных данных, т.е.:
—
в подчиненную таблицу не может быть
добавлена запись с несуществующим в
главной таблице значением ключа связи;
—
в главной таблице нельзя удалить запись,
если не удалены связанные с ней записи
в подчиненной таблице;
—
изменение значений ключа связи главной
таблицы должно приводить к изменению
соответствующих значений в записях
подчиненной таблицы.
При
попытке пользователя нарушить эти
условия в операциях обновления или
удаления данных в связанных таблицах
Access не допускает выполнение операции.
Отметим, что установление
параметров целостности данных возможно
только при следующих условиях:
а) связываемые поля имеют одинаковый
тип данных, причем имена полей могут
быть различными; б) обе таблицы сохраняются
в одной базе данных Access; в) главная
таблица связывается с подчиненной по
первичному простому или составному
ключу (или уникальному индексу) главной
таблицы.
В
окне Схема данных появится связь
один-ко-многим между таблицами Группы
студентов и Студенты. Аналогичным
образом надо связать поля КодСтудента
в таблицах Студенты и Успеваемость, а
затем поля КодДисциплины в таблицах
Успеваемость и Дисциплины. В итоге
получим Схему данных, представленную
на рисунке 5.4.
Рис.
5.4
После
установки связей между таблицами, окно
Схема данных необходимо закрыть. Далее
необходимо осуществить заполнение всех
таблиц. Заполнение целесообразно
начинать с табл. Группы студентов, так
как поле КодГруппы табл. Студенты
используется в качестве столбца
подстановки для заполнения соответствующего
поля табл. Студенты.
Затем
установить связи между табл. «Студенты»
и «Успеваемость», «Дисциплины»
и «Успеваемость», так как поля
КодСтуденты и КодДисциплины табл.
Успеваемость используется в качестве
столбца подстановки для заполнения
соответствующих полей таблицы
Успеваемость.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Работа с базами данных — процесс, требующий определённых навыков и понимания некоторых нюансов. Разработанная компанией Microsoft программа Access даёт пользователям возможность быстро создавать и редактировать БД. Один из важнейших моментов, с которым обязательно нужно разобраться, при создании БД — связывание её элементов. В этой статье разберёмся с тем, как создать или удалить связи между таблицами в Access. Давайте же начнём. Поехали!
Прежде чем мы перейдём к связыванию, необходимо создать так называемые ключевые поля. Что это такое? Ключевое поле — это поле, определяющее каждую запись. Теперь перейдём непосредственно к его созданию. Открыв нужную таблицу, щёлкните правой кнопкой мыши по вкладке и выберите пункт «Конструктор». Затем добавьте новое поле. Например, если у вас есть список сотрудников, то ключевым стоит сделать «код сотрудника», указав тип данных «счётчик» либо «числовой». Чтобы сделать его ключевым, нажмите кнопку «Ключевое поле», расположенную на панели инструментов Microsoft Access. Далее, необходимо проделать то же самое для всех остальных таблиц.
Теперь уже можно связывать наши таблицы. Чтобы сделать это, откройте вкладку «Работа с базами данных» и в разделе «Отношения» ленты инструментов выберите пункт «Схема данных». Перед вами откроется окно, в котором понадобится выбрать все таблицы. Поочерёдно кликните по каждой из них. Закончив, выйдите из этого окна. Теперь нужно определиться с тем, как именно связывать. Например, есть две таблицы: «Бренд» и «Одежда», между которыми необходимо связать между собой. Поле «Код бренда» должно быть и там, и там. Если оно отсутствует — создайте его. При этом для записей категории «Бренд» оно будет ключевым (так называемый первичный ключ), а для «Одежда» — обычным (внешний ключ). Первичный ключ «Код бренда» перетащите на внешний ключ «Код бренда». После этого появится диалоговое окно, в котором нужно отметить галочками пункты: «Обеспечение целостности…», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей». Отметив все пункты, нажмите кнопку «Создать». Появится чёрная линия, соединяющая указанные строки. Созданная связь имеет название «один ко многим». То есть в приведённом примере это будет означать, что один бренд может выпускать много разной одежды.
Далее, аналогичным образом свяжите все остальные, не забывая добавлять поля. Имея минимум три таблицы (среди которых две основных и одна промежуточная), вы можете создать тип связи «многие ко многим». Для заполнения полей, являющихся внешними ключами, можно использовать «Мастер подстановок». Чтобы сделать это, перейдите в режим конструктора и в разделе «Тип данных» выберите пункт «Мастер подстановок». В открывшемся окне выберите откуда будет взята информация для заполнения. Затем укажите нужные поля и нажмите кнопку «Далее». Следующие два окна можно пропустить. В конце кликните по кнопку «Готово». Прежде чем начать заполнение, программа предложит вам сохраниться, щёлкните «Да». Обратите внимание, что заполнение таким способом возможно только в случае, если связь ещё не установлена. Если у вас так не получилось, то вы можете удалить её и заполнить ячейки. После этого она автоматически появится, однако, вам понадобится кликнуть по ней два раза и отметить галочками пункты: «Обеспечение целостности…», «Каскадное обновление связанных полей» и «Каскадное удаление связанных записей».
Чтобы удалить связь, кликните по кнопке «Схема данных» на панели инструментов, затем щёлкните по линии, показывающей её, и нажмите на клавиатуре клавишу delete.
Теперь вы знаете как добавляются и удаляются связи при работе с БД в программе Microsoft Access. Обладая этими навыками, вы уже сможете создавать полноценные, функционирующие БД, однако, продолжайте развивать свои знания программы Access. Пишите в комментариях была ли полезной для вас эта статья и задавайте любые интересующие вопросы по рассмотренной теме.























