给用户徽章

Mad*_* D. 4 database optimization scalability achievements badge

我正在实施一个网站,我的用户将在完成某些目标或任务时获得徽章.
徽章也有水平/颜色.因此,例如,用户将从0级青铜徽章开始,随着他们的进步,他们将获得1级青铜徽章,并且在更多级别之后,他们将获得0级银徽章等等.

我正在构建数据库,我不知道如何将徽章连接到用户.

我提出的想法是为用户创建1个表,为徽章创建1个表,并将第3个UserID连接到BadgeID:

我关心的是优化.随着越来越多的用户加入网站并获得徽章,访问该表并搜索记录的速度会变慢吗?

在这里读到如何在Java中使用单例在服务器上定期运行脚本,并根据规则检查用户的状态,以升级符合上限目标的标记.这种方法真的可扩展吗?或者我应该关注这个帖子

TIA

Dag*_*bit 5

随着越来越多的用户加入网站并获得徽章,访问该表并搜索记录的速度会变慢吗?

如果表的索引正确,则不显着.

想想这样......如果百科全书中的文章数量是五倍,那么在百科全书中找到一篇文章需要花费更长的时间吗?

并不是的; 因为百科全书按字母顺序编号,即使文章数量显着增加,也不需要花费太长时间才能找到.但是,如果它没有被编入索引,那么随着百科全书的大小增长,查找内容所需的时间会呈指数级增长.


鉴于你的问题和你所关联的资源,我觉得你正专注于狭隘的"徽章",可能会让你错过更一般的画面.

例如,如果徽章总是按顺序发出,您只需要记录某人得到的最后一张徽章; 在这种情况下,他们必须得到所有徽章,直到最后一个徽章.如果它们不是增量的,那么使用您描述的链接表可能会更好.

尝试用与数据库或数据建模相关的术语描述您的问题,而不是专门针对您的问题域的术语("徽章").这应该可以帮助您找出您应该寻找的信息类型,并最终引导您采取正确的行动方案.