2017-06-13 6 views
2

StackOverflowにタグシステムサイリマーを実装しようとしています。明らかに私はこのanswerを含む複数の記事を読んだ。テーブルを多重化してタグシステムを実装する

私のシナリオだけ高い権限を持つユーザーによって作成することができますタグの少し異なる

  • が制限されることになる量であるが(誰もがそこにタグを割り当てることができます)。これはオプション#1を除外します(上記のリンク先の質問から、各タグはテーブルtagsの列に直接挿入され、次にLIKEと照会されます)
  • DB内に複数のテーブルがあり、各テーブルとNの関係:

特に第二の基準は、それが難しいので、これらは、私の考え

  • 私はオプション#3に続く可能性があるテーブルtagsを持っており、Mを持っています。しかし、それはより困難になります(テーブル番号が大きくなると結合すると想像してください)。また、検索結果のタグと一致するテーブル(アプリケーションモジュール)を指定する必要があります。
  • 多態性を使用できますが、データベースに関するこのコンセプトには、この問題にうまく収まるものがありますか?

最新のPostgreSQLを使用しています。任意のヒントをありがとう

+0

オプションを投稿してください。 –

+0

これは私がリンクしている質問にあります –

+0

この質問が他の人と同じ場合は閉じてください。さもなければ質問のすべての要素が問題になるはずです。 –

答えて

1

PostgreSQLを使用しているため、他のデータベースでは使用できないフィールドタイプのオプションがあります。特に、配列とJSONフィールド。私はa blog postで様々な方法の性能比較を行った。配列とJSONBは、複数のタグを組み合わせる必要のある検索のタグテーブルよりもはるかに優れたオプションでした。

これを考えると、配列、JSONB列のいずれかのタグを持つテーブルごとにタグ列を作成することをお勧めします。複数のテーブルを検索する必要がある場合は、すべてに結合する単一のモノリシックタグテーブルを持つ代わりに、UNIONクエリを提案します。

+0

私はそれについて考えましたが、テーブルのカップルでそれをやっている間、 –

+0

あなたが他の何かに対して結果に加わるつもりならば。 5つのテーブルを照合しているので、UNION * something *にする必要があります。 – FuzzyChef

関連する問題