总而言之,我对如何设计这样一个允许无限制徽章规则创建而不需要对数据库中以前存在的用户表进行结构更改的数据库感到困惑.
存储徽章标题,标准等.该表的外观如何?
...我想在我自己的个人项目中实施徽章系统,但我正在寻求一些关于如何最好地做这样的事情的建议.我一直在阅读有关徽章系统的一些问题,但没有看到数据库架构受到太多关注.
基于用户点的徽章(假设的"10k徽章")看起来非常简单.任何影响用户声誉的事件(upvotes,downvotes,answer-accepted等)都会调用一种方法来审核用户的新声誉,并可能颁发徽章.
该系统听起来非常简单,但对于想要在未来几乎不费力地创建无数徽章的管理员而言,这看起来像是一个数据库 - 其中一些可能基于不同的标准,而不仅仅是用户声誉.
用户信誉可能是用户记录本身的值.但理想情况下,您不希望在创建新徽章时不必在用户表中添加新字段吗?例如"Edited 100 Entries"徽章 - 您不会在用户表中创建新列"entries_edited",不是吗?然后在每个条目编辑后增加...
任何提示?
Stackoverflow存档:
注意:我不是问如何将徽章与用户关联起来.我不是问如何颁发徽章(将以编程方式完成)
我一直在考虑如何在新网站上实现类似于SO的徽章功能.存储徽章标准的最佳方法是什么?
两个想法:
还有更好的方法吗?
如果你要构建一个类似于SO的徽章系统,你会直接将逻辑/业务层放在数据库中(通过存储过程,预定的sql作业)还是将它放在服务器端?
从我能想到的,你必须:
潜在的选择
是否需要这些组合?我认为,因为一些徽章是基于给定问题的里程碑,也许批量工作更好?
更新
您可以修改徽章系统,然后为每个人重新运行整个徽章链接的系统会更好.也就是说你改变了一些徽章的逻辑,现在你必须将它重新应用到所有的问题/答案/投票/等.
有趣的问题要解决!!
我目前正在设计一个教育网站.
为此,我们需要根据用户的活动(如stackoverflow)为用户分配一些徽章.
我一直在寻找一个框架.任何人都有任何想法,如何做到这一点?表设计等
我能想到的问题是:
我的初步搜索给了我以下内容
我目前有一个使用mongodb的社交游戏应用程序用于它的数据库.我的问题是,如果我想创建一个积分和徽章系统,有什么建议.成就/徽章的业务逻辑可能变得非常复杂并且非常特别,因此实时授予徽章似乎效率不高.我想象将跟踪的动作添加到某个地方的队列,即Amazon SQS,或者只是将用户的活动源作为队列使用,并让另一个离线工作进程通过,只处理每个动作/活动的效果,看看是否有阈值任何特定徽章都是划线的.
我对这种方法的担心是,徽章查询似乎变得非常密集,我还必须跟踪大量的操作.我可以设想一些成就,例如过去4周内每周获得第二名的人的徽章,或者在50个州的每一个中都有朋友的人的徽章......等等......
对于这种类型的东西,有更优雅或经过验证的方法吗?除了mongo之外,使用另一个数据库作为成就/活动供稿/排行榜是否有意义,创建一个mongo/other db hybrid环境?
像Redis,Neo4J这样的选择,还是普通的旧SQL Server都是混合解决方案的不错选择?我喜欢Mongo所以它将作为我们的主要数据库,但很想知道是否添加另一个数据库将有所帮助.