MySQL. Разбиваем отношение M:N на 1:M и 1:N

Данная статья посвящена разбиванию отношений многие ко многим на 2 отношениям 1 ко многим. Напомню, в посте про проектирование базы данных мы встречали вот такую схему

7

Но как ей воспользоваться на практическом уровне? Этим мы и займемся сегодня. Разные работники могут выполнять разные заказы. А как узнать какие заказы выполнил один конкретный работник? Это та задача, которая часто будет встречаться в отношении M:N, разбитом на 1:M и 1:N;

Создание модели и физической базы данных

В посте про проектирование базы данных, в самом конце мы занимались тем, что разбивали M:N, на 1:M и 1:N таким образом

21

В данной статье мы немного упростим задачу вот так…

5

Сделаем первичное заполнение из MySQL Workbench через Inserts внизу во вкладке редактирования таблицы, следующим образом – в workers и orders внесем по 2 записи, в их общую таблицу – 4 записи.

7

В таблицу заказов поместим 2 заказа

2

В таблицу работников поместим 2 работников

3

В их общую таблицу поместим следующую информацию. Оба работника выполняли 1 и 2 заказы.

4

Как узнать какие заказы выполнял 1 работник?

Выполним вот такой запрос

6

В результате у нас получилось, что первый работник выполнил 1 и 2 заказы – это правильный ответ, так как при первичном заполнении так и было.

Код запроса в MySQL

В принципе, мы просто делаем пересечение множеств 2 раза, согласно реляционной алгебре – и получаем нужный нам результат.

This entry was posted in MySQL. Bookmark the permalink.