Speichern von Arrays in MySQL für das Abstimmungssystem
Um Mehrfachstimmen in einem Kommentarbewertungssystem zu verhindern, können Arrays von Benutzer-IDs in MySQL gespeichert werden . So erreichen Sie dies mithilfe einer Schnittmengentabelle:
Datenbankschema
<code class="sql">CREATE TABLE comments ( comment_id int, body varchar(100), PRIMARY KEY (comment_id) ); CREATE TABLE users ( user_id int, username varchar(20), PRIMARY KEY (user_id) ); CREATE TABLE comments_votes ( comment_id int, user_id int, vote_type int, PRIMARY KEY (comment_id, user_id) );</code>
Dateneinfügung
<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>
In der Tabelle comments_votes werden die Kommentar-ID, die Benutzer-ID und der Abstimmungstyp gespeichert. Der zusammengesetzte Primärschlüssel verhindert doppelte Stimmen für denselben Kommentar.
Fremdschlüsseleinschränkungen
Um referenzielle Integrität sicherzustellen und verwaiste Zeilen zu verhindern:
<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>
Dadurch wird sichergestellt, dass sich eine Zeile „comments_votes“ immer auf einen vorhandenen Kommentar und Benutzer bezieht.
Vorteile der Schnittpunkttabelle
Durch die Verwendung einer Schnittpunkttabelle werden die folgenden Komplikationen vermieden:
Das obige ist der detaillierte Inhalt vonWie verhindert man Mehrfachstimmen in einem Kommentarbewertungssystem mit MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!