Maison > Article > base de données > Comment empêcher plusieurs votes dans un système de notation de commentaires sans stocker de tableaux dans MySQL ?
Stockage de tableaux dans MySQL : une approche alternative
Pour éviter les votes multiples dans un système d'évaluation des commentaires, vous souhaitez stocker un tableau d'utilisateurs ID dans un champ MySQL. Bien que cela ne soit pas directement pris en charge par MySQL, envisagez l'approche alternative suivante :
Schéma de base de données
Créez trois tables :
CREATE TABLE comments ( comment_id int, body varchar(100), PRIMARY KEY (comment_id) ); CREATE TABLE users ( user_id int, username varchar(20), PRIMARY KEY (user_id) ); CREATE TABLE comments_votes ( comment_id int, user_id int, vote_type int, PRIMARY KEY (comment_id, user_id) );
Exemples de données
INSERT INTO comments VALUES (1, 'first comment'); INSERT INTO comments VALUES (2, 'second comment'); INSERT INTO users VALUES (1, 'user_a'); INSERT INTO users VALUES (2, 'user_b'); INSERT INTO comments_votes VALUES (1, 1, 1); INSERT INTO comments_votes VALUES (2, 1, 1);
Vérification de l'éligibilité des utilisateurs
Pour déterminer si un utilisateur a déjà voté sur un commentaire particulier, utilisez une requête simple :
SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
Cette approche empêche plusieurs votes car la contrainte de clé primaire sur la table comments_votes garantit l'unicité.
Empêcher les votes multiples
Si l'utilisateur a déjà voté, désactivez les icônes de vote dans la logique du système en fonction du résultat de la requête.
Avantages de cette approche
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!