设计徽章分配系统框架的最佳方法

gsa*_*wal 7 badge

我目前正在设计一个教育网站.

为此,我们需要根据用户的活动(如stackoverflow)为用户分配一些徽章.

我一直在寻找一个框架.任何人都有任何想法,如何做到这一点?表设计等

我能想到的问题是:

  1. 我们可能拥有大量徽章,因此对于用户的每个操作,我们都无法检查所有徽章并检查是否可以分配任何徽章
  2. 在为此添加新徽章和标准时,我不想更改现有代码来处理此问题(我们可以使用一些通用解决方案吗?)
  3. 我应该选择哪个分贝(可以说,如果我像框架,它引发的事件数据库中创建了一个徽章满足这些规则标准时(如SQL).或者我可以去的NoSQL数据库(如MongoDB的是我的休息该项目在mongodb)

我的初步搜索给了我以下内容

  1. 规则引擎 - >将导致"徽章"系统和任意标准(MySQL/PHP)的任务数据库架构非常繁琐
  2. 一个项目 - > http://drupal.org/project/user_badges(无法正确理解)
  3. 人们说你的表结构应该是这样的,这个......以及所有.. 存储徽章标准的最佳方法是什么? 为我的网站创建"徽章",存储用户徽章的最佳方式?使用PHP

Geo*_*ith 1

对于这种方法,我肯定会选择关系数据库而不是 nosql 数据库。

您首先需要的是徽章的底层结构。

ID (int)
Title (Varchar 255)
Image (Varchar 255) - would hold location to image
Points (int)
Run Code Online (Sandbox Code Playgroud)

然后,您需要存储用户获得的所有徽章。所以在你的用户部分:

Badges (Varchar) - holds a serialized array of badge IDs 
Badge_count (int) - So you can get the total without parsing through Badges.
Point_count (int)
Run Code Online (Sandbox Code Playgroud)

现在您说您无法查询每个执行操作的所有徽章,因此您还应该为每个操作存储一个条目。例如,在您的“帖子”表中说:

Possible_badges (Varchar 255) - serialized array of Badge ID's
Run Code Online (Sandbox Code Playgroud)

然后,您可以标准化并仅将与任何特定任务相关的徽章提供给规则引擎。

你最好的选择就是开始使用它们,如果你不明白那里有什么,那么你必须妥协并寻求基本逻辑,因此只为可以通过数据库条目(主要是数字数据)衡量的任务授予徽章。或者花更多的时间学习(并且费尽心思)。