Heim  >  Artikel  >  Datenbank  >  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
Susan SarandonOriginal
2024-10-31 02:35:01638Durchsuche

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)
);

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);

Ü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>;

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!

Stellungnahme:
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