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

时间:2012-02-02 07:22:12

标签: badge

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

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

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

我能想到的问题是:

  1. 我们可能拥有大量徽章,因此对于用户的每项操作,我们无法检查所有徽章并检查是否可以指定徽章
  2. 在为此添加新徽章和标准时,我不想更改现有代码来处理此问题(我们可以使用一些通用解决方案吗?)
  3. 我应该选择哪个数据库(假设我的框架是这样的,它会在一个徽章的条件满足并且这些规则在DB中创建(如sql)时引发事件。或者我可以使用nosql db(如mongodb as)我的其他项目是在mongodb)
  4. 我的初步搜索给了我以下内容

    1. 规则引擎 - >将导致非常繁琐的任务Database Architecture for "Badge" System & Arbitrary Criteria (MySQL/PHP)
    2. 一个项目 - > http://drupal.org/project/user_badges(无法正确理解)
    3. 人们说你的桌子结构应该是这样的,这个......以及所有.. Best way to store Badge criteria? Creating "Badges" for my site, best way to store user badges? Using PHP

1 个答案:

答案 0 :(得分:1)

对于这种方法,我肯定会在nosql数据库上选择一个关系数据库。

您需要的第一件事就是徽章的基础结构。

ID (int)
Title (Varchar 255)
Image (Varchar 255) - would hold location to image
Points (int)

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

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)

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

Possible_badges (Varchar 255) - serialized array of Badge ID's

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

你最好的选择就是开始玩它们,如果你不明白那里有什么比你必须妥协并选择基本逻辑那么只能为可以通过数据库条目测量的任务授予徽章(主要是数值数据) )。或者花更多的时间学习(并拔掉头发)。