コメントできるオブジェクトがいくつかある PHP アプリに取り組んでいます。各コメントは投票でき、ユーザーは +1 または -1 を付けることができます (Digg や Reddit のように)。現在、user_id とその投票情報を保持する「votes」テーブルを計画していますが、これはうまく機能しているようです。
問題は、各オブジェクトには数百のコメントがあり、それらが個別のコメント テーブルに格納されているということです。コメントを読み込んだ後、投票を集計し、ユーザーに対する各投票を個別にチェックして、ユーザーが 1 回しか投票できないことを確認する必要があります。これは機能しますが、データベースを集中的に使用しているように見えます-コメントだけのための多くのクエリ。
DB への負担が少なく、これを行うためのより簡単な方法はありますか? 現在のデータベース構造は最善の方法ですか?
現在のデータベース構造をより明確にするには:
コメント表:
- ユーザーID
- object_id
- total_votes
投票表:
- comment_id
- ユーザーID
- 投票
最終目標:
- 最小数の MySQL クエリで各コメントにユーザーが 1 回だけ投票できるようにする (各オブジェクトには複数のコメントがあります)