Estou implementando o seguinte modelo para armazenar dados relacionados ao usuário em minha tabela - eu tenho 2 colunas - uid
(chave primária) e uma meta
coluna que armazena outros dados sobre o usuário no formato JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
É este um caminho melhor (em termos de performance, design-wise) do que o modelo de uma coluna-per-propriedade, onde a mesa terá muitas colunas como uid
, name
, emailid
.
O que eu gosto no primeiro modelo é que você pode adicionar o maior número possível de campos, sem limitações.
Além disso, eu estava pensando, agora que implementei o primeiro modelo. Como faço para executar uma consulta, como, eu quero buscar todos os usuários que têm nome como 'foo'?
Pergunta - Qual é a melhor maneira de armazenar dados relacionados ao usuário (lembrando que o número de campos não é fixo) no banco de dados usando - JSON ou coluna por campo? Além disso, se o primeiro modelo for implementado, como consultar o banco de dados conforme descrito acima? Devo usar os dois modelos, armazenando todos os dados que podem ser pesquisados por uma consulta em uma linha separada e os outros dados em JSON (é uma linha diferente)?
Atualizar
Como não haverá muitas colunas nas quais eu preciso executar a pesquisa, é aconselhável usar os dois modelos? Chave por coluna para os dados que preciso pesquisar e JSON por outros (no mesmo banco de dados MySQL)?