Relationaler Ansatz
Sie beschreiben es als Beziehung zwischen Unlockern und Unlocked, ähnlich wie in diesem Tutorial . Ich schlage vor, mehr über relationale Algebra und Datenbanken zu lernen. Sie sind eine gute Möglichkeit, Daten zu modellieren. Wenn Sie lernen, wie Sie Informationen aus der Datenbank abfragen können, können Sie ganz einfach Daten modellieren.
Ich weiß nicht, wie viel Sie über das Modellieren von Beziehungen wissen. Dieses Tutorial soll Ihnen dabei helfen.
Eine Lösung
Ich gehe davon aus, dass WoW wie in der Realität funktioniert (ehm), dass es so ist
- Talent setzt mehrere (andere) Talente frei
- Talent wird von mehreren (anderen) Talenten freigeschaltet.
Es ist eine N: N-Beziehung, die impliziert, dass Sie "Mittelmann" eine neue Beziehung zwischen den beiden Talenten brauchen:
(talent who unlocks id, talent who is unlocked)
Auf diese Weise können Sie Talent A haben, das B, C und D ((A, B), (A, C), (A, D) und Talent Y freigeschaltet durch X, Z und W ((X, Y), ( Z, Y), (W, Y)). In imperativer / prozeduraler / objektorientierter Sprache würden Sie dies als Liste / Array von Paaren wie folgt tun:
var unlocks_unlocked = [[A, B],[A,C],[A,D],[X,Y],[Z,Y],[W,Y]];
Als "reales" Beispiel können Sie also Folgendes haben:
... ["running fast", "jumping superhigh"], ["antigravity's child", "jumping superhigh"]
und es bedeutet, dass "Superhochspringen" erreicht wird, nachdem Sie Talente "schnell laufen" und "Antigravitationskind" haben.
Andere Lösung
Ich habe Diablo in letzter Zeit nicht gespielt, aber es könnte sein, dass es nur:
- Talent schaltet mehrere andere Talente frei
- Talent wird nur von einem Talent freigeschaltet.
Es ist 1: N Beziehung:
You put "is unlocked by this talent's id" variable into talent's structure
mögen:
var Talent[8] = { "name": "superpower", "unlocked by": "being Clark Kent"};
UserTalent
Tabelle benötigt keine Autokey-Spalte.user
undtalent
können die einzigen zwei Spalten und ein zusammengesetzter Schlüssel sein: Sie werden niemals Duplikate sein und Sie werdenid
sowieso niemals eine Abfrage durchführen .