Array in Datenbank

thomy800

Erfahrenes Mitglied
Hallo

ich habe ein Problem bzw. eine Frage, das/die ich mal anhand eines Beispiels erklären möchte:

Ich habe 2 Spalten: ID (primärschlüssel) und Name.
Nun möchte ich zusätzlich zu jeder Zeile einen (eindimensionale(n)) Array/Liste aus INT speichern.
Wie löst man das am besten (also möglichst wenig Speicher und eine klare Struktur):

a) den Array in einen String (zb. vom Typ VARCHAR) umwandeln und in einer 3. Spalte abspeichern,
b) für jede Zeile eine neue Tabelle in der Datenbank erstellen und dort die Array-Daten zeilenartig eintragen und den neuen Tabellennamen in der 3. Spalte abspeichern oder
c) ganz anders?

mfG thomy
 
Vorschlag a ist durchaus eine Möglichkeit, vor allem, wenn du diese Daten nicht noch mit einer anderen Tabelle verknüpfen willst. Auch wenn du diese Daten öfter mal veränderst, ist das eine praktikable Lösung. Die "sauberste" Lösung ist das aber wohl nicht, da je nachdem, was das für Daten sind, durchaus Inkonsistenten auftreten können.
Dein Vorschlag b geht zwar in die richtige Richtung der Alternative, ist aber übertrieben. Du brauchst da nur eine Tabelle

(lfd. Nr.)
ID (aus Tab. 1)
Wert

Wenn es eine feste und nicht zu große Anzahl von Daten sind, kannst du die ja auch direkt in die erste Tabelle packen.
 
Zuletzt bearbeitet:
meinst du das so?

tabelle1
ID name
1 abc
2 agdg
3 dfhhk

tabelle2
ID2 ID1 wert
1 1 0815
2 1 1234
3 2 345
4 3 567
(ID2 primärschlüssel, ID1 fremdschlüssel zu ID aus tabelle1)

PS: es sind zwar eine feste Anzahl von Daten, aber sehr viel (können bis zu 1600 Array-Elemente sein)
 
Ja, genau so hatte ich das gemeint. Bei der großen Anzahl an Daten kann natürlich auch eine separate Tabelle je Name sinnvoll sein. Habe aber keine Erfahrung mit so großen Datenmengen. Vielleicht hat da ja jemand anderes mehr Erfahrung und kann da was darüber sagen.
 
Hab das jetzt an meinem Projekt getestet. Ergebnis: es wird mehr Speicher benötigt, als wenn man das mit der String-Methode macht, andererseits ist es eine klarere Struktur...
 
Zurück