Распечатать страницу

Відношення багато-до-багатьох

« Назад

В связях с отношением «многие-ко-многим» каждая строка в одной таблице связывается с несколькими строками во второй таблице и наоборот.

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

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

В учебной базе данных pubs на Microsoft SQL Server связующей таблицей является таблица titleauthor.В окне базы данных выберите Схемы баз данных в списке Объекты, выберите схему базы данных, которую требуется открыть, и нажмите кнопку Конструктор на панели инструментов окна базы данных. Добавьте в схему базы данных таблицы, для которых создается связь с отношением «многие-ко-многим».

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

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

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