So speichern Sie Benutzerarrays effizient in MySQL: Eine bessere Alternative
Einführung
Zu Um mehrere Benutzerstimmen in einem Kommentarbewertungssystem zu verhindern, ist es wichtig, die Liste der Benutzer-IDs zu speichern, die bereits abgestimmt haben. Das direkte Speichern von Arrays in MySQL-Feldern kann jedoch problematisch sein und zu Problemen mit der Datenkonsistenz führen. In diesem Artikel wird eine effizientere Alternative untersucht, die die referenzielle Integrität gewährleistet und verwaiste Zeilen verhindert.
Normalisierte relationale Tabellen erstellen
Anstatt Arrays in einem einzelnen Feld zu speichern, erstellen Sie Folgendes normalisierte relationale Tabellen:
Referential erzwingen Integrität
Um die Datenkonsistenz sicherzustellen, fügen Sie Fremdschlüsseleinschränkungen zur Tabelle comments_votes hinzu:
<code class="sql">CREATE TABLE comments_votes ( comment_id INT, user_id INT, vote_type INT, PRIMARY KEY (comment_id, user_id), FOREIGN KEY (comment_id) REFERENCES comments (comment_id), FOREIGN KEY (user_id) REFERENCES users (user_id) ) ENGINE=INNODB;</code>
Beispieldaten einfügen
Füllen Sie die Tabellen mit Beispielen Daten:
<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>
Verhindern doppelter Stimmen
Der Versuch, eine doppelte Stimme einzufügen, führt aufgrund des eindeutigen Index zu einem Fehler:
<code class="sql">INSERT INTO comments_votes VALUES (1, 1, 1); ERROR 1062 (23000): Duplicate entry '1-1' for key 'PRIMARY'</code>
Vorteile dieses Ansatzes
Der alternative Ansatz bietet mehrere Vorteile:
Fazit
Anstatt Array-Daten in einem einzelnen MySQL-Feld zu speichern, bietet die Verwendung normalisierter relationaler Tabellen mit Fremdschlüsseln eine zuverlässigere und effizientere Möglichkeit, Arrays zu verarbeiten. Dieser Ansatz stellt die referenzielle Integrität sicher, verhindert Dateninkonsistenzen und verbessert die Leistung, was ihn zu einer idealen Lösung für Szenarien macht, in denen Arrays in einer Datenbank gespeichert und verwaltet werden müssen.
Das obige ist der detaillierte Inhalt vonWie speichert man Benutzerarrays effizient in MySQL: Eine bessere Alternative zur Direktspeicherung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!