Hola gente, estoy desarrollando un pequeño juego de navegador, y actualmente estoy revisando la estructura mysql para optimizarla.
Por un lado, hay una tabla de "items" en el servidor, la cual se va expandiendo constantemente, ya que los crean los usuarios. Por otro, la tabla de "usuarios", donde está la info de login, y actualmente, un campo donde dice que items tiene el usuario en cuestión (es decir, en el server pueden haber 100 items, pero el usuario solo tener 25).
La cuestión, es que en este momento el campo de items del usuario es un string, con id´s separados por coma. Se que esto es totalmente impractico, pero lo hice de está forma, primero por una falta de conocimiento, y segundo, porque si todo sale bien, con el tiempo pueden haber miles de usuarios, con miles de elementos creados, y me asusta un poco tener todos los registros en una misma tabla ya que desconosco la capacidad de mysql ("miles" de registros me suena a mucho, pero no se si realmente lo son para un servidor).
La pregunta concreta es sobre que sería más optimo, si buscar datos dentro de un string (que puede llegar a ser muy grande, ya que cada usuario puede llegar a los 500 items facilmente), o tener una tabla más, con un registro por cada elemento, de cada usuario (es decir, tendría miles y miles de registros).
Otra cosa, los items del server y del usuario están separados, porque la gente puede organizar sus items en categorías y demás, entonces el item "agua" de Jose, es diferente al de xxLegolasxx2 (de estár todos en una misma tabla, habría un "agua" por cada usuario que lo tenga).
Dejo un gráfico de como me imagino las tablas (resumidas) en cada caso:
Con string:
Separado en registros:
Por favor, tengamos en cuenta que necesito contemplar la posibilidad de que sean Miles y miles de registros en la segunda opción!
Espero que se entienda y me puedan asesorar! Saludos , Facu.