私はタグ付けシステムを実装したことがありませんが、私が取り組んでいるプロジェクトではすぐに実装する可能性があります。私は主にデータベースの専門家であり、パフォーマンス上の理由から、解決テーブルを介してタグ付きエンティティをタグ キーワードに関連付けるのが最善であると思います。したがって、たとえば、次のようなテーブルの例を使用します。
TechQuestion
TechQuestionID
(pk)
SubjectLine
QuestionBody
TechQuestionTag
TechQuestionID (
pk)
TagID (pk)
アクティブ (インデックス付き)
タグ
TagID (pk)
TagText (インデックス付き)
... 以前に使用されたことのないタグが使用された場合にのみ、新しいタグ テーブル エントリを追加します。TechQuestionTag テーブル エントリを介して、以前に提供されたタグを再度関連付けます。特定のタグに関連する TechQuestions をプルするクエリは次のようになります。
SELECT
q.TechQuestionID,
q.SubjectLine,
q.QuestionBody
FROM
Tag t INNER JOIN TechQuestionTag qt
ON t.TagID = qt.TagID AND qt.Active = 1
INNER JOIN TechQuestion q
ON qt.TechQuestionID = q.TechQuestionID
WHERE
t.TagText = @tagText
...またはあなたは何を持っていますか。わかりませんが、おそらくこれはすでに誰にとっても明らかでしたが、私はそれを公開したいと思いました...代替手段(冗長、インデックス付き、テキストタグエントリ)が次のようにクエリしないとは思わないためです効率的。