Estoy implementando el siguiente modelo para almacenar datos relacionados con el usuario en mi tabla (tengo 2 columnas) uid
(clave principal) y una meta
columna que almacena otros datos sobre el usuario en formato JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Es esta una manera mejor (en cuanto al rendimiento, diseño inteligente) que el modelo de una columna-por-propiedad, donde la mesa tendrá tantas columnas como uid
, name
, emailid
.
Lo que me gusta del primer modelo es que puede agregar tantos campos como sea posible, no hay limitación.
Además, me preguntaba, ahora que he implementado el primer modelo. ¿Cómo realizo una consulta en él, como, quiero buscar a todos los usuarios que tienen nombre como 'foo'?
Pregunta : ¿Cuál es la mejor manera de almacenar datos relacionados con el usuario (teniendo en cuenta que el número de campos no es fijo) en la base de datos usando - JSON o columna por campo? Además, si se implementa el primer modelo, ¿cómo consultar la base de datos como se describió anteriormente? ¿Debo usar ambos modelos, almacenando todos los datos que pueden ser buscados por una consulta en una fila separada y los otros datos en JSON (es una fila diferente)?
Actualizar
Dado que no habrá demasiadas columnas en las que deba realizar la búsqueda, ¿es aconsejable utilizar ambos modelos? ¿Clave por columna para los datos que necesito buscar y JSON para otros (en la misma base de datos MySQL)?