tag1、tag2、tag3などの形でタグを送信していますが、パフォーマンスとプロフェッショナリズムの点でデータベースレイアウトを作成する方法がわかりません。TAGデータベースを作成する
誰かがタグをクリックすると、そのタグを持つすべてのページをクエリしてプルアップします。
tag1、tag2、tag3などの形でタグを送信していますが、パフォーマンスとプロフェッショナリズムの点でデータベースレイアウトを作成する方法がわかりません。TAGデータベースを作成する
誰かがタグをクリックすると、そのタグを持つすべてのページをクエリしてプルアップします。
これはその後持つ、あなたが望むすべての場合:tag_id
とtag
フィールド、タグに関連するかもしれないいくつかの他の分野、すなわちの説明、権限、...
page_tags
タグと
tags
テーブルをtag_id
とpage_id
のフィールドを使用して、タグとページの間に多対多の関係を保持します(pages
テーブルがインデックスカラムとしてpage_id
であると仮定します)。タグを追加した日時や追加した人など、追加のフィールドも考慮する)しかし、後でタグクラウドのようなものを追加したい場合がありますキャッシュすることができます(たとえば、誰かが何かをタグ付けするたびにタグを再構築したいのではなく、定期的に、たとえば1日に1回)。これを実現するには、別のテーブルtags_cloud
をtag_id
とcount
フィールドに追加します。
タグ自体がタグテーブルに入ります。この表は、唯一あなたがページテーブルに
PAGES_TAGS
tag_id | page_id
1 13
1 24
1 11
2 12
をタグテーブルに一致するようにルックアップテーブルを作成するユニークなタグ
TAGS
id | tagname
1 stack
2 overflow
を持っているあなたは、その後、どのタグがどのページを照会するために参加します。 [どのようにあなたがタグやタグ付けを導入することはお勧めしない]の
SELECT *
FROM pages p
INNER JOIN pages_tags pt ON p.id = pt.page_id
INNER JOIN tags t ON t.id = pt.tag_id
WHERE tag.name='overflow'
が重複する可能性(http://stackoverflow.com/questions/20856/how-do-you-recommend-implementing-tags-or-tagging) – Gordon