Stockage de tableaux dans MySQL : une approche alternative pour empêcher le vote multiple
MySQL ne prend pas en charge nativement le stockage de tableaux dans les champs. Cependant, une conception de base de données relationnelle peut être utilisée pour obtenir un résultat similaire.
Conception de base de données
Considérez le schéma de base de données suivant :
CREATE TABLE comments (
comment_id INT PRIMARY KEY,
body VARCHAR(100)
);
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(20)
);
CREATE TABLE comments_votes (
comment_id INT,
user_id INT,
vote_type INT,
PRIMARY KEY (comment_id, user_id)
);
La table comments_votes utilise une clé primaire composite pour garantir que chaque utilisateur ne peut voter qu'une seule fois sur un commentaire donné.
Exemples de données
-- Insert sample data
INSERT INTO comments VALUES (1, 'First comment');
INSERT INTO comments VALUES (2, 'Second comment');
INSERT INTO comments VALUES (3, 'Third comment');
INSERT INTO users VALUES (1, 'user_a');
INSERT INTO users VALUES (2, 'user_b');
INSERT INTO users VALUES (3, 'user_c');
-- Record user 1's votes
INSERT INTO comments_votes VALUES (1, 1, 1);
INSERT INTO comments_votes VALUES (2, 1, 1);
Avantages
Cette approche présente plusieurs avantages :
Contraintes clés étrangères (Facultatif)
De plus, des contraintes de clé étrangère peuvent être ajoutées pour renforcer l'intégrité référentielle entre les tables :
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;
En utilisant cette conception de base de données relationnelle, vous pouvez efficacement empêcher les votes multiples et maintenir l'intégrité des données sans avoir besoin de stocker des tableaux dans MySQL.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3