# Wie mit zu viele Daten umgehen?



## RezaScript (5. Okt 2019)

Hallo,

in meinem Formular kann der User Einträge auswählen wie z.B. Apfel, Birne, Banane etc. Es können 2 oder 3 Einträge sein, es können aber auch 20 oder 30 sein. Ich möchte die Einträge nun gerne in meiner MySQL-Datenbank speichern und mich nimmt es Wunder, welche die sinnvollste Art und Weise wäre.

Option A
Alle Einträge erhalten in der Datenbank einzelne Columns (also ganz klassisch).
*Nachteil:* Die Anzahl der Spalten wären derzeit bei ca. 40. Sie könnte bis zu 200 wachsen.

Option B
Es gibt 1 Spalte und diese beinhaltet ein JSON.
*Nachteil:* Wenn ich mich nicht täusche, wird das schlecht für die Performance sein.

Mein Vorhaben

Jedes Mal wenn das Formular abgeschickt wird, werden die Daten gespeichert und der User erhält seine Statistik, wie z.B.: 4 Apfel, 2 Birne, 0 Banane 
Ich hätte gerne eine Statistik von allen Usern für mich selbst.
Wie würdet ihr vorgehen? Option A, B oder vielleicht C?


----------



## httpdigest (5. Okt 2019)

RezaScript hat gesagt.:


> *Nachteil:* Die Anzahl der Spalten wären derzeit bei ca. 40. Sie könnte bis zu 200 wachsen.


Ähmm... what?!

So wie ich es sehe, brauchst du ganz genau 2 Spalten entsprechend dem "User" und der "ausgewählten Frucht".
Dann sähe eine Beispieltabelle z.B. so aus:

```
user | frucht
-----+-------
   1 | apfel
   1 | banane
   1 | zitrone
   1 | orange
   2 | apfel
   2 | zitrone
   3 | ...
   . |
   . |
   . |
```
Immer schön normalisieren!


----------



## Bela B. (5. Okt 2019)

Und man könnte das ganze dann auch noch über mehrere Tabellen teilen, sodass dann nur die IDs der einzelnen Einträge gespeichert wird (also quasi Look-Up-Tables).

Also z.B. so:

```
Tabelle frucht:
ID    |    Name
1    |    Apfel
2    |    Birne
3    |    Orange


Tabelle user:
ID    |    User
1    |    Max
2    |    Hans


Tabelle userFrucht:
ID    |    uID    |    fID
1    |    1    |    1
2    |    1    |    3
3    |    2    |    2
```


----------

