J'implémente le modèle suivant pour stocker des données liées à l'utilisateur dans ma table - j'ai 2 colonnes - uid
(clé primaire) et une meta
colonne qui stocke d'autres données sur l'utilisateur au format JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Est - ce une meilleure façon (performance sage, sage-conception) que le modèle d' une colonne par propriété, où la table aura beaucoup de colonnes comme uid
, name
,emailid
.
Ce que j'aime dans le premier modèle, c'est que vous pouvez ajouter autant de champs que possible, il n'y a pas de limitation.
Aussi, je me demandais, maintenant que j'ai implémenté le premier modèle. Comment puis-je effectuer une requête dessus, comme, je veux récupérer tous les utilisateurs qui ont un nom comme 'foo'?
Question - Quelle est la meilleure façon de stocker les données relatives aux utilisateurs (en gardant à l'esprit que le nombre de champs n'est pas fixe) dans la base de données en utilisant - JSON ou colonne par champ? De plus, si le premier modèle est implémenté, comment interroger la base de données comme décrit ci-dessus? Dois-je utiliser les deux modèles, en stockant toutes les données qui peuvent être recherchées par une requête dans une ligne distincte et les autres données en JSON (est une ligne différente)?
Mettre à jour
Puisqu'il n'y aura pas trop de colonnes sur lesquelles je dois effectuer une recherche, est-il sage d'utiliser les deux modèles? Clé par colonne pour les données que je dois rechercher et JSON pour les autres (dans la même base de données MySQL)?