web-dev-qa-db-ja.com

カテゴリとタグを実装するための最良のデータベース設計は何ですか?

たとえば、ニュースウェブサイトには、政治、ビジネス、エンターテイメント、スポーツ、ライフスタイル、テクノロジー、科学、健康などの「カテゴリ」がある場合があります。各記事は1つのカテゴリにのみ属しますが、複数の「タグ」を持つことができます。タグは、ソーシャルメディアで表示されるハッシュタグとまったく同じであり、非常に詳細にすることができます。

このStackOverflowの質問 は、「タグ」用のデータベースを設計するための最良のアプローチを示しています。 「カテゴリ」を追加する必要がある場合はどうなりますか?

テーブルの行に各記事のカテゴリを記録するだけでよいかどうかはわかりません。 「Category」という名前の列を追加しますか?もしそうなら、訪問者が「ビジネス」カテゴリに属し、「Facebook」タグを持つすべての記事を検索したい場合、パフォーマンスはまだ良いですか?

1
Ian Y.

各記事に最大1つ(または1つだけ)のカテゴリがある場合、articleテーブルにカテゴリ情報を含めます。

私はnotカテゴリのテキスト名をテーブルに含めます。カテゴリ名と整数ID値を含む別のcategoryテーブルがあります。考えられるカテゴリの数は比較的少ないと考えられるため、これがパフォーマンスに大きな影響を与えることはありません。そして、誰かがあなたにカテゴリーの名前を変えさせた最初の時、それはその価値を証明するでしょう。

タグとカテゴリによる検索が非常に一般的である場合(おそらく想像どおり)、article.category_idのインデックスも必要になるでしょう。

2
RDFozz
  1. SELECTsを設計します。
  2. それらを試してみてください。
  3. largeデータセットで試してください。
  4. 取り除く AND deleted = 1-パフォーマンスキラーです!しかし、どうやって?

OK、私はあなたのためにそれをすべてやった。 こちら を参照してください。

0
Rick James