成就/徽章系统
我一直在浏览这个网站寻找答案,但我仍然有点不确定如何在其数据库结构和实现中规划类似的系统。
在PHP和MySQL中,很明显,一些成就是立即获得的(当采取专门行动时,在SO的情况下:填写所有配置文件字段),尽管我知道SO会在一定时间后更新并分配徽章。有这么多用户和徽章,这不会造成性能问题(就规模而言:用户和徽章的数量都很高)。
因此,我假设数据库结构将像这样简单:
Badges | Badges_User | User
----------------------------------------------
bd_id | bd_id | user_id
bd_name | user_id | etc
bd_desc | assigned(bool) |
| assigned_at |
但正如有些人所说,最好采用增量样式方法,以便拥有1,000,000个论坛帖子的用户不会降低任何功能的速度。
那么,它是另一个可以增量的徽章表,还是只是上面badges_user表中的“进度”字段?
感谢您的阅读,请专注于所需系统的可扩展性(例如数千名用户和20至40个徽章)。
编辑:为了解决一些困惑,我assigned_at作为日期/时间,授予徽章的标准最好放在为每个徽章准备的查询/功能中,不是吗?(更好的灵活性)