Estoy haciendo una aplicación que utiliza una base de datos SQL.
En dicha base de datos tengo una larga tabla de elementos, y los usuarios pueden combinar dichos elementos para crear subconjuntos de dicha tabla como listas propias.
Ejemplo de la tabla:
idElemento | nombre | etc...
0 | Casa | ...
1 | Coche | ...
2 | Arbol | ...
3 | Gato | ...
A la hora de guardar dichas listas en la base de datos me surge la duda de qué método será más óptimo.
La lógica de las bases de datos relacionales me dice que debería haber una tabla "Listas" con una estructura de este tipo:
Listas-Usuarios
idUsuario | idLista
284 | 1
573 | 2
284 | 3
Listas-Elementos
idLista | idElemento
1 | 3
1 | 0
Por ejemplo, para un usuario con una lista 1 que contiene los elementos "Casa" y "Gato".
Sin embargo, teniendo en cuenta que las listas serán mucho más largas, que cada usuario podrá tener varias y que los elementos son siempre los mismos, parece bastante recurrente. Además de esto, cada vez que quiera buscar una lista de un usuario tendría que coger todos los elementos uno por uno, cuando las listas son cerradas, siempre las voy a sacar completas (no me interesa extraer elementos separados de cada lista), etc.
¿Sería esta la mejor manera? Serializar la lista completa y guardarla como un único elemento me parece un poco burro y no sé si optimizaría el rendimiento, pero tener un montón de entradas separadas en una tabla tampoco me acaba de convencer.
¿Cómo lo véis? Supongo que estaré intentando reinventar la rueda y ya habrá una solución óptima a este problema, así que si alguien la conoce le ayudaría que despejase mis dudas.