sql >> Database teknologi >  >> RDS >> PostgreSQL

Er det nogensinde en god idé at gemme et array som en feltværdi eller gemme arrayværdier som poster?

Jeg synes, du skal læse om Databasenormalisering og bestemme selv. Kort sagt, der er dog en række problemer med dit forslag, men du kan beslutte, at du kan leve med dem.

De mest oplagte er:

  1. Hvad hvis der tilføjes et ekstra tag til række(1)? Skal du først parse, skal du kontrollere, om den allerede er til stede, og derefter opdatere rækken til at være tags.append(newTag) .
  2. Værre stadig at slette et tag? Søg tags, er til stede, genskab tags.
  3. Hvad hvis et tag skal ændre navn - måske en modereringsproces?
  4. Værre igen, hvad med forskellige mennesker, der angiver et tag-navn forskelligt - det ville være svært at rationalisere.
  5. Hvad hvis du vil forespørge data baseret på tags? Din forespørgsel bliver langt mere kompleks, end den skulle være.
  6. Præsentation:Klienten skal analysere tagget for at kunne bruge det. Hvad med separatorfeltet? Ændre det, og alle klienter skal ændres.

Kort sagt bliver alle disse operationer sværere og mere besværlige. Normalisering er designet til at overvinde sådanne problemer. Sandsynligvis er den eneste grund til at gøre, hvad du siger, IMO, at du fanger dataene som en enkeltstående, og det er kun informativt - det vil sige, giver mening for en bruger, men ikke for et system i sig selv. Det er lidt som at sige, at det nok bedst undgås (igen, IMO).



  1. Gendan MySQL root-adgangskode

  2. Opdater databasetabel med afkrydsningsfelter, php og mysql

  3. Opret et SQL Server Agent-skema med T-SQL

  4. Er det muligt at angive parametre for tabel- eller kolonnenavn i Prepared Statements eller QueryRunner.update()?