IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PostgreSQL Discussion :

Système de vote


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 18
    Points
    18
    Par défaut Système de vote
    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/

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Moi je le vois en 3 tables dont une que vous devez déjà posséder c'est celle de vos utilisateurs/client/participant ou je ne sais comment vous la nommez.

    user :
    id-user int
    nom varchar
    prenom varchar
    ........

    sondage
    id-sondage int
    id-user int
    id-resultat-sondage
    vote int(1) (1 ou 0 )

    resultat-sondage
    id-resultat-sondage int
    nom-sondage varchar
    positif int
    negatif int



    Quand un user vote dans un sondage (quelconque) on l'indique dans la table sondage et un incrémente la table resultat-sondage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE resultat-sondage SET posistif = positif +1 WHERE id-resultat-sondage = (id du sondage) ;
     
    ou
     
    UPDATE resultat-sondage SET négatif = negatif +1 WHERE id-resultat-sondage = (id du sondage) ;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Merci.
    Le conseil c'est donc d'utiliser une seule table pour stocker tous les votes.
    Et pour qu'un utilisateur ne vote pas deux fois, rechercher dans cette table.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Dans la table resultat-sondage

    ligne par sondage


    Et dans la table sondage

    tu mets tout les sondages où un user a voté

  5. #5
    Membre à l'essai
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Dans mon cas, je ne pense pas avoir besoin de créer de sondages, puisque en gros, les utilisateurs pourront "voter" pour n'importe quel élément.
    Par exemple, Circuits de 1 a 100 ou Vaisseau de 1 à 10.
    La table vote serait donc:
    Christophe, Circuit 45, J'aime
    Laurent, Vaisseau 8, J'aime pas
    Christophe, Circuit 41, J'aime
    ....

    A moins que je n'ai pas compris l’intérêt de créer des "sondages" ici ?

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Oui, mais tu te plains de lenteur.

    Et tu nous proposes une base de données mal modélisé et non normalisé

    Je te conseil les lectures suivantes :

    http://laurent-audibert.developpez.c...urs-BD015.html

    http://sgbd.developpez.com/actu/3450...es-par-SQLpro/

    Et surtout celui-ci

  7. #7
    Membre à l'essai
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Merci pour la réponse.

    Je ne me plains de rien. J'essaie juste de faire comprendre ce dont j'ai besoin. Ma remarque était la juste pour être sûr que j'ai bien été clair.

    Je suis là justement pour comprendre comment implémenter.

    Si tu as bien compris mon problème alors très bien.

    Merci pour les lectures, je vais aller voir cela.


  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par Christophe78180 Voir le message
    Merci pour la réponse.

    Je ne me plains de rien. J'essaie juste de faire comprendre ce dont j'ai besoin. Ma remarque était la juste pour être sur que j'ai bien été clair.


    Sorry ai confondu de post

  9. #9
    Membre à l'essai
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Je ne connaissais pas le principe de normalisation.
    Je vais prendre le temps de lire et de comprendre tout cela (très bien le dernier lien, merci)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    Avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Sorry ai confondu de post
    Ok pas de soucis

Discussions similaires

  1. [Système] Système de vote sécurisé
    Par mathieu3392 dans le forum Langage
    Réponses: 4
    Dernier message: 22/11/2007, 14h18
  2. Système de votes
    Par Auden dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2007, 13h27
  3. [AJAX] système de vote ajax
    Par sisco97 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2007, 03h52
  4. [Système] Questions système de votes
    Par masseur dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2006, 15h47
  5. [MySQL] Système de votes (pour les membres) : cmt le créer ?
    Par yazerty dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 20/02/2006, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo