1

ランキングシステム(映画や製品を見つめるなど)の悪用を保護および防止する方法についていくつかの質問を見てきましたが、実際にそれを実装することについては何もありません. この質問を簡単に言うと、私にとってセキュリティは問題ではありません。このシステムにアクセスする人々はすべて信頼されており、ランク付けシステムの乱用が発生したとしても些細なことであり、原因よりも簡単に元に戻すことができます。とにかく、投票を保存する方法に興味があります。

1 つの考えは、各投票をログに記録し、すぐに、スケジュールされた時間に、または製品のロードごとに (これは非効率的ですが、おそらくそうではないかもしれません)、投票が集計され、0 から 5 の間で 2 倍になる投票テーブルを用意することです。製品テーブルの製品エントリに更新されます。

または、製品テーブルに合計スコアと投票数を保存し、表示するときにそれを分割し、投票を合計に追加し、誰かが投票したときに数値を増やします。

それとも、私が考えていないより良い方法はありますか?製品テーブルに「評価」フィールドを追加したいのですが、追加データなしで投票を更新する方法が思いつきません。

繰り返しますが、データの整合性は重要ですが、決して必要ではありません。何か考えはありますか?

4

3 に答える 3

1

私はあなたの製品の「スコア」を保持しますが、誰が何に投票したかを確認するための投票表も保持します。そして、誰かが投票したら、投票を挿入し、製品スコアを更新します。

これにより、すばやく並べ替えることができます。また、テーブルを使用してスコアを再計算したり、ユーザーの二重投票を停止したりすることもできます。

投票を書いてスコアを更新するのを待つ必要はありません。これにより問題が発生し、従来のシステムのように動作している場合(書き込みよりも読み取りが多い)、メリットはありません。

于 2009-06-29T09:07:11.203 に答える
0

私はオリに同意します。さらに、スコアをキャッシュすることができます。したがって、キャッシュ内の製品スコアを更新すると、アプリケーションは常にキャッシュ値を取得します。したがって、ページを更新しても、データベースにアクセスすることなく最新のスコアを取得できます。

于 2009-07-02T07:00:11.503 に答える
0

つまり、投票をテーブルに個別に保存し、定義された戦略で製品のテーブル内の製品のそれぞれのランキングを更新しますか? 効率の悪い保管方法のようです。その理由には背景があるのか​​もしれません。しかし、なぜすべての投票を 1 つのテーブルに保存して、それらの投票をそれぞれの製品に参照し続けたくないのでしょうか。これにより、リアルタイムのカウントが得られます。

UI では、すべての投票の平均をほぼ整数に計算して表示します。それで十分ですよね?または、何か不足していますか?

于 2009-06-29T09:05:59.833 に答える