PHP Hilfe bei Tabellenstruktur

Coffee2Code

Herzlich willkommen!
Hallo Leute :)

Ich hab da mal ne Frage, da ich mich grade irgendwie im Kreis drehe und nicht sicher bin, welche Datenbankstruktur grade die beste ist.

Zur Info: Ich bin grade dabei, ein (Browser)Game zu planen, hierbei sollte man einen Charakter erstellen können. Wie wir es schon von unzähligen Spielen kennen, hat man hier natürlich die Möglichkeit, bestimmte Skills (Angriff, Verteidigung), etc. zu leveln. So weit so gut...

Mir ist bloß grade irgendwie nicht klar, bzw. ich bin mir unschlüssig, wie genau die Tabellenstruktur (MySQL) hierbei aussehen soll. Entweder lass ich die Werte der einzelnen Skills in der User-Tabelle (Beispiel 1) oder aber, ich lagere diese in eine zusätzliche Positionstabelle aus (Beispiel 2).

Grundlage ist hierbei eine extra Tabelle, in der alle Weiterbildungen mit eindeutiger ID und Eigenschaften (wie z.B. Beschreibung) hinterlegt sind, also ungefähr so:

ID | nameWeiterbildung | Beschreibung
1 | Angriff | dies ist die Angriffs-Eigenschaft

Und so ungefähr dachte ich mir, müssten die Tabellen aussehen (je nach Beispiel)

Beispiel 1:
ID | user | passwort | ... | ... | [Weiterbildung1] | [Weiterbildung2]
1 | Chris | 12345 | ... | ... | 5 | 3

ODER

Beispiel 2:
ID | user_id | weiterbildung_id | stufe
1 | 1 | 1 | 5
1 | 1 | 2 | 3

Was denkt ihr, was ist die bessere Alternative? Tatsache ist, dass auch ziemlich oft auf die Daten zugegriffen wird.
Oder kennt vielleicht noch jemand die ultimative Lösung Nummer 3? ;)

Wie gesagt, ich hänge grade ziemlich fest und bin für jede Antwort und/oder Lösung dankbar! :)

VG
Chris
 
Hallo und herzlich willkommen :)
Mit so einem groben Ausriss ist das schwer zu beurteilen, wir wissen ja auch nicht, wie viele Felder sonst noch in der User-Tabelle enthalten sind.
Wenn sich die Skills häufig ändern, würde ich sie in eine eigene Tabelle stecken.
 
Eine ultimative Lösung gibt es da eh nicht, da es ja auch von der gesamten Programmstruktur abhängt und davon wie die Daten am Ende ausgelesen und verarbeitet werden. Ich versuche immer meine Datenbankstrukturen so einfach wie nur irgendwie möglich zu halten um die Daten am Ende schnell auslesen zu können. Aber es kommt natürlich immer auch auf das Projekt an.
 
Hallo und herzlich willkommen :)
Mit so einem groben Ausriss ist das schwer zu beurteilen, wir wissen ja auch nicht, wie viele Felder sonst noch in der User-Tabelle enthalten sind.
Wenn sich die Skills häufig ändern, würde ich sie in eine eigene Tabelle stecken.

Japp, werden häufig geändert, also lag ich mit meiner Vermutung ja schon richtig, hab auch eher gedacht, dass es die 2. Möglichkeit ist ;)

Eine ultimative Lösung gibt es da eh nicht, da es ja auch von der gesamten Programmstruktur abhängt und davon wie die Daten am Ende ausgelesen und verarbeitet werden. Ich versuche immer meine Datenbankstrukturen so einfach wie nur irgendwie möglich zu halten um die Daten am Ende schnell auslesen zu können. Aber es kommt natürlich immer auch auf das Projekt an.

Die Daten werden an sich ziemlich viel selektiert, als aber auch geändert. Ich denke (jetzt mittlerweile), dass da eine Positions-Tabelle mehr Sinn macht, hab nämlich auch schon in nem anderen Forum den Ratschlag auf die 2. Möglichkeit bekommen :)

Ich denke, der Thread kann geschlossen werden, danke für eure Hilfe :)
 
Oben