Ich implementiere das folgende Modell zum Speichern benutzerbezogener Daten in meiner Tabelle - ich habe 2 Spalten - uid
(Primärschlüssel) und eine meta
Spalte, in der andere Daten über den Benutzer im JSON-Format gespeichert werden.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Ist dies ein besserer Weg (Performance-weise, Design-weise) als das Ein-Spalt-per-Eigenschaft - Modell, in dem die Tabelle wie viele Spalten hat uid
, name
, emailid
.
Was mir am ersten Modell gefällt, ist, dass Sie so viele Felder wie möglich hinzufügen können, ohne Einschränkungen.
Außerdem habe ich mich gefragt, nachdem ich das erste Modell implementiert habe. Wie führe ich eine Abfrage durch, z. B. möchte ich alle Benutzer abrufen, die einen Namen wie "foo" haben?
Frage - Was ist der bessere Weg, um benutzerbezogene Daten (unter Berücksichtigung der Tatsache, dass die Anzahl der Felder nicht festgelegt ist) mit - JSON oder Spalte pro Feld in der Datenbank zu speichern? Wenn das erste Modell implementiert ist, wie kann die Datenbank wie oben beschrieben abgefragt werden? Sollte ich beide Modelle verwenden, indem ich alle Daten, die von einer Abfrage durchsucht werden können, in einer separaten Zeile und die anderen Daten in JSON speichere (ist eine andere Zeile)?
Aktualisieren
Ist es ratsam, beide Modelle zu verwenden, da es nicht zu viele Spalten gibt, in denen ich suchen muss? Schlüssel pro Spalte für die Daten, die ich suchen muss, und JSON für andere (in derselben MySQL-Datenbank)?