0

私は、各カテゴリのトップの人を最初に表彰するアプリケーションに取り組んでいます。カテゴリで 1 位になる方法は、過去 30 日間 (またはそこら) 日間で最も多くの票を獲得することです。したがって、合計 2,000 票を獲得したものの、過去 30 日間に 2 票しか獲得できなかったとしても、10 票を獲得したものの、過去 30 日間に 10 票すべてを獲得した人は、あなたの上にランク付けされます。MySQL データベースを使用してこのタイプのシステムを作成する最善の方法と、データベースを構築する方法についてアドバイスを求めようとしています。

これについての最善の方法がよくわかりません。アドバイスをいただければ幸いです。

4

1 に答える 1

0

最初に決定しなければならないことは、投票ごとに記録を保持するかどうかです。これには巨大なテーブルが必要になる可能性がありますが、多くの情報を保持できるため、ストレージとパフォーマンスを情報と引き換えにする必要があります。これは、実装ではなく、ビジネス ロジックによって回答する必要があります。

すべての投票を保持したいと仮定し、タイムスタンプを付けて保持し、ユーザー個人テーブルを投票テーブルに結合し、WHERE節を使用して最後の N 日間のみを選択し、COUNT()集計を使用してカウントするだけです。投票。

すべての投票を保持したくない場合は、人、日、および投票数を含む累積テーブルを用意する必要がありSUM()ますCOUNT()

于 2013-04-15T11:05:21.570 に答える