sql >> Database >  >> RDS >> PostgreSQL

Is het ooit een goed idee om een ​​array op te slaan als een veldwaarde of om arraywaarden als records op te slaan?

Ik denk dat je moet lezen over Databasenormalisatie en beslis zelf. Kortom, er zijn een aantal problemen met uw voorstel, maar u kunt besluiten dat u ermee kunt leven.

De meest voor de hand liggende zijn:

  1. Wat als er een extra tag wordt toegevoegd aan rij(1)? Moet je eerst ontleden, controleren of het al aanwezig is, werk dan de rij bij naar tags.append(newTag) .
  2. Erger nog, een tag verwijderen? Zoek tags, is aanwezig, maak tags opnieuw.
  3. Wat als een tag de naam moet veranderen - misschien een moderatieproces?
  4. Erger nog, hoe zit het met verschillende mensen die een tagnaam anders specificeren - het zou moeilijk te rationaliseren zijn.
  5. Wat als u gegevens wilt opvragen op basis van tags? Uw vraag wordt veel complexer dan het zou moeten zijn.
  6. Presentatie:de client moet de tag ontleden om deze te kunnen gebruiken. Hoe zit het met het scheidingsveld? Verander dat en alle klanten moeten veranderen.

Kortom, al deze handelingen worden moeilijker en omslachtiger. Normalisatie is bedoeld om dergelijke problemen op te lossen. Waarschijnlijk is de enige reden om te doen wat je zegt, IMO, dat je de gegevens eenmalig vastlegt en het is alleen informatief - dat wil zeggen, logisch voor een gebruiker, maar niet voor een systeem op zich. Dit is hetzelfde als zeggen dat het waarschijnlijk het beste vermeden kan worden (nogmaals, IMO).



  1. Wat is de beste manier om rangen te genereren in MYSQL?

  2. Verander van SQLite naar PostgreSQL in een nieuw Rails-project

  3. Een database importeren en exporteren via SSH

  4. Hoe psql.exe te starten