Ищете лучший способ пойти по этому поводу.
В основном это настройка для рабочих, чтобы увидеть, какие у них рабочие места на день.
У многих работников может быть одна и та же работа, и для каждого работника возможно несколько работ, каждая работа может иметь несколько работников, но не обязательно одну и ту же «кучу» работ.
Пример:
работник может иметь работу 1 и 2 и
работник б мог иметь работу 1 и 3.
Что является лучшим или типичным примером подключения этого отношения в базе данных?
В моей таблице пользователей есть идентификаторы и имена пользователей, на которые я могу сослаться, но я пытаюсь уйти от какого-то списка, хранящегося в базе данных, что до сих пор является моей единственной идеей, у работника a есть задания (1,2,9).
Распространенным способом достижения этого является использование дополнительной таблицы, которая содержит отношения между работниками и рабочими местами. Предположим, эта таблица с именем worker_jobs будет иметь (как минимум) столбцы worker_id и job_id. Если у работника с идентификатором 15 есть задания с идентификаторами 1,3,5, то вы создадите три строки
worker_id | job_id
15 | 1
15 | 3
15 | 5
Для обратного отношения, если задание с идентификатором 2 принадлежит работникам с идентификаторами 2,5,6,8, ваша таблица worker_jobs будет
worker_id | job_id
2 | 2
5 | 2
6 | 2
8 | 2
Хранение значений, разделенных запятыми, не очень хорошая идея, и предоставляется отличное объяснение. Вот
Стандартный способ обработки отношений «многие ко многим» — наличие дополнительной таблицы.
workers_jobs:
| id | worker_id | job_id |
-----------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 3 |
Таким образом, вы можете выбрать все задания для конкретного работника и всех работников для конкретного задания из этой таблицы worker_jobs.
Например:
SELECT * FROM workers
INNER JOIN workers_jobs ON workers.id = workers_jobs.worker_id
INNER JOIN jobs ON on workers_jobs.job_id = jobs.id