Итак, я создаю менеджер задач для моей компании. Пользователь может назначить назначение задачи нескольким другим пользователям. Так что у меня есть 2 способа реализации этого.
Это моя таблица задач для первого варианта (по крайней мере, столбцы, которые важны в этом обсуждении):
----------------------------------------------
| id | assigned_to | assigned_from |
---------------------------------------------
| 1 | 1,3,6 | 4 |
--------------------------------------------
| 2 | 1,4 | 2 |
---------------------------------------------
Так что здесь я в значительной степени просто запятую отделяю каждый user_id, который назначен для этой конкретной задачи
Вариант 2:
----------------------------------------------------------
| id | task_id | assigned_to | assigned_from |
------------------------------------------------------------
| 1 | 335901 | 1 | 4 |
-----------------------------------------------------------
| 2 | 335901 | 3 | 4 |
-----------------------------------------------------------
| 3 | 335901 | 6 | 4 |
-----------------------------------------------------------
| 4 | 564520 | 1 | 2 |
-----------------------------------------------------------
| 4 | 564520 | 4 | 2 |
-----------------------------------------------------------
Таким образом, как вы можете видеть здесь, вместо того, чтобы помещать здесь assiged_to is, я просто создаю идентификатор задачи, который является случайным числом, и затем я могу groupBy ‘task_id’. Это в настоящее время они так, как я его построил, но по какой-то причине мне кажется, что это может обернуться мной в будущем (не тот вариант, который не дает мне того же чувства). Итак, мой вопрос, какой путь вы, ребята, рекомендуете, или, может быть, есть другой лучший способ, которым я мог бы сделать это?
Вариант 2 — лучшее решение, так как вы можете точно работать с таблицей. Вы можете, например, создать другую таблицу Tasks
с
Task_id | Task_name | Budget | ...
Или таблица с идентификаторами пользователей для assigned_to
а также assigned_from
, Все эти таблицы могут быть объединены, если вы используете 2-й вариант.
Кстати, это правильно форма нормализации
Вы можете использовать вариант 2 и продолжить нормализацию, если задачи всегда назначаются одним и тем же лицом.
Tasks
Таблица:
task_id | assigned_from
1 | 4
2 | 2
Assignees
таблица не должна иметь assigned_from
так как это всегда то же самое для этого task_id
:
id | task_id | assigned_to
1 | 1 | 1
2 | 1 | 3
3 | 1 | 6
4 | 2 | 1
5 | 2 | 4