dedlfix: Mehrere Werte in einem Feld speichern?

Beitrag lesen

Tach!

Da jeder User seinen eigenen Filter setzten kann dachte ich, ich speichere die Werte in meiner User-Tabelle in einem weiteren Feld ab. Ist dieses möglich oder soll ich für solche Aktionen eine weitere Tabelle in meiner Datenbank anlegen?

Man kann immer Daten serialisieren, im einfachsten Fall mehrere Strings durch ein Trennzeichen getrennt aneinanderhängen. Und man kann solcherart erzeugten String wie jeden anderen String in einem String-Feld im DBMS ablegen. Die Frage ist, ob man das tun sollte.

Solange das DBMS nur ein Datengrab ist und diese Daten entgegennimmt und wieder hergibt, ist es kein Thema, in welchem konkreten Format die Daten vorliegen. Sobald aber das DBMS diese Daten selbst verarbeiten muss - in der Form, dass daraus nur ein Teil benötigt wird - bekommt man ein Problem, diesen Teil zu extrahieren.

Für das DBMS wäre also zu klären, ob es Teile verarbeiten muss oder ihm der Inhalt egal ist. Wenn letzteres, dann ist es mehr oder weniger lediglich eine Frage der Vorliebe und des Aufwandes, den man in der Anwendung betreiben möchte, um die Daten entweder gemeinsam aus einem Feld (plus Deserialisierung) oder einzeln aus vielen Datensätzen zu holen. Bedenke aber, dass eine Entscheidung zum Kompaktformat sich später als nachteilig herausstellen kann, wenn sich die Voraussetzungen oder Wünsche ändern, und man mit dem DBMS dann doch auf Teile zugreifen möchte. Ich glaube, du warst derjenige, der das Problem in ähnlicher Form bereits beim falschen DBMS-Format für Datum und/oder Preise kennengelernt hat.

dedlfix.