推測が必要なロゴを含む Web サイトを作成しています。現在、これは私のdbセットアップです:
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 つのクエリが必要です。1 つは をチェックし、もう 1 つはレベルごとの推測 ( )Logos
の量を取得します。guessed = 1
Guess
ここで SO のように、ある種のバッジ システムを実装したいと思います。他のいくつかの質問を読んで、ユーザーが10回または10000回の推測を行った場合に同じリソースを使用できるように、推測の合計量などを含む別のテーブルを作成する方がよい場合があることがわかりました。私はこれをしませんでしたいくつかの理由で:
- 私のajax-callで追加のクエリが必要ですが、これはできるだけ短くしたいと思います
- ページのリロードはそれほど頻繁に発生するべきではないため、時間がかかりすぎないようにする必要があります
- テーブルが次のようにならない限り、レベルごとの推測の合計量をカウントする方法はわかりませんが、
AmountOfGuesses(id, user_id, level, counter)
ロックを解除したレベルの量に応じて、より多くのリソースが必要になります.
バッジ システムに関しては、ユーザーが回答を送信するときなどに条件を確認する必要があることはわかっています。もちろん、回答が送信されるたびに別のクエリが必要になる場合、つまり、ユーザーが持っている回答の合計量を確認する必要があります。次に、その金額に応じて、バッジを割り当てる必要があります。バッジに関しては、次のようなテーブル構造を考えていました。
Badges( badge_id, name, description, etc)
BadgeAssigned( user_id, badge_id, time )
この構造はバッジに適しているように見えますか?
データベースの残りの部分の現在の構造は適切ですか、それとも調整した方がよいですか?