Самый общий вид связи М:М возникает в случаях, когда нескольким записям основной таблицы соответствует несколько записей дополнительной таблицы.
Пример 5. Пусть в основной таблице O4 содержится информация о том, на каких станках могут работать рабочие некоторой бригады. Таблица Д4 содержит сведения о том, кто из бригады ремонтников какие станки обслуживает.
Работает | На станке |
---|---|
Иванов А.В. | станок1 |
Иванов А.В. | станок2 |
Петров Н.Г. | станок1 |
Петров Н.Г. | станокЗ |
Сидоров В.К. | станок2 |
Обслуживает | Станок |
---|---|
Голубев Б.С. | станок1 |
Голубев Б.С. | станокЗ |
Зыков А.Ф. | станок2 |
Зыков А.Ф. | станокЗ |
Первой и третьей записям таблицы O4 соответствует первая запись таблицы Д4 (у всех этих записей значение второго поля —«станок1»). Четвертой записи таблицы O4 соответствуют вторая и четвертая записи таблицы Д4 (во втором поле этих записей содержится «станокЗ»).
Исходя из определения полей связи этих таблиц можно составить новую таблицу с именем «O4+Д4», записями которой будут псевдозаписи. Записям полученной таблицы можно придать смысл возможных смен, составляемых при планировании работы. Для удобства, поля новой таблицы переименованы (кстати, такую операцию предлагают многие из современных СУБД).
Работа | Станок | Обслуживание |
---|---|---|
Иванов А.В. | станок1 | Голубев Б.С. |
Иванов А.В. | станок2 | Зыков А.Ф. |
Петров Н.Г. | станок1 | Голубев Б.С. |
Петров Н.Г. | станокЗ | Голубев Б.С. |
Петров Н.Г. | станокЗ | Зыков А.Ф. |
Сидоров В. К. | станок2 | Зыков А.Ф. |
Приведенную таблицу можно использовать, например, для получения ответа на вопрос: «Кто обслуживает станки, на которых трудится Петров Н.Г.?». Очевидно, аналогично связи 1:1, связь М:М не устанавливает подчиненности таблиц. Для проверки этого можно основную и дополнительную таблицу поменять местами и выполнить объединение информации путем связывания. Результирующие таблицы «04+Д4» и «Д4+04» будут отличаться порядком следования первого и третьего полей, а также порядком расположения записей.
Замечание. На практике в связь обычно вовлекается сразу несколько таблиц. При этом одна из таблиц может иметь различного рода связи с несколькими таблицами. В случаях, когда связанные таблицы, в свою очередь, имеют связи с другими таблицами, образуется иерархия или дерево связей.
Связь вида М:1 | Контроль целостности связей |