PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ist es jemals eine gute Idee, ein Array als Feldwert oder Array-Werte als Datensätze zu speichern?

Ich denke, Sie sollten etwas über Datenbanknormalisierung lesen und selbst entscheiden. Kurz gesagt, es gibt eine Reihe von Problemen mit Ihrem Vorschlag, aber Sie können entscheiden, dass Sie damit leben können.

Die offensichtlichsten sind:

  1. Was ist, wenn Zeile(1) ein zusätzliches Tag hinzugefügt wird? Müssen Sie zuerst parsen, prüfen, ob es bereits vorhanden ist, und dann die Zeile auf tags.append(newTag) aktualisieren .
  2. Schlimmer noch, ein Tag zu löschen? Tags suchen, vorhanden, Tags neu erstellen.
  3. Was ist, wenn ein Tag den Namen ändern soll - vielleicht ein Moderationsprozess?
  4. Noch schlimmer, was ist mit unterschiedlichen Personen, die einen Tag-Namen unterschiedlich angeben - es wäre schwer zu rationalisieren.
  5. Was ist, wenn Sie Daten basierend auf Tags abfragen möchten? Ihre Abfrage wird weitaus komplexer, als sie sein müsste.
  6. Darstellung:Der Client muss das Tag parsen, um es verwenden zu können. Was ist mit dem Trennfeld? Ändere das und alle Clients müssen sich ändern.

Kurz gesagt, alle diese Operationen werden schwieriger und umständlicher. Die Normalisierung soll solche Probleme lösen. Wahrscheinlich ist der einzige Grund für das, was Sie sagen, IMO, dass Sie die Daten einmalig erfassen und nur zu Informationszwecken dienen - das heißt, sie sind für einen Benutzer sinnvoll, aber nicht für ein System an sich. Das ist ungefähr so, als würde man sagen, dass es wahrscheinlich am besten vermieden wird (wieder, IMO).