我应该如何存储站点广泛系统的用户级别?在DB?还是在飞?

时间:2011-05-27 20:35:34

标签: php mysql database database-design codeigniter

我正在我的网站上构建用户体验/级别系统。我试图实现的效果类似于流行的游戏网站Kongregate,当用户在网站上完成特定的操作时,他们会获得积分。一旦积分达到一定数量,用户将升级。这样可以为网站提供类似感觉的游戏,同时也能吸引用户的注意力。

我遇到的问题是弄清楚它是否最好...... 1.将每个级别存储在数据库表中,然后通过ID将用户匹配到该级别? 2.或者存储用户对完成的操作的体验,然后在每次需要在关卡上调用时将该数字相加?

还应该注意,该级别将用于计算该系统的其他方面。即10级用户将获得他们的个人资料,网站上增加的功能等额外的schwag ... A LA Stack O。

关于正确方向的任何指示?

2 个答案:

答案 0 :(得分:3)

  • 将级别及其关联的“swag”/“privileges”存储在数据库中。
  • 将用户的当前级别存储在数据库中的个人资料中。
  • 存储导致数据库中的点的用户操作

当他们从您的网站添加积分(通过评论,或玩游戏或其他任何东西)时,可以动态计算,但一旦确定完成累加,将其存储在数据库中(在操作表中)并更新他们的总分(在用户表或其他内容中),以便网站的其他部分可用。

这使一切变得更容易:

  • 当你想看到他们拥有什么特权时,只需将他们的总数与下一个最低(或相等)的“赃物”水平进行比较
  • 当你想得到他们的总数时,它只是一个电话而不是一堆查询和数学
  • 当你想要显示他们所做的事情清单时,你就可以在数据库中找到它
  • 您不会通过在需要显示总数的每种不同类型的网页上添加总计来重复代码。
  • ......可能还有很多其他原因。出于某种原因,数据在工具名称中。

答案 1 :(得分:0)

我认为每次用户获得更多积分时,最好确定“等级”。因此,当他/她做某事以获得更多积分时,那么就进行计算。如果该点保证级别增加,则更改用户配置文件中的level_id。这样就可以最小化服务器端的计算。