我正在制作一个网站,其中包含需要猜测的徽标。目前这是我的数据库设置:
Users(user_id, etc)
Logos(logo_id, img, company, level)
Guess(guess_id, user_id, logo_id, guess, guess_count, guessed, time)
当用户进行猜测时,它是通过 ajax 请求完成的。在这个请求中,完成了 2 个查询。1 检索公司数据(来自Logos
),1 插入/更新数据库中的新猜测(Guess
)。
现在,在每次页面加载时,我都需要知道猜测的总数,以及每个级别有多少个徽标。这需要 2 个查询 - 一个检查,一个从每个级别Logos
获取猜测 ( guessed = 1
) 猜测的数量。Guess
现在我想实现某种徽章系统,就像这里的 SO 一样。阅读其他一些问题,我发现最好有一个单独的表,其中包含猜测的总数等,这样如果用户有 10 次猜测或 10000 次猜测,它会占用相同的资源。我没有这样做有几个原因:
- 在我的 ajax 调用中需要一个额外的查询,我想保持尽可能短
- 页面重新加载不应该经常发生,所以不应该花费太长时间
- 我不知道如何计算每个级别的猜测总数,除非表格看起来像:
AmountOfGuesses(id, user_id, level, counter)
但是根据您解锁的级别数量,它会占用更多资源。
至于徽章系统,我知道应该只检查条款,例如当用户提交答案时。当然,这需要在每次提交答案时再进行一次查询,即检查用户拥有的答案总数。然后根据该数量,应分配徽章。至于徽章,我在考虑这样的表格结构:
Badges( badge_id, name, description, etc)
BadgeAssigned( user_id, badge_id, time )
这种结构看起来对徽章有好处吗?
我的数据库其余部分的当前结构是否良好,或者如果调整它会更好?