9

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

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

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

我能想到的问题是:

  1. 我们可能有大量的徽章,所以在用户的​​每个动作上,我们不能检查所有的徽章并检查是否可以分配任何徽章
  2. 在为此添加新徽章和标准时,我不想更改现有代码来处理这个问题(我们可以有一些通用的解决方案吗?)
  3. 我应该选择哪个数据库(假设我的框架类似,它会在满足一个徽章的标准并且在数据库中创建这些规则(如 sql)时引发事件。或者我可以选择 nosql db(如 mongodb 作为我的其余部分)该项目在mongodb中)

我最初的搜索给了我以下的东西

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

1 回答 1

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

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

您最好的选择是开始与他们一起玩,如果您不了解那里的内容,那么您必须妥协并遵循基本逻辑,因此只为可以通过数据库条目(主要是数字数据)衡量的任务授予徽章。或者花更多的时间学习(并拉出你的头发)。

于 2012-02-02T17:01:58.917 回答