9

既存のWebアプリがあり、ユーザーが既存のオブジェクトにタグを付けることができるようにタグ機能を追加したいと思います。問題は、各オブジェクトにタグ列を追加する必要があるかどうかです。または、それを正規化して、各オブジェクトにタグのコレクションがあるタグテーブルを使用する必要がありますか?私は後者に傾倒しています。なぜなら、それはよりクリーンで、レポートしやすく、タグクラウドを作成しやすいからです。しかし、これが1000回解決されたことを知っているので、何かが足りないかどうかを尋ねて確認したいと思いました。

4

3 に答える 3

6

ユーザーが複数のタグをオブジェクトに関連付ける必要があると予測していますか?

そうでない場合は、TAG_IDfkをOBJECTテーブルに追加します。それ以外の場合、多対多の関係を正しくモデル化するには、合計3つのテーブルが必要になります。

物体

  • OBJECT_ID(pk)

OBJECT_TAG_XREF

  • OBJECT_ID(pk、fkからOBJECT)
  • TAG_ID(pk、fkからTAG)

鬼ごっこ

  • TAG_ID(pk)
于 2009-08-25T18:05:18.710 に答える
4

はい、正規化する必要があります。「タグ列」は、レコードごとに1つのタグのみをサポートするか、ひどい検索パフォーマンスを発揮します。

于 2009-08-25T17:57:50.770 に答える
2

間違いなく正規化します。タグのテーブル、既存のオブジェクトのテーブル、およびそれらの間のリンクのテーブル。

于 2009-08-25T18:03:57.013 に答える