Проверьте, как это работает!
Что такое связь "многие-ко-многим"?
Связи типа "многие-ко-многим" используются между таблицами чаще всего. С их помощью можно узнавать важные сведения, например, с какими клиентами связывались ваши менеджеры по продажам и какие продукты входили в заказы.
Связь "многие-ко-многим" предполагает возможность связи одного или нескольких элементов из одной таблицы с одним или несколькими элементами из другой таблицы. Примеры:
- В таблице "Заказы" указаны заказы, сделанные разными клиентами из таблицы "Клиенты". Каждый клиент мог сделать несколько заказов.
- В таблице "Продукты" указаны продаваемые товары, каждый из которых может фигурировать в нескольких заказах из таблицы "Заказы".
- Каждый продукт может входить в один заказ как в одном, так и в нескольких экземплярах.
Например, в заказ Арины Ивановой № 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 в качестве первого. Измените имя этого поля на идентификатор вашей первой таблицы в связи "многие-ко-многим". Например, если первая таблица называется "Заказы", поле "Код" в ней переименовано в "Номер заказа", и его первичный ключ — число, измените имя поля "Код" в новой таблице на "Номер заказа", а в качестве типа данных выберите Числовой.
- В режиме таблицы выберите заголовок столбца Код и введите новое имя поля.
- Выберите переименованное поле.
- На вкладке Поля таблицы в разделе Тип данных выберите тип данных, соответствующий полю в исходной таблице, например Число или Короткий текст.
- Щелкните надпись Щелкните для добавления и выберите тип данных, соответствующий первичному ключу во второй таблице. В заголовке столбца введите имя поля первичного ключа из второй таблицы, например «Код продукта».
- Если вам требуется отслеживать другую информацию об этих записях, например количество товаров, создайте дополнительные поля.
Объединение полей для создания первичного ключа
Теперь, когда у вас есть поля с идентификаторами двух таблиц, между которыми вы хотите создать связь, в промежуточной таблице следует создать первичный ключ на основе этих идентификаторов.
- Откройте промежуточную таблицу в режиме конструктора.
- Выберите обе строки с идентификаторами. (Если вы следовали предыдущим указаниям, это будут две первые строки.)
- ВыберитеПервичный ключконструктора> таблиц.
Рядом с обоими полями появится значок ключа.
Соединение трех таблиц для создания связи "многие-ко-многим"
Чтобы завершить создание связи "многие-ко-многим", создайте связь "один-ко-многим" между полем первичного ключа в каждой таблице и соответствующим полем в промежуточной таблице. Инструкции см. в статье Начало работы со связями между таблицами.
После этого связи должны выглядеть следующим образом: