Maison >base de données >tutoriel mysql >Comment empêcher les votes multiples dans un système de notation des commentaires utilisant MySQL ?
Stockage de tableaux dans MySQL pour le système de vote
Pour éviter plusieurs votes dans un système d'évaluation des commentaires, des tableaux d'ID utilisateur peuvent être stockés dans MySQL . Voici comment y parvenir à l'aide d'une table d'intersection :
Schéma de base de données
<code class="sql">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) );</code>
Insertion de données
<code class="sql">INSERT INTO comments VALUES (1, 'first comment'); INSERT INTO users VALUES (1, 'user_a'); INSERT INTO comments_votes VALUES (1, 1, 1);</code>
La table comments_votes stocke l'ID de commentaire, l'ID utilisateur et le type de vote. La clé primaire composite empêche les votes en double sur le même commentaire.
Contraintes de clé étrangère
Pour garantir l'intégrité référentielle et éviter les lignes orphelines :
<code class="sql">CREATE TABLE comments ( ... ) ENGINE=INNODB; CREATE TABLE users ( ... ) ENGINE=INNODB; CREATE TABLE comments_votes ( ... FOREIGN KEY (comment_id) REFERENCES comments (comment_id), FOREIGN KEY (user_id) REFERENCES users (user_id) ) ENGINE=INNODB;</code>
Cela garantit qu'une ligne comments_votes fera toujours référence à un commentaire et à un utilisateur existants.
Avantages de la table d'intersection
L'utilisation d'une table d'intersection évite les complications suivantes :
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!