Para un escenario dado yo:
- crear tablas categorías para almacenar cada categoría
- crear tabla category_fields para almacenar cada campo de categoría
- crear tabla categorías_recopiladas para almacenar todos los datos recopilados de los campos de categoría en hash serializado
Los datos recopilados se pueden (des) serializar fácilmente en una columna de texto (independientemente del motor de base de datos que utilice).
Verifique las fuentes que utilizan su problema:formas dinámicas