用于奖励用户活动的数据库模式

时间:2016-04-22 08:27:49

标签: laravel database-design

我想在用户做某件事时为他们提供积分。例如:

  • 添加文章
  • 添加问题
  • 回答问题
  • 喜欢文章

他们中的一些人可能有条件,例如每天只有前3篇文章的分数,但我想我会直接在我的代码库中处理这个问题。

问题是如何处理这个好的数据库设计?我想到了3个表。

  • user_activities - 在此表中我将存储事件类型(我使用 laravel所以它可能是事件类名称)和指向 具体事件。
  • activity_user - user_activities和users之间的数据透视表。
  • 当然还有用户表

这很简单,所以我担心有一些我没有想过的条件,将来会咬我的。

2 个答案:

答案 0 :(得分:0)

我认为你需要一个仅仅是“活动”的第四个表格,它只是一个要跟踪的活动类型的列表。这将有一个ID列,然后在您的user_activities表中包含一个“activity_id”以链接到该列。毫无疑问,您可以获得每种类型的唯一信息,例如,活动表可能包含

等列

ID:每个laravel的唯一ID ACTIVITY_CODE:用作应用程序/业务逻辑的一部分的短代码 ACTIVITY_NAME:更长的名称,用于显示名称,例如“已回答问题” 事件:用户必须做什么才能触发活动奖励 POINT_VALUE:此事件的点数

如果您认为未来点数可能会发生变化(例如,鼓励某些用户活动),那么您将需要跟踪当时在用户活动表中授予的实际点数,或者某种方式来跟踪点数在任何时候都是。

虽然我建议使用第四个表格,但在进行任何设计工作之前,您真正需要的是更为谨慎的功能列表。我允许获得随时间变化的分数的例子就是这样一个特征,你没有提到,但你需要设计是否需要这个功能。

答案 1 :(得分:0)

我发现这个https://laracasts.com/lessons/build-an-activity-feed-in-laravel是非常好的解决方案。希望它可以帮助某人:)