[MySQL] Kursdaten zu mehreren Sachen sinnvoll speichern

Dampfhammer

Grünschnabel
Hallo,

ich suche eine Methode, wie ich den Kurs von etwas bestimmten sinnvoll Speichern kann.
Als Programmiersprache nutze ich PHP. Ich habe zwei Methoden, wie ich es eventuell am besten machen kann.

1. Tabellen: Items, Preis
In der Tabelle Items werden halt immer die von mir benötigten Informationen gespeichert.
In Preis würden dann für jedes Item alle 5 Minuten (oder halt wie oft die Daten kommen) ein Eintrag mit der Item-ID und dem Preis angegeben.

2. Tabelle: Items
Hier würde ich die ganzen Kursdaten (JSOn Formatiert) in einer extra Spalte zu dem passenden Item schreiben.

Jetzt Stellt sich für mich die Frage, was ist sinnvoller? Es können mehrere hundert (vlt. sogar tausend) Items werden, zu denen ich den Kurs erfassen und speichern will.
 
Also wie ich es verstehe siehst du zwei Möglichkeiten:

1. Den Preis in dieselbe Tabelle wie das Item
2. Den Preis in eine zweite Tabelle auslagern

Ersteres macht dann Sinn, wenn du nur den aktuellen Preis brauchst und der alte egal ist.
Letzteres ist sinnvoll, wenn du die bisherigen Preise auch brauchst (z.B. für ein Diagramm). Problematik: Hohe Datenmenge auf Dauer, wobei das dann dein Problem ist. :D

Rein von der Logik her würde ich zu 2. greifen, weil es einfach schöner ist, alte Daten zu erhalten.
Die Preistabelle könnte folgendermaßen aussehen: ID -- item_ID -- kurs
Abfragen kannst du den aktuellen Kurs dann indem du die max(ID) raussuchst bei allen Einträgen, die die entsprechende item_ID haben.
 
Nur ich frage mich, was schneller gehen würde.
Entweder die vielen Einträge aus der Datenbank auslesen oder einen Eintrag auslesen und mit JSON oder etwas ähnlichem verarbeiten.
Alle paar Minuten kommen pro Item dann bis mehreren tausend Einträgen hinzu.
 
Also du möchtest soetwas wie einen Aktien-Chart erstellen? (also die Datenspeicherung dafür)
Nunja, wie gesagt: wenn du die alten Werte brauchst -> eigene Tabelle, wenn nicht -> nur eine Tabelle. Wobei ich das so verstehe, als dass du die Spalte Preis, wenn es nur eine Tabelle gibt, immer um den aktuellen Wert erweitern willst.
Das würde bedeuten, die Spalte ist irgendwann gigantisch (oder eben der Inhalt der Zellen). Das wäre zum Auslesen dann wirklich äußerst schlecht.

Wenn du die Werte dann wieder ausgeben willst, gibt es ja wieder mehrere Faktoren:
1. du willst nur den aktuellsten Wert:
SQL:
SELECT max(ID),kurs FROM preis_tabelle

2. du willst viele Werte auslesen und einen Chart erstellen:
Hierzu würde ich vorerst einmal nachdenken, ob es sinnvoll ist, alle Werte auszulesen. Eventuell reichen die letzten 10, 20, 30 - oder du brauchst nur jeden 5ten, weil das für eine Übersicht reicht.

Aber bevor du darüber nachdenkst, beantworte (für dich selber) erst einmal die obersten Fragen.
 
Zurück