2

次のような MySQL テーブルがあるとします。

ソフトウェア表:

id int
name text
votes int
rating int

投票は誰かがそのアイテムに投票した回数であり、評価はそれらの投票の平均です。

サンプルデータ:

id: 0
name: FooBar!
votes: 5
rating: 3

別のユーザーがやってきて、これを 1 と評価しました。新しい評価はどのように計算すればよいですか? 別のテーブルを作成し、誰かが投票するたびに新しい行を入力する方が良いでしょう

id int
software_id int
score int
user_id int

毎回平均評価を再計算しますか?サーバーに負荷がかかると思います。

2 番目の質問:

ソフトウェアを最高評価で注文できるようにしたいのですが、平均 5 つ星評価のプログラムではなく、平均 4 つ星 893 票のプログラムよりも 1 票しか高く評価されたくないのです。どうすればこれを達成できますか?

4

1 に答える 1

3

質問 1a : 新しい平均評価の計算方法:

vote count : 5
average rating: 3

評価 1 の新しい投票

             5*3+1
 new rating= ----- = 16/6 = 8/3 = 2.666.. 
               6

新しい投票と古い平均 (6 回中 5 回) の「重み」(すべての投票の 1/6) を考慮する必要があります..古い平均 3 は 5 回カウントされ、新しい評価は 1 回 => 5 *3 +1= 16. 次に、受け取った 6 票の合計で割ります。

質問 1b: 投票を保存する必要がありますか?

あなたがゲームになることを期待するかどうかに本当に依存します

そうすることをお勧めします。

于 2009-11-03T20:46:24.730 に答える