I de fleste tilfælde ville jeg bruge et normaliseret skema
med en tabel option_tag
implementering af mange-til-mange-forholdet mellem tabellerne option
og tag
. Referer til implementering her:
Det er måske ikke den hurtigste mulighed i enhver henseende, men det tilbyder hele spektret af DB-funktionalitet, inklusive referenceintegritet, begrænsninger, hele spektret af datatyper, alle indeksmuligheder og billige opdateringer.
For fuldstændighedens skyld skal du tilføje til din liste over muligheder:
hstore
(god mulighed)xml
mere omfattende og mere kompleks end beggehstore
ellerjsonb
, så jeg ville kun bruge det, når jeg arbejdede med XML.- "streng af kommaseparerede værdier" (meget simpel, for det meste dårlig mulighed)
- EAV (Entity-Attribute-Value) eller "navn-værdi-par" (for det meste dårlig mulighed)
Detaljer under dette relaterede spørgsmål på dba.SE:
Hvis listen kun er til visning og sjældent opdateres, ville jeg overveje et almindeligt array, som typisk er mindre og yder bedre til dette end resten.
Læs blogindlægget af Josh Berkus @a_horse linket til i sin kommentar. Men vær opmærksom på, at den fokuserer på udvalgte læste cases. Josh indrømmer:
Og det er her, den normaliserede tilgang vinder stort, især når du ændrer enkelte tags meget under samtidig belastning.
jsonb
er kun en god mulighed, hvis du alligevel skal bruge JSON og kan gemme og hente JSON "som den er".