Liste in SQL Datenbank speichern?
Hallo, ist es möglich in einer MySQL Datenbank eine Liste von Objekten also z.b. eine String Liste in einer Zeile einer Datenbank zu speichern?
Also z.b. die Java String Liste
List<String> list = new ArrayList<>();
in eine Spalte einer SQL Datenbank zu bringen und diese Liste natürlich danach auch wieder abrufen können?
Also welchen "Wert" müsste diese Liste haben (also int, varchar, text, etc) und wie gehen die Befehle um eine Liste darin zu speichern und eben wieder abzurufen?
1 Antwort
Wenn man es wollte, könnte man es, indem man die Liste zu einer Zeichenkette serialisiert (bspw. zu einem Datenformat wie JSON oder CSV) und dann in eine VARCHAR-Spalte schreibt.
Das ist allerdings ein Vorgehen welches ich nicht tatsächlich empfehlen würde. Zum einen hättest du so stets den De-/Serialisierungsaufwand und zum anderen minderst du die Flexibilität und Schnelligkeit der Datenbank beim Suchen.
Die bessere Vorgehensweise wäre es, die einzelnen Listenwerte in einer separaten Datenbanktabelle zu speichern. Die bestehende Tabelle hingegen erhält ein Feld, welches auf die neue Tabelle (als Fremdschlüssel) verweist.
Wenn du nun einen Eintrag XY hast, mit einer Liste, die die Werte A und B enthält, müssen A und B zum einen als jeweilige Datensätze in der neuen Tabelle liegen. Zum anderen legst du in deiner bestehenden Tabelle zwei neue Datensätze an. Der eine verweist in seiner Fremdschlüsselspalte auf den Eintrag A der neuen Tabelle, der andere auf den Eintrag B.
Die Werte der Liste kannst du mittels SELECT und einem JOIN wieder ermitteln.