Bonjour

Je me pose la question comment mettre en place un système de vote.

En gros j'aimerais qu'une personne puisse "voter" pour quelque chose (peu importe, on peut réduire le problème a un seul type de données, avec juste un index/clé).
Je pense à un système simple comme "J'aime/J'aime pas".

J'aimerais qu'une personne ne puisse voter qu'une fois.

Donc en gros je me dis que je vais faire une table "vote" et mettre dedans tous les votes des utilisateurs (clé user, clé élément voté, aime/aime pas).

Dans mes premiers essais avec PostGreSql, sur chaque client de mon jeu, je refaisais sans cesse les requêtes pour calculer les classements. Mais certaines personnes m'ont indiqué que c'était lent chez eux.
Donc pour un système de vote, j'imagine qu'il n'est pas conseillé de calculer sans cesse la somme de tous les votes d'un item pour faire des classements. Il est peut-être mieux de stocker quelque part le résultat.
Existe-il un système pour que ce soit la base de données qui mette à jour les totaux quand il y a un vote qui est ajouté ? (est-ce ça les "triggers" ?)

Pour qu'un utilisateur ne vote pas deux fois, il faut que je vérifie si il a déjà voté pour tel ou tel élément et proposer le choix "J'aime" ou "J'aime pas" en fonction. Cela fait pas mal de recherche dans une grosse table. Ne vaut-il pas mieux créer une table de vote pour chaque élément ? (j'ai beaucoup d'utilisateurs et beaucoup d’éléments). Ça fera plein de tables, mais peut-être est-ce mieux pour les recherches ?

Pas vraiment une question, mais plutôt une réflexion à voix haute. Vos commentaires sont les bienvenus (je suis toujours un gros débutant, n’hésitez pas à m’éclairer sur des mécanismes qui m'auraient échappé).

Le dev blog de mon jeu: http://blog.raggededge-online.com/