2016-04-22 21 views
0

我想在用户做某件事时向用户提供积分。例如:用于奖励用户活动的数据库模式

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

他们中有些人可以有类似情况存在仅仅是为了分前三篇文章,但我想我会直接在我的代码库中处理这个问题。

问题是什么将是一个好的数据库设计来处理这个问题?我想到了3张桌子。

  • user_activities - 在此表中我将存储的事件类型(我用 laravel所以它很可能是事件类的名称),并分 特定事件。
  • activity_user - user_activities和users之间的数据透视表。
  • 当然用户表

的,这是非常简单的,所以我担心,有一些情况我都没有想到,它会来咬我的未来。

回答

0

我认为你需要一个简单的“活动”的第四张表格,它只是一系列要跟踪的活动。这将有一个ID列,然后在你的user_activities表中包含一个'activity_id'链接到该列。你会毫无疑问,有各种独特的信息,例如活动表可以有像

ID列:每laravel ACTIVITY_CODE唯一ID:较长的名称:短代码应用/业务逻辑 ACTIVITY_NAME的一部分使用这是显示名称,如“回答问题” 事件:什么是用户必须做的触发活动奖励 POINT_VALUE:多少分此事件

如果你认为点可能改变未来(例如鼓励某些用户活动)我们希望跟踪当时在用户活动表中获得的实际积分,或者某种方式来跟踪这些积分在任何时间点的情况。

虽然我建议第四张表,但您真正需要的是在做任何设计工作之前要实施的功能更仔细的功能列表。我允许获得点数随时间变化的例子是一个你没有提到的特性,但是如果需要这个特性,你需要设计它。