Quels sont les inconvénients de stocker toutes les colonnes d'une table dans une seule colonne JSON?
par exemple pour une table utilisateur au lieu d'avoir ceci
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->json('attributes'); // contains all the fields
$table->timestamps();
$table->rememberToken();
});
Il suffit de faire ceci
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('firstname');
$table->string('lastname');
$table->string('username')->unique();
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
$table->rememberToken();
});
Mettre à jour
Bref, cette approche n'est pas bonne pour les produits avec des propriétés personnalisées par exemple. Les bases de données NoSql sont optimales pour les sites / systèmes de commerce électronique.
mais le champ JSON peut être utile pour combiner des champs moins utilisés comme le sexe, l'âge, l'adresse.
vrai?
3 Réponses :
Il y a tellement d'inconvénients, mais j'aimerais en mentionner trois.
Ce n'est pas le but du stockage SQL. Peut-être que vous pouvez explorer des options telles que des bases de données basées sur des documents comme MongoDb
Vous ne pouvez pas diffuser correctement les données. Interroger et filtrer le json peut être pénible, vous ne pouvez pas utiliser de clés étrangères, si vous enregistrez les identifiants d'autres tables, pas si bien si vous faites une erreur et supprimez toute la colonne, vous perdrez toutes les données au lieu de la colonne de travail par colonne.
Regardez ces deux réponses:
Stockage de JSON dans base de données ou avoir une nouvelle colonne pour chaque clé
J'espère que ma conclusion est juste. L'utilisation de JSON pour tous les champs ajoute une couche supplémentaire et un effort supplémentaire sur les données. De plus, ce serait comme utiliser SQL dans un autre but que celui auquel il est destiné, donc si tous les champs sont remplacés par JSON, mieux vaut utiliser la base de données NoSQL. En fin de compte, tout dépend des exigences de l'entreprise, quel type de base de données devons-nous choisir.
Vous pouvez interroger JSON et il existe de nombreuses fonctions JSON, l'inconvénient est qu'il n'est pas structuré, donc probablement les mêmes inconvénients que le schéma sans bases de données. mariadb.com/resources/blog/json-with-mariadb-10 -2