好的,我正在为我的公司创建一个任务管理器。用户可以将任务分配给多个其他用户。所以我有两种实现方法。
这是我的第一选项的任务表(至少是本讨论中重要的列):
----------------------------------------------
| 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放在这里,我只是创建一个随机数的任务ID,然后我就可以将这个任务ID分组给任务'。这是目前我已经建立它的方式,但由于某种原因,感觉它可能会在未来让我感到困惑(不是那种选择并没有给我同样的感觉)。所以我的问题是你们推荐哪种方式,或者可能有更好的方法可以做到这一点?
答案 0 :(得分:1)
选项2是更好的解决方案,因为您可以实际使用该表。你可以,例如使用
创建另一个表Tasks
Task_id | Task_name | Budget | ...
或包含assigned_to
和assigned_from
用户ID的表格。如果您使用第二选项,所有这些表可以连接在一起。
顺便说一下,这是正确的normalization form
答案 1 :(得分:1)
如果任务总是由同一个人分配,则可以使用选项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