将任务分配给用户和用户组

问题描述 投票:0回答:1

我想用 MYSQL 和 PHP 构建一个小型任务应用程序。我想将任务分配给单个用户和多个用户组。我想有一个 user_table:

userid  name
1       Peter
2       Hans

用户组_表

usergroup_id name
1            Usergroup 1
2            Usergroup 2

usergroupmap_table(2个共享主键)

usergroup_id userid
1            1
1            2

任务表

taskid  taskname            due_date
1       Finish my exams     10-06-2016
2       Another task 2 do   15-06-2016

从此就很容易了。现在我可以想到 3 种如何将用户和用户组分配给任务的方法。但我无法选择哪一个最好(标准化??)

解决方案1

两个单独的表,一个表包含单个用户,另一个表包含指定的组: usertask_table(2个共享主键)&& usergroup_table

taskid  userid
1       1
1       1

taskid  groupid
1       1
2       1

解决方案2

用户 ID 0 或组 ID 0 的组合表:

taskid  groupid  userid
1       1        0
2       1        0
2       0        1
2       0        2

解决方案3

包含所有已分配任务的组合表,但使用 varchar 来定义选择哪个组

taskid  type  id
1       group 1
1       group 2
2       user  1      
2       user  2

我不知道哪种解决方案可以为我提供最佳的设计。我还想使用其他一些表来扩展此应用程序,其中需要以相同的方式分配用户和组权限。现在我正在考虑第三种解决方案...

php mysql scheduled-tasks user-permissions access-rights
1个回答
0
投票

解决方案 1:很好,但会创建冗余表,在我看来,这不仅是不必要的,而且还需要您每次想要获取所有分配的任务时查询 2 个不同的表。

解决方案 2:对我来说完全没有意义。要确定任务是否分配给组或用户,您必须检查每一列中的值,其中一列的任务 ID 为 0 ,然后检查另一列中的任务 ID。发动机上不必要的负载。

解决方案 3:对我来说是完美的 - 您只需要知道类型列中的内容即可确定。您还可以避免解决方案 1 中那样拥有多个表的缺点。

为了进一步改进解决方案3,您可以使用数字或布尔值来区分类型(例如,如果为1,则为一组,如果为2,则为单独的),只是为了减少数据库的表/列生成的字符

© www.soinside.com 2019 - 2024. All rights reserved.