ほとんどの場合、正規化されたスキーマ
を使用します。 テーブルoption_tag
を使用 テーブル間の多対多の関係を実装するoption
およびtag
。ここでのリファレンス実装:
あらゆる点で最速のオプションではないかもしれませんが、参照整合性、制約、すべてのデータ型、すべてのインデックスオプション、安価な更新など、すべてのDB機能を提供します。
完全を期すために、オプションのリストに追加してください:
-
hstore
(良いオプション) -
xml
hstore
よりも冗長で複雑です またはjsonb
、したがって、XMLで操作する場合にのみ使用します。 - 「コンマ区切り値の文字列」(非常に単純で、ほとんどの場合、不適切なオプション)
- EAV(エンティティ-属性-値)または「名前-値ペア」(ほとんどの場合、悪いオプション)
dba.SEに関するこの関連質問の詳細:
リストが表示用であり、ほとんど更新されない場合は、プレーン配列を検討します。これは通常、他の配列よりも小さく、パフォーマンスが優れています。
JoshBerkusによる
そして、特に同時ロードで単一のタグを大幅に変更する場合は、正規化されたアプローチが大きな効果を発揮します。
jsonb
とにかくJSONを操作する場合にのみ適切なオプションであり、JSONを「現状のまま」保存および取得できます。