Heim >Datenbank >MySQL-Tutorial >Wie kann man Mehrfachabstimmungen verhindern, ohne Arrays in MySQL zu speichern?
Speichern von Arrays in MySQL: Ein alternativer Ansatz zur Verhinderung mehrfacher Abstimmungen
MySQL unterstützt nativ die Speicherung von Arrays in Feldern nicht. Allerdings kann ein relationales Datenbankdesign verwendet werden, um ein ähnliches Ergebnis zu erzielen.
Datenbankdesign
Beachten Sie das folgende Datenbankschema:
<code class="sql">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) );</code>
Die Tabelle „comments_votes“ verwendet einen zusammengesetzten Primärschlüssel, um sicherzustellen, dass jeder Benutzer nur einmal über einen bestimmten Kommentar abstimmen kann.
Beispieldaten
<code class="sql">-- 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);</code>
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 zu erzwingen die Tabellen:
<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>
Durch die Verwendung dieses relationalen Datenbankdesigns können Sie Mehrfachabstimmungen effektiv verhindern und die Datenintegrität aufrechterhalten, ohne dass Arrays in MySQL gespeichert werden müssen.
Das obige ist der detaillierte Inhalt vonWie kann man Mehrfachabstimmungen verhindern, ohne Arrays in MySQL zu speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!