2012-02-02 48 views
7

我目前正在设计一个教育网站。设计徽章分配系统框架的最佳方法

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

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

问题,我能想到的与此有:

  1. 我们可能有大量的徽章,等等的用户的每个动作,我们不能检查所有证件和检查是否有徽章可以被分配
  2. 在提供这方面的一个新的标志和标准,我不想改变现有的代码来处理这个(我们可以有一些通用的解决方案?)
  3. 我应该选择哪一个数据库(可以说,如果我的框架就像它,当一个徽章的标准满足并且这些规则在DB中创建时(如sql),它会引发事件;或者我可以使用nosql db(比如m ongodb我的项目的其余部分是在MongoDB中)

我最初的搜索给了我下面的事情

  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
+0

早些时候在这个问题上的工作总结在http://stackoverflow.com/questions/9835321/designing-a-pluggable-points-and-badges-system – 2012-03-28 20:57:45

回答

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 

然后,您可以正常化,只给出相关的任何具体任务的规则引擎徽章。

最好的办法就是开始和他们一起玩,如果你不明白那里有什么东西比你必须妥协和去基本的逻辑,所以只有奖励徽章的任务可以测量数据库条目(主要是数字数据)。或花更多时间学习(并拉出你的头发)。