Almacenamiento de matrices en MySQL: un enfoque alternativo para evitar la votación múltiple
MySQL de forma nativa no admite el almacenamiento de matrices dentro de campos. Sin embargo, se puede emplear un diseño de base de datos relacional para lograr un resultado similar.
Diseño de base de datos
Considere el siguiente esquema de base de datos:
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 tabla comments_votes utiliza una clave primaria compuesta para garantizar que cada usuario solo pueda votar una vez en un comentario determinado.
Datos de ejemplo
-- 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);
Beneficios
Este enfoque tiene varias ventajas:
Restricciones clave externas (Opcional)
Además, se pueden agregar restricciones de clave externa para imponer la integridad referencial entre las tablas:
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;
Al utilizar este diseño de base de datos relacional, puede evitar eficazmente la votación múltiple y mantener la integridad de los datos sin la necesidad de almacenar matrices en MySQL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3