PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Est-ce toujours une bonne idée de stocker un tableau en tant que valeur de champ ou de stocker des valeurs de tableau en tant qu'enregistrements ?

Je pense que vous devriez lire à propos de Normalisation de base de données et décidez par vous-même. En bref cependant, il y a un certain nombre de problèmes avec votre proposition, mais vous pouvez décider que vous pouvez vivre avec eux.

Les plus évidentes sont :

  1. Que se passe-t-il si une balise supplémentaire est ajoutée à la ligne (1) ? Devez-vous d'abord analyser, vérifier s'il est déjà présent, puis mettre à jour la ligne pour qu'elle soit tags.append(newTag) .
  2. Pire encore supprimer une balise ? Rechercher des balises, est présent, recréer des balises.
  3. Que se passe-t-il si un tag doit changer de nom ? Un processus de modération peut-être ?
  4. Pire encore, qu'en est-il des différentes personnes spécifiant un nom de balise différemment ? Ce serait difficile à rationaliser.
  5. Et si vous souhaitez interroger des données basées sur des balises ? Votre requête devient beaucoup plus complexe qu'elle ne devrait l'être.
  6. Présentation :le client doit analyser la balise afin de l'utiliser. Qu'en est-il du champ de séparation ? Changez cela et tous les clients devront changer.

Bref, toutes ces opérations deviennent plus difficiles et plus lourdes. La normalisation est conçue pour surmonter ces problèmes. Probablement la seule raison de faire ce que vous dites, IMO, est que vous capturez les données comme une seule fois et qu'elles sont uniquement informatives - c'est-à-dire qu'elles ont du sens pour un utilisateur mais pas pour un système en soi. C'est un peu comme dire qu'il vaut probablement mieux l'éviter (encore une fois, IMO).