MySQL Note / système de vote (commande accurratly par les plus cools tenant le numéro de compte des votes)

StackOverflow https://stackoverflow.com/questions/1670005

Question

Disons que j'ai une table MySQL qui est quelque chose comme ceci:

Tableau de logiciel:

id int
name text
votes int
rating int

Où votes seraient le nombre de fois que quelqu'un a voté pour cet article et note pour la moyenne de ces votes.

Les données de l'exemple:

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

Maintenant un autre utilisateur arrive et ce taux a 1. Comment aurais-je caculate la nouvelle note? serait préférable de simplement faire une autre table et entrez une nouvelle ligne chaque fois que quelqu'un vote comme

id int
software_id int
score int
user_id int

et calculer ensuite la re-calcul de la note moyenne à chaque fois? Je pense qu'il faudrait un péage sur le serveur.

Deuxième question:

Je voudrais pouvoir commander le logiciel le plus haut mais je ne rated veux pas un programme avec une note moyenne 5 étoiles mais seulement 1 vote de rang plus élevé qu'un programme avec une moyenne de 4 893 votes . Comment puis-je arriver?

Était-ce utile?

La solution

Question 1a: Comment calculer la nouvelle note moyenne:

vote count : 5
average rating: 3

nouveau vote avec note d'un

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

Vous devez prendre le « poids » (1/6 des voix) du nouveau vote et l'ancien moyen (5 occurences sur 6) en compte .. l'ancien 3 moyen est compté 5 fois, la nouvelle note une fois => 5 * 3 + 1 = 16. Ensuite, vous divisez par le total des 6 votes reçus.

Question 1b: Si vous stocker votes

dépend vraiment si vous vous attendez à être gamedor pas

Je vous suggère de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top