相关疑难解决方法(0)

"徽章"系统和任意标准的数据库架构(MySQL/PHP)

匆匆-问题:

总而言之,我对如何设计这样一个允许无限制徽章规则创建而不需要对数据库中以前存在的用户表进行结构更改的数据库感到困惑.

存储徽章标题,标准等.该表的外观如何?

  • badge_id(1)
  • badge_title(10K徽章)
  • badge_image(10k.jpg)
  • badge_criteria([posts]> = 10000)
    ...

啰嗦,问:

我想在我自己的个人项目中实施徽章系统,但我正在寻求一些关于如何最好地做这样的事情的建议.我一直在阅读有关徽章系统的一些问题,但没有看到数据库架构受到太多关注.

基于用户点的徽章(假设的"10k徽章")看起来非常简单.任何影响用户声誉的事件(upvotes,downvotes,answer-accepted等)都会调用一种方法来审核用户的新声誉,并可能颁发徽章.

该系统听起来非常简单,但对于想要在未来几乎不费力地创建无数徽章的管理员而言,这看起来像是一个数据库 - 其中一些可能基于不同的标准,而不仅仅是用户声誉.

用户信誉可能是用户记录本身的值.但理想情况下,您不希望在创建新徽章时不必在用户表中添加新字段吗?例如"Edited 100 Entries"徽章 - 您不会在用户表中创建新列"entries_edited",不是吗?然后在每个条目编辑后增加...

任何提示?

Stackoverflow存档:


注意:我不是问如何将徽章与用户关联起来.我不是问如何颁发徽章(将以编程方式完成)

database-design badge

47
推荐指数
4
解决办法
6180
查看次数

存储徽章标准的最佳方法是什么?

我一直在考虑如何在新网站上实现类似于SO的徽章功能.存储徽章标准的最佳方法是什么?

两个想法:

  • 所有代码
  • '第二系统' - 创建用于定义徽章及其标准的元架构.将一些信息存储在数据库中,并让代码查询它以找出徽章及其标准.

还有更好的方法吗?

architecture badge

33
推荐指数
2
解决办法
4333
查看次数

设计徽章系统,在哪里解雇业务逻辑?在代码或存储过程中?或两者?

如果你要构建一个类似于SO的徽章系统,你会直接将逻辑/业务层放在数据库中(通过存储过程,预定的sql作业)还是将它放在服务器端?

从我能想到的,你必须:

  1. 列出与当前用户操作相关的徽章
  2. 检查用户是否已经拥有徽章
  3. 为用户插入徽章

潜在的选择

  1. 调用存储过程等的Web应用程序中的业务逻辑
  2. 仅存储过程
  3. 每隔x分钟运行一次的SQL Server作业
  4. 每隔x分钟运行一次的Windows服务

是否需要这些组合?我认为,因为一些徽章是基于给定问题的里程碑,也许批量工作更好?

更新

您可以修改徽章系统,然后为每个人重新运行整个徽章链接的系统会更好.也就是说你改变了一些徽章的逻辑,现在你必须将它重新应用到所有的问题/答案/投票/等.

有趣的问题要解决!!

architecture

25
推荐指数
3
解决办法
2535
查看次数

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

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

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

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

我能想到的问题是:

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

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

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

badge

7
推荐指数
1
解决办法
768
查看次数

如何用nosql构建成就和徽章

我目前有一个使用mongodb的社交游戏应用程序用于它的数据库.我的问题是,如果我想创建一个积分和徽章系统,有什么建议.成就/徽章的业务逻辑可能变得非常复杂并且非常特别,因此实时授予徽章似乎效率不高.我想象将跟踪的动作添加到某个地方的队列,即Amazon SQS,或者只是将用户的活动源作为队列使用,并让另一个离线工作进程通过,只处理每个动作/活动的效果,看看是否有阈值任何特定徽章都是划线的.

我对这种方法的担心是,徽章查询似乎变得非常密集,我还必须跟踪大量的操作.我可以设想一些成就,例如过去4周内每周获得第二名的人的徽章,或者在50个州的每一个中都有朋友的人的徽章......等等......

对于这种类型的东西,有更优雅或经过验证的方法吗?除了mongo之外,使用另一个数据库作为成就/活动供稿/排行榜是否有意义,创建一个mongo/other db hybrid环境?

像Redis,Neo4J这样的选择,还是普通的旧SQL Server都是混合解决方案的不错选择?我喜欢Mongo所以它将作为我们的主要数据库,但很想知道是否添加另一个数据库将有所帮助.

database-design achievements mongodb neo4j badge

5
推荐指数
1
解决办法
1010
查看次数