Tengo varios objetos diferentes con un número variable de atributos. Hasta ahora, he guardado los datos en archivos XML que permiten un número variable de atributos. Pero estoy tratando de moverlo a una base de datos.Cómo almacenar datos con número dinámico de atributos en una base de datos
¿Cuál sería su forma preferida de almacenar estos datos?
algunas estrategias que he identificado hasta el momento:
- Tener un único campo denominado "atributos" en la mesa del objeto y almacenar los datos serializados o json'ed allí.
- Almacenar los datos en dos tablas (objetos, atributos) y usar un tercero para guardar las relaciones, convirtiéndola en una verdadera relación n: m. Solución muy limpia, pero posiblemente muy costosa para buscar un objeto completo y todos sus atributos
- Identificando atributos que todos los objetos tienen en común y creando campos para estos en la tabla del objeto. Almacene los atributos restantes como datos serializados en otro campo. Esto tiene una ventaja sobre la primera estrategia, facilitando las búsquedas.
¿Alguna idea?
¿Cuál es la motivación para pasar a una solución de db? Usted dijo abajo, esa velocidad es su principal preocupación. ¿Cree que una solución db sería más rápida que su enfoque XML actual? –
Una cuarta estrategia vino a la mente con DVK proponiendo lo mismo: almacenar atributos comunes en la tabla de objetos y almacenar todos los demás usando una relación 1: n una segunda tabla. Parece el mejor compromiso para la velocidad, la flexibilidad y la solución limpia (@Tobiask) –
@ Corey, no, yo no. La solución XML es increíblemente rápida en este momento y no creo que un DB pueda seguir el ritmo de eso. Es más un ejercicio para mí, intentar hacer que el sistema sea más flexible en cuanto a las opciones de almacenamiento y, al mismo tiempo, mejorar mis habilidades de MySQL. –