Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verhindert man Mehrfachstimmen in einem Kommentarbewertungssystem mit MySQL?

Mary-Kate Olsen
Freigeben: 2024-10-29 22:00:03
Original
1075 Leute haben es durchsucht

How to Prevent Multiple Votes in a Comment Rating System Using MySQL?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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:

  • Schwierigkeit bei der Durchsetzung der referenziellen Integrität mit serialisierten Arrays.
  • Möglichkeit einer Datenbeschädigung, wenn ein Teil des Arrays beschädigt wird.
  • Reduzierte Indizierungseffizienz im Vergleich zu separaten Tabellen für Kommentare und Stimmen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage