Speichern von Arrays in MySQL: Ein alternativer Ansatz zur Verhinderung mehrfacher Abstimmungen
MySQL unterstützt die Speicherung von Arrays in Feldern nativ nicht. Allerdings kann ein relationales Datenbankdesign verwendet werden, um ein ähnliches Ergebnis zu erzielen.
Datenbankdesign
Bedenken Sie das folgende Datenbankschema:
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)
);
Die Tabelle comments_votes verwendet einen zusammengesetzten Primärschlüssel, um sicherzustellen, dass jeder Benutzer nur einmal über einen bestimmten Kommentar abstimmen kann.
Beispieldaten
-- 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);
Vorteile
Dieser Ansatz hat mehrere Vorteile:
Fremdschlüsseleinschränkungen (Optional)
Zusätzlich können Fremdschlüsseleinschränkungen hinzugefügt werden, um die referenzielle Integrität zwischen den Tabellen zu erzwingen:
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;
Durch die Verwendung dieses relationalen Datenbankdesigns können Sie Mehrfachabstimmungen wirksam verhindern und die Datenintegrität aufrechterhalten, ohne dass Arrays in MySQL gespeichert werden müssen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3