In de meeste gevallen zou ik een genormaliseerd schema
gebruiken met een tabel option_tag
implementeren van de veel-op-veel relatie tussen de tabellen option
en tag
. Referentie-implementatie hier:
Het is misschien niet in alle opzichten de snelste optie, maar het biedt het volledige scala aan DB-functionaliteit, inclusief referentiële integriteit, beperkingen, het volledige scala aan gegevenstypen, alle indexopties en goedkope updates.
Voeg voor de volledigheid toe aan uw lijst met opties:
hstore
(goede optie)xml
uitgebreider en complexer danhstore
ofjsonb
, dus ik zou het alleen gebruiken als ik met XML werk.- "reeks van door komma's gescheiden waarden" (zeer eenvoudige, meestal slechte optie)
- EAV (Entity-Attribute-Value) of "naam-waarde-paren" (meestal slechte optie)
Details onder deze gerelateerde vraag op dba.SE:
Als de lijst alleen voor weergave is en zelden wordt bijgewerkt, zou ik een gewone array overwegen, die doorgaans kleiner is en hiervoor beter presteert dan de rest.
Lees het blogbericht van Josh Berkus @a_horse waarnaar wordt gelinkt in zijn opmerking. Maar houd er rekening mee dat het zich richt op geselecteerde leescases. Josh geeft toe:
En dat is waar de genormaliseerde aanpak veel wint, vooral wanneer u enkele tags veel verandert onder gelijktijdige belasting.
jsonb
is alleen een goede optie als je toch met JSON gaat werken, en JSON "as is" kunt opslaan en ophalen.