Inaktiv Attribute Werteliste Speicherung Bug

mschop

Aktives Mitglied
21. März 2018
94
10
Hallo Zusammen,

im Zuge von Entwicklungsarbeiten ist mir aufgefallen, dass die Speicherung der Wertelisten nicht sauber umgesetzt wurde. Aktuell werden Wertelisten mit dem Pipe-Symbol "|" getrennt in der DB abelegt. Allerdings wurde bei der Umsetzung nicht darauf geachtet, User-Input sauber zu escapen. Was bedeutet das:

Wenn ich ein Attribut mit einer Werteliste anlege, die z.B. wie folgt aussieht:

  • Blau|Gelb
  • Grün|Rot
Dann wird das in der Datenbank wie folgt gespeichert:
Blau|Gelb|Grün|Rot

Sobald man daher die Attribut-Verwaltung wieder neu öffnet, werden statt 2 Werten aufeinmal 4 Werte angezeigt:
  • Blau
  • Gelb
  • Grün
  • Rot
Die Pipes wurden als Separator genutzt, allerdings nicht escaped.

Diese Umsetzung ist sehr merkwürdig. Wenn man schon eine Werteliste nicht normalisiert in der Datenbank speichert, dann sollte das doch wenigstens ein Standard-Format wie z.B. JSON sein. Soweit ich weiß, unterstützt MSSQL sogar JSON als Feld-Typen. JSON hat von Haus aus eine entsprechende Escaping-Strategie im Standard mit geliefert, sodass man sich gar nicht mehr um dieses Thema hätte kümmern müsste. Ich würde daher empfehlen, die Speicherung der Werteliste auf JSON umzustellen oder die Datenbank an dieser Stelle zu normalisieren.

Gruß
mschop
 

Enrico W.

Administrator
Mitarbeiter
27. November 2014
8.336
1.643
Ich habe das mit der Entwicklung einmal besprochen.
Eine Änderung wird in Kürze hier nicht erfolgen. Kunz zum Hintergrund:
Das Pipe-Symbol ist das einzige Trennzeichen, welches dieses Problem hat. Die allermeisten nutzen gar keine getrennten Werte oder eine der vielen anderen Möglichkeiten.
Darüber hinaus erfahren die Attribute und Eigenen Felder in naher Zukunft eine Überarbeitung. Dabei kann auch dieses Thema dann gleich mit angegangen werden.
 

mschop

Aktives Mitglied
21. März 2018
94
10
@Enrico W. Soweit verständlich. Aber ich würde das an euerer Stelle trotzdem als Minor-Bug aufnehmen. Klar ist, dass das nur wenige betreffen wird bzw. nicht so wichtig ist. Es ist aber trotzdem ein Bug, der irgendwann überarbeitet werden sollte.