假设我有一个类似这样的 MySQL 表:
软件表:
id int
name text
votes int
rating int
其中 votes 是某人对该项目投票的次数,而 rating 是这些投票的平均值。
示例数据:
id: 0
name: FooBar!
votes: 5
rating: 3
现在另一个用户出现并给它评分 1。我将如何计算新的评分?每次有人投票时最好只制作另一张桌子并输入一个新行
id int
software_id int
score int
user_id int
然后计算每次重新计算平均评分?我认为这会对服务器造成影响。
第二个问题:
我希望能够按评分最高的方式订购软件,但我不希望平均评分为 5 星但只有 1 票的程序排名高于平均评分为 4 的程序(893 票)。我将如何做到这一点?