Enfoque relacional
Lo describe como una relación entre desbloqueadores y desbloqueados similar a la de este tutorial . Sugiero aprender más sobre álgebra relacional y bases de datos. Son una buena manera de modelar datos. Si aprende a consultar la información de la base de datos, puede modelar datos con bastante facilidad.
No sé cuánto sabes sobre modelar relaciones. Ese tutorial debería ayudarte con eso.
Una solución
Supongo que WoW funciona como en realidad (ehm), que es
- El talento desbloquea varios (otros) talentos
- El talento es desbloqueado por varios (otros) talentos.
Es la relación N: N, lo que implica que necesita "intermediario" una nueva relación entre los dos talentos:
(talent who unlocks id, talent who is unlocked)
De esta manera, puedes tener el talento A desbloqueando B, C y D ((A, B), (A, C), (A, D)) y el talento Y desbloqueado por X, Z y W ((X, Y), ( Z, Y), (W, Y)). En lenguaje imperativo / procesal / orientado a objetos, lo haría como una lista / matriz de pares como allí:
var unlocks_unlocked = [[A, B],[A,C],[A,D],[X,Y],[Z,Y],[W,Y]];
Entonces, para el ejemplo del "mundo real", puede tener:
... ["running fast", "jumping superhigh"], ["antigravity's child", "jumping superhigh"]
y significa que se obtiene el "salto súper alto" después de que tienes los talentos de "correr rápido" y "niño de la antigravedad".
Otra solucion
No he jugado a Diablo recientemente, pero podría ser que solo tenía:
- talento desbloquea varios otros talentos
- El talento se desbloquea solo por un talento.
Es la relación 1: N:
You put "is unlocked by this talent's id" variable into talent's structure
me gusta:
var Talent[8] = { "name": "superpower", "unlocked by": "being Clark Kent"};
UserTalent
tabla no necesita una columna de clave automática.user
ytalent
pueden ser las únicas dos columnas y una clave compuesta: nunca serán duplicados y nunca consultará deid
todos modos.