将多个值存储在一个db列中

时间:2017-09-25 19:15:54

标签: php mysql laravel

我正在尝试创建一个数据透视表,以帮助跟踪我的应用程序中的“挑战”。基本上我有一个challenge_task数据透视表,可以在挑战和任务之间建立关系。当处于挑战中的用户完成我希望能够告诉的任务时,我可以跟踪用户的进度。如何存储多个用户完成挑战任务的最佳方式?

我在数据透视表中考虑添加一个名为json的{​​{1}}列来处理此问题,并为完成挑战任务的每个用户存储user_completed

所以user_id看起来像

challenge_task

这是一个好方法吗?或者有什么更适合这种情况吗?

3 个答案:

答案 0 :(得分:1)

我建议使用类似这样的数据库结构:

challenge: challenge_id | other data
task: task_id | other data
user: user_id | other  data

challenge_task: challenge_task_id | challenge_id | task_id 
               | possibly more data (such as deadline for completion)

challenge_task_users: challenge_task_id | user_id
                     | possibly more data (such as status: accepted, in progress, completed)

答案 1 :(得分:0)

如果你想索引你的数据,我不推荐Json,因为Json无法编入索引。 我认为你应该在用户和任务之间建立一个数据透视表,并创建必要的关系。

答案 2 :(得分:0)

我不建议您在一个数据库列中插入多个值。

注意:这是我的意见。只是分享我使用它的方式。

一个名为tasks_settings的表,它具有任务设置。

Example 1

我发现这种方式很灵活,因为我总是可以轻松编辑标题,描述和奖励。我还可以在这里再添加2个字段,分别是valid_till和valid_for。因此,您可以在一段时间后使其过期,仅限于员工或所有用户等特殊级别。

另一个名为users_tasks的表

Example 2

这个控制用户。他们是否完成了任务。这也可以实现您的目标。

id | challenge_id | task_id | username | user_completed

我希望这对你有帮助!

相关问题