私は投票サイトに取り組んでいますが、投票をどのように処理すればよいのか疑問に思っています。
たとえば、SO で質問 (または回答) に投票すると、投票が保存され、ページに戻るたびに、上/下ボタンが色付けされているため、この質問に既に投票したことがわかります。
どうやってそれをしますか?つまり、いくつかのアイデアがありますが、データベースに大きな負荷がかからないかどうか疑問に思っています.
ここに私の考えがあります:
投票されたものがキャストされているかどうかをすべての質問に対してチェックするヘルパーを作成します
これは、クエリの数がページに表示されるアイテムの数 (通常は ~20) に依存することを意味します。
アイテムをループして ID を取得し、ページごとに、投票がキャストされたか NULL かを返すクエリを記述します
ページ上の項目の数は 1 つのクエリだけで問題にならないため問題ないように見えますが、一部の MVC/ドメイン モデルの設計が壊れている可能性があります。
ユーザー ログイン (または匿名ユーザーが作成されたゲスト) がすべての投票を取得すると、セッションに保存されます。新しい投票がキャストされた場合は、それをセッションに追加するだけです。
最初のものを除いてクエリはまったく必要ないため、見栄えが良いですが、これと、投じられた投票の数 (おそらく各ユーザーの束) に応じて、各ユーザーのセッションのサイズが増加し、認証が行われる可能性があります。スロー。
ごきげんよう?他のアイデアはありますか?