Maison > Article > base de données > Comment stocker efficacement les tableaux utilisateur dans MySQL : une meilleure alternative au stockage direct ?
Comment stocker efficacement les tableaux utilisateur dans MySQL : une meilleure alternative
Introduction
À Pour empêcher plusieurs votes d'utilisateurs dans un système de notation des commentaires, il est essentiel de stocker l'ensemble des identifiants d'utilisateurs qui ont déjà voté. Cependant, stocker des tableaux directement dans des champs MySQL peut être problématique et entraîner des problèmes de cohérence des données. Cet article explore une alternative plus efficace qui garantit l'intégrité référentielle et évite les lignes orphelines.
Création de tables relationnelles normalisées
Au lieu de stocker des tableaux dans un seul champ, créez ce qui suit tables relationnelles normalisées : table
Application de l'intégrité référentielle
Pour assurez la cohérence des données, ajoutez des contraintes de clé étrangère à la table comments_votes :
<code class="sql">CREATE TABLE comments_votes ( comment_id INT, user_id INT, vote_type INT, PRIMARY KEY (comment_id, user_id), FOREIGN KEY (comment_id) REFERENCES comments (comment_id), FOREIGN KEY (user_id) REFERENCES users (user_id) ) ENGINE=INNODB;</code>
Insertion d'exemples de données
Remplissez les tables avec des exemples 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>
Prévenir les votes en double
Essayer d'insérer un vote en double entraînera une erreur en raison de l'index unique :
<code class="sql">INSERT INTO comments_votes VALUES (1, 1, 1); ERROR 1062 (23000): Duplicate entry '1-1' for key 'PRIMARY'</code>
Avantages de cette approche
L'approche alternative offre plusieurs avantages :
Conclusion
Plutôt que de stocker un tableau données dans un seul champ MySQL, l'utilisation de tables relationnelles normalisées avec des clés étrangères offre un moyen plus fiable et plus efficace de gérer les tableaux. Cette approche garantit l'intégrité référentielle, évite les incohérences des données et améliore les performances, ce qui en fait une solution idéale pour les scénarios dans lesquels les tableaux doivent être stockés et gérés dans une base de données.
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!