0

かなりありふれたタグ付けシステムをセットアップしました。

table|'keyword'|   : tag_id        | tag
table|'tag_thread'|: tag_thread_id | tag_id      | thread_id
table|'thread'|    : thread_id     | thread_info

ただし、タグ付けの表示方法を変更しました。

私の新しいアイデアは、 にrelated列を作成することkeyword_tblです。ブレッドクラム システムを作成したかったので、このルートを試すことにしました。たとえば、スポーツ -> 野球 -> 投手などのタグを「順序付け」したいと考えています。また、彼らが「野球」と入力した場合、気にせずにスポーツをタグの一部として含めたいと思います。

keyword_tbl : keyword_id | keyword | related_id

例えば:

keyword_tbl:
keyword_id // 1       // 2        // 3
keyword    // sports  // baseball // pitchers
related    // 0       // 1        // 2

0は、最も広い用語である「一般的な」タグであることを示しています。これは、彼らが投稿するスレッドごとに、単一の値 (上記の例では最も詳細な、または「ピッチャー」) を保存するだけでよいことを意味します。「ピッチャー」から始めて、関連するフィールドを取得し、逆方向にブレッドクラムを作成できました。

私の質問は次のとおりです。ブレッドクラムでやろうとしていることには、どのルートが適しているでしょうか? 誰かが見ることができるように、私が計画している方法に特に問題がありますか?

ありがとう

4

1 に答える 1

1

いくつかの潜在的な問題があります (ただし、これは間違った方向に進んでいるという意味ではありません)。

一般に、タグはカテゴリよりも緩やかな概念です。それらを混ぜているように聞こえますが、これは問題かもしれません。野球とサッカーの人々に適用されるタグ (「左利き」としましょう) があるとどうなりますか? タグは、すべてがツリー内で 1 つの親を必要とするこの種の分類の問題を回避するために考案されました。

関連するタグのセットを把握するためのクエリは、パンくずリストのレベル数によっては、非効率的または煩雑になる可能性があります。タグをツリーに分類するのは誰ですか? それが管理機能である場合 (したがって、あまり頻繁には発生しません)、各タグに関連するすべてのタグを保持する「マテリアライズド ビュー」を作成することができます。

于 2012-12-17T20:14:16.887 に答える