将多个用户分配到“任务”#39;

时间:2014-10-04 15:27:47

标签: php mysql laravel database-schema

好的,我正在为我的公司创建一个任务管理器。用户可以将任务分配给多个其他用户。所以我有两种实现方法。

这是我的第一选项的任务表(至少是本讨论中重要的列):

----------------------------------------------
|   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分组给任务'。这是目前我已经建立它的方式,但由于某种原因,感觉它可能会在未来让我感到困惑(不是那种选择并没有给我同样的感觉)。所以我的问题是你们推荐哪种方式,或者可能有更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

选项2是更好的解决方案,因为您可以实际使用该表。你可以,例如使用

创建另一个表Tasks
Task_id    |  Task_name   |  Budget  | ...

或包含assigned_toassigned_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