web-dev-qa-db-fra.com

Stockage des données dans une seule colonne d'un tableau OR en tant que partie de json

Je crée mon propre composant pour stocker des produits (panier d'achat). La plupart des produits ont généralement leurs prix et autres attributs. Quelle manière de stocker ces attributs dans la base de données est plus facile et meilleure: dans une seule colonne ou dans le cadre de json? C'est à dire. comme:

id     name      price        attribs
1    Product1    1000    "field1":"value1"
2    Product2    2000    "field1":"value2"

OR

id     name                  attribs
1    Product1    "price":"1000","field1":"value1"
2    Product2    "price":"2000","field1":"value2"

La question concerne surtout le stockage de milliers de produits. De quelle manière est plus rapide lorsque Joomla et la base de données fonctionnent ensemble et dans quel cas la charge du serveur est moindre? Et quand est-il plus approprié de stocker des données en tant que JSON au lieu d'une seule colonne? S'il vous plaît, expliquez

1
stckvrw

Il existe plusieurs façons de stocker des données dans des bases de données. La manière dont vous souhaitez le faire dépend de votre application, de sa profondeur et de sa croissance future.

Je ne suis pas un expert dans ce domaine, mais j'ai l'expérience de savoir que le stockage JSON est rarement efficace, il finit par vous nuire.

Si vous ne souhaitez stocker que ces données simples dans un tableau simple, il semble peut-être plus simple de les coder en JSON, mais l’histoire montre clairement que la structuration des bases de données gagne inévitablement en termes d’efficacité, permettant à d’autres personnes de créer votre code et de construire l’application. Si, par exemple, vous souhaitez modifier le prix d'un seul produit, vous devez extraire les données, désérialiser les données, modifier le prix, puis les rétablir, tandis que vous pouvez utiliser plusieurs colonnes à l'aide d'un simple appel à une base de données.

Un autre problème peut survenir si vous tentez d'effectuer des requêtes plus complexes sur la base de données, par exemple obtenir une liste de tous les produits dont le prix est inférieur ou égal à 50, par exemple, ou une colonne spéciale contenant une valeur spéciale. De plus, si vous souhaitez rejoindre d'autres tables, cela sera compliqué.

D'après mon expérience personnelle, je recommande fortement d'utiliser plusieurs colonnes. Le seul cas où j'utiliserais JSON est si j'avais besoin de colonnes dynamiques, ce qui est plutôt rare.

4
Purple Penguin

Je suppose que vous devriez le faire séparément. Obtenir des prix pour un seul article parmi des milliers sera plus facile ici. En outre, vous pouvez mettre en œuvre un système de remise/offre si vous le faites séparément. Je stocke le prix séparément dans la base de données. J'utilise json dans le cas des heures et des jours de travail de bureau, des choses comme ça. J'espère que ça aide :)

0
suraj.bhanari