【问题标题】:Best approach for designing framework for badge assigning system设计徽章分配系统框架的最佳方法
【发布时间】:2012-02-24 21:11:15
【问题描述】:

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

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

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

我能想到的问题是:

  1. 我们可能有大量的徽章,所以对于用户的每一个动作,我们无法检查所有的徽章并检查是否可以分配任何徽章
  2. 在为此添加新徽章和标准时,我不想更改现有代码来处理此问题(我们可以提供一些通用解决方案吗?)
  3. 我应该选择哪个 db(假设我的框架类似,当一个徽章的标准满足并且这些规则在 DB(如 sql)中创建时引发事件。或者我可以选择 nosql db(如 mongodb我剩下的项目在 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

【问题讨论】:

标签: badge


【解决方案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

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

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

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2012-10-03
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多