„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man Mehrfachabstimmungen verhindern, ohne Arrays in MySQL zu speichern?

Wie kann man Mehrfachabstimmungen verhindern, ohne Arrays in MySQL zu speichern?

Veröffentlicht am 22.11.2024
Durchsuche:880

How to Prevent Multiple Voting without Storing Arrays in MySQL?

Speichern von Arrays in MySQL: Ein alternativer Ansatz zur Verhinderung mehrfacher Abstimmungen

MySQL unterstützt die Speicherung von Arrays in Feldern nativ nicht. Allerdings kann ein relationales Datenbankdesign verwendet werden, um ein ähnliches Ergebnis zu erzielen.

Datenbankdesign

Bedenken Sie das folgende Datenbankschema:

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

Die Tabelle comments_votes verwendet einen zusammengesetzten Primärschlüssel, um sicherzustellen, dass jeder Benutzer nur einmal über einen bestimmten Kommentar abstimmen kann.

Beispieldaten

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

Vorteile

Dieser Ansatz hat mehrere Vorteile:

  • Verhindert Mehrfachabstimmung: Die Primärschlüsseleinschränkung für die Tabelle comments_votes erzwingt die referenzielle Integrität und stellt die Daten sicher Konsistenz.
  • Flexibler Abstimmungstyp: Die Spalte vote_type ermöglicht verschiedene Arten von Abstimmungen, wie „Gefällt mir“ oder „Abneigungen“.
  • Einfach abzufragen: Das relationale Modell ermöglicht eine effiziente Abfrage von Wählerinformationen und Stimmenzahlen.

Fremdschlüsseleinschränkungen (Optional)

Zusätzlich können Fremdschlüsseleinschränkungen hinzugefügt werden, um die referenzielle Integrität zwischen den Tabellen zu erzwingen:

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;

Durch die Verwendung dieses relationalen Datenbankdesigns können Sie Mehrfachabstimmungen wirksam verhindern und die Datenintegrität aufrechterhalten, ohne dass Arrays in MySQL gespeichert werden müssen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3