Hi Leute,
Ich möchte gerne eine Datenbank erstellen mit dennen im Anschluss über eine WebSeite (PHP) Statistiken generieren lasse. Dementsprechend müssen die Daten die ich für die Statistik benötige in der SQL Datenbank vorhanden sein, nur wie speichert man diese möglichst effizient in dieser ab?
Ein kleines Beispiel anhand einer Personenentwicklung:
Eine Person hat: Ein Alter, eine größe, ggf. (bekannte) Fähigkeiten (z.b: in Form von Noten in Fächern, oder Schulungen), eine Adresse, Geschlecht, Besitz, usw.
Wenn ich jetzt von x-Personen nachverfolgen möchte wie diese sich im laufe der 'Zeit' weiterentwickeln müsste die Datenbank, zumindest in meinem Laeinhaften wissen, wie folgt aussehen:
//Table: Users - Attribute die sich niemals ändern
// Angenommen der Name & Adresse des Users ändert sich niemals!
{userid (pkey)} {name} {adresse} {herkunftsland} {geschlecht}
//Table: User_Informationen - Attribute die sich ändern.
{userid (foreign key)} {Informationszeitpunkt (pkey)} {auto} {haus} {vereinsmitgliedschaften} {photo} {titel} {alter} {persönliches statement}
Wie man unschwer erkennen kann soll die Relation zu der DB wie folgt aussehen. Es gibt mehrere User_Informationen (0...n) jedoch immer genau einen User dem diese zugeordnet werden (1). Hierfür ist es aber notwendig, das in der Tabelle User_Informationen eine Art "Zeitpunkt" mitspeichert, weshalb der zusätzliche Primary Key "Informationszeitpunkt" von nöten wird.
So weit so gut, bis dahin bin ich, wie man ja unswer erkennen kann, selbst gekommen. Nur habe ich niemanden der mir sagen kann ob dies von der "Denkweise" so auch richtig ist. Um redundante Daten zu verhindern würde ich vor dem schreiben in die Datenbank zuvor den letzten Informationsdatensatz abrufen und mit den neu zu schreibenden Daten vergleichen, falls diese sich nicht unterscheiden, wird einfach nichts neu gespeichert.
Der Schreibcyclus wäre momentan ca. 1x Stündlich, also nicht RealTime Kritischer Natur. Vielmehr geht es hierbei wirklich um die maximale effizienz & Datengröße.