我想用 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
userid 0 或 groupid 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
我不知道哪种解决方案给了我最优化的设计。我还想用其他一些表来扩展这个应用程序,同样需要分配用户和组权限。现在我正在考虑第三种解决方案......