Проверьте, как это работает!
Что такое связь "многие-ко-многим"?
Связи типа "многие-ко-многим" используются между таблицами чаще всего. С их помощью можно узнавать важные сведения, например, с какими клиентами связывались ваши менеджеры по продажам и какие продукты входили в заказы.
Связь "многие-ко-многим" предполагает возможность связи одного или нескольких элементов из одной таблицы с одним или несколькими элементами из другой таблицы. Примеры:
-
В таблице "Заказы" указаны заказы, сделанные разными клиентами из таблицы "Клиенты". Каждый клиент мог сделать несколько заказов.
-
В таблице "Продукты" указаны продаваемые товары, каждый из которых может фигурировать в нескольких заказах из таблицы "Заказы".
-
Каждый продукт может входить в один заказ как в одном, так и в нескольких экземплярах.
Например, в заказ Арины Ивановой № 1012 могут входить продукты № 12 и 15, а также пять продуктов № 30.
Создание связи "многие-ко-многим"
Вы создаете отношения "многие ко многим" иначе, чем "один к одному" или "один ко многим". Для этих связей необходимо просто соединить соответствующие поля с помощью строки. Чтобы создать связи "многие ко многим", необходимо создать новую таблицу для подключения двух других. Эта новая таблица называется промежуточной таблицей (или иногда таблицей связывания или соединения ).
В рассмотренном ранее примере создавалась таблица "Сведения о заказах" с записями, в которых для каждого товара в нужном порядке указывались номер заказа из таблицы "Заказы" и код продукта из таблицы "Продукты". Первичный ключ для этой таблицы создавался путем объединения ключей из двух других таблиц.
Ниже рассмотрим пример, когда в заказ Арины Ивановой № 1012 входят продукты № 12, 15 и 30. Это значит, что записи в таблице "Сведения о заказах" выглядят следующим образом:
Номер заказа |
Код продукта |
---|---|
1012 |
12 |
1012 |
15 |
1012 |
30 |
Арина заказала по одному продукту № 12 и 15, а также пять продуктов № 30. Создать другие строки с номером заказа 1012 и кодом продукта 30 нельзя, потому что поля "Номер заказа" и "Код продукта" вместе составляют первичный ключ, а первичные ключи должны быть уникальными. Вместо этого можно добавить в таблицу "Сведения о заказах" поле "Количество".
Номер заказа |
Код продукта |
Количество |
---|---|---|
1012 |
12 |
1 |
1012 |
15 |
1 |
1012 |
30 |
5 |
Создание промежуточной таблицы
-
Выберите Создание > Таблица.
-
Выберите Сохранить .
-
Укажите описательное имя таблицы. Чтобы подчеркнуть назначение таблицы, можете включить в ее имя слова связующая или промежуточная.
Создание полей в промежуточной таблице
В качестве первого столбца таблицы Access автоматически добавляет поле идентификатора. Измените имя этого поля на идентификатор вашей первой таблицы в связи "многие-ко-многим". Например, если первая таблица называется "Заказы", поле "Код" в ней переименовано в "Номер заказа", и его первичный ключ — число, измените имя поля "Код" в новой таблице на "Номер заказа", а в качестве типа данных выберите Числовой.
-
В режиме таблицы выберите заголовок столбца Код и введите новое имя поля.
-
Выберите переименованное поле.
-
На вкладке Поля таблицы в разделе Тип данных выберите тип данных, соответствующий полю в исходной таблице, например Число или Короткий текст.
-
Щелкните надпись Щелкните для добавления и выберите тип данных, соответствующий первичному ключу во второй таблице. В заголовке столбца введите имя поля первичного ключа из второй таблицы, например «Код продукта».
-
Если вам требуется отслеживать другую информацию об этих записях, например количество товаров, создайте дополнительные поля.
Объединение полей для создания первичного ключа
Теперь, когда у вас есть поля с идентификаторами двух таблиц, между которыми вы хотите создать связь, в промежуточной таблице следует создать первичный ключ на основе этих идентификаторов.
-
Откройте промежуточную таблицу в режиме конструктора.
-
Выберите обе строки с идентификаторами. (Если вы следовали предыдущим указаниям, это будут две первые строки.)
-
Выберите Конструктор таблиц > первичный ключ.
Значки клавиш отображаются рядом с обоими полями идентификаторов.
Соединение трех таблиц для создания связи "многие-ко-многим"
Чтобы завершить создание связи "многие-ко-многим", создайте связь "один-ко-многим" между полем первичного ключа в каждой таблице и соответствующим полем в промежуточной таблице. Инструкции см. в статье Начало работы со связями между таблицами.
После этого связи должны выглядеть следующим образом: