Heim > Datenbank > MySQL-Tutorial > Wie kann man Mehrfachstimmen in einem Kommentarbewertungssystem verhindern, ohne Arrays in MySQL zu speichern?

Wie kann man Mehrfachstimmen in einem Kommentarbewertungssystem verhindern, ohne Arrays in MySQL zu speichern?

Susan Sarandon
Freigeben: 2024-10-31 02:35:01
Original
746 Leute haben es durchsucht

How to Prevent Multiple Votes in a Comment Rating System Without Storing Arrays in MySQL?

Speichern von Arrays in MySQL: Ein alternativer Ansatz

Um Mehrfachabstimmungen in einem Kommentarbewertungssystem zu verhindern, möchten Sie ein Array von Benutzern speichern IDs in einem MySQL-Feld. Obwohl dies von MySQL nicht direkt unterstützt wird, sollten Sie den folgenden alternativen Ansatz in Betracht ziehen:

Datenbankschema

Erstellen Sie drei Tabellen:

  • Kommentare: Enthält Kommentar-IDs und Körper.
  • Benutzer: Speichert Benutzer-IDs und Benutzernamen.
  • comments_votes: Verlinkt Kommentare zu Benutzern, die darüber abgestimmt haben, einschließlich der Abstimmungsart .
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)
);
Nach dem Login kopieren

Beispiel Daten

INSERT INTO comments VALUES (1, 'first comment');
INSERT INTO comments VALUES (2, 'second comment');

INSERT INTO users VALUES (1, 'user_a');
INSERT INTO users VALUES (2, 'user_b');

INSERT INTO comments_votes VALUES (1, 1, 1);
INSERT INTO comments_votes VALUES (2, 1, 1);
Nach dem Login kopieren

Überprüfung der Benutzerberechtigung

Um festzustellen, ob ein Benutzer bereits für einen bestimmten Kommentar abgestimmt hat, verwenden Sie eine einfache Abfrage:

SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
Nach dem Login kopieren

Dieser Ansatz verhindert Mehrfachstimmen, da die Primärschlüsseleinschränkung für die Tabelle comments_votes dafür sorgt Einzigartigkeit.

Verhindern mehrerer Abstimmungen

Wenn der Benutzer bereits abgestimmt hat, deaktivieren Sie die Abstimmungssymbole in der Systemlogik basierend auf dem Abfrageergebnis.

Vorteile dieses Ansatzes

  • Gewährleistet die Datenintegrität durch Fremdschlüssel Einschränkungen.
  • Vermeidet die Notwendigkeit, Arrays in ein einzelnes Feld zu serialisieren.
  • Vereinfacht Datenbankvorgänge und verringert das Risiko einer Datenbeschädigung.

Das obige ist der detaillierte Inhalt vonWie kann man Mehrfachstimmen in einem Kommentarbewertungssystem verhindern, ohne Arrays in MySQL zu speichern?. 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