Speicher-Problem; welche Methode?

theTC

Grünschnabel
Hi,
ich hab ein "Denk"-Problem beim speichern in meine mySQL-DB... . Und zwar ist die Situation wie folgt:

ich hab einige User. Und es gibt Geräte (hammer, etc. ...). Jeder User hat seine eigenen Erfahrungen in den Geräten, das heißt, ich muss beim User in der Table ein Feld anlegen, welches für jedes Gerät die Erfahrung speichert.
Jetzt sind die Geräte aber von vorn herein nicht klar, d.h. sie können sich später ändern, es können neue hinzukommen, alte gelöscht werden etc. ... .

So, und genau da liegt mein Problem... ich weiß nicht, wie ich das abspeichern soll, folgendes geht ja nicht, aufgrund der "Dynamic" der Geräte:
Username: hans
Erfahrung_hammer: 10
Erfahrung_XXX: 20
...

So, meine Überlegungen haben zu zwei Methoden geführt (ich programmier über Java, doch PHP stellt ja glaub dieselben methoden zur verfügung):
- das ganze in einzelne Bytes zerlegen (serialisieren) und das dann in ein Feld speichern (der Datentyp wäre doch "BLOB", oder?)... und danach wieder "de"-serialisieren ...
- alles in einen String quetschen und mit "Sonderzeichen", wie "," etc. trennen... und später durch string-Operationen wieder auseinander reißen...

Welches dieser Methoden ist zu empfehlen? Gibt es andere? Bessere? Schnellere? Ich denke, die von mir genannten drücken ganz schön auf die Geschwindigkeit... .

Bitte helft mir :d... bin noob in mysql ;)...
CU,
theTC
 
*hmm* Weiterer Vorschlag:
Tabelle Werkzeug:
werkzeug_id int(5)
name varchar(32) // je nachdem halt auch mehr

Tabelle Skill:
user_id int(5)
werkzeug_id int(5)
skill int(5)

Tabelle User:
user_id int(5)
name varchar(32)
...

Jetzt kannst Du für jeden User soviele Skills anlegen wie Du willst, musst sie später nur aus der Datenbank auslesen.

Beispiel für Abfragen:
Für eine bestimmten User die Skills abfragen:
Skill: SELECT * FROM Skill WHERE user_id = gewählte user_id

Werkzeuge mit Namen raussuchen:
Werkzeuge: SELECT * FROM Werkzeuge WHERE werkzeug_id = momentane werkzeug_id

Daraus folgt:
Er sucht die User alle raus, danach sucht er nach den Skills des Benutzers, für jeden Skill sucht er den Namen des Werkzeugs raus.
Natürlich kannst Du es soweit abändern das nur für einen User die Daten ausgelesen werden und nicht für alle, dann entfällt aber die User-Query.

Im Allgemeinen ist zu sagen das MySQL eine recht hohen Datendurchsatz hat (ich glaub 1GB/s). Da ist es egal ob Du mit 3 oder 4 Tabellen arbeitest, wird nur bei tausenden von Usern problematisch.


Ich hoffe ich habe das einigermaßen verständlich erklärt. Bei Problemen kannst ja immernochmal nachfragen. :)

Gruß, digi
 

Neue Beiträge

Zurück