Sto implementando il seguente modello per l'archiviazione dei dati relativi all'utente nella mia tabella - Ho 2 colonne - uid
(chiave primaria) e una meta
colonna che memorizza altri dati sull'utente in formato JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
È questo un modo migliore (performance, disegno-saggio) rispetto al modello una colonna-per-proprietà, dove il tavolo avrà molte colonne come uid
, name
, emailid
.
Quello che mi piace del primo modello è che puoi aggiungere il maggior numero di campi possibile senza limiti.
Inoltre, mi chiedevo, ora che ho implementato il primo modello. Come posso eseguire una query su di esso, ad esempio, voglio recuperare tutti gli utenti che hanno un nome come "pippo"?
Domanda : qual è il modo migliore per archiviare i dati relativi all'utente (tenendo presente che il numero di campi non è fisso) nel database usando - JSON o colonna per campo? Inoltre, se il primo modello è implementato, come interrogare il database come descritto sopra? Dovrei usare entrambi i modelli, memorizzando tutti i dati che possono essere cercati da una query in una riga separata e gli altri dati in JSON (è una riga diversa)?
Aggiornare
Dal momento che non ci saranno troppe colonne su cui ho bisogno di eseguire la ricerca, è saggio usare entrambi i modelli? Chiave per colonna per i dati che devo cercare e JSON per altri (nello stesso database MySQL)?