web-dev-qa-db-ja.com

特定の各テーブルに共通フィールドを配置する必要がありますか、それとも1つの共通テーブルを配置してから、データを選択するときに結合する必要がありますか?

ブログ、ビデオ、ギャラリーなど、いくつかのカテゴリがあると仮定します。それぞれにidtitlecontentauthor_idcreated_atなどの投稿データが含まれていますが、カテゴリによって具体的なフィールドがいくつかあります:動画リンクがあり、ギャラリーにはimgURLがあります。

その上、ユーザーはコメントを残すことができます。コメントにもコンテンツと同じフィールドがあります:idtitlecontentauthor_idcreated_at、およびoriginal_post_id

私の質問は次のとおりです。ブログ、ビデオ、ギャラリー、コメントには共通のフィールドがあります。CommonContentというテーブルを作成する必要があります:idtitlecontentauthor_idcreated_at

CommonContentBlog/ Video/ Commentは1:1の関係にあります。それでも、CommonContentテーブルを作成する必要がありますか?私の懸念は、すべての共通フィールドが1つのテーブルに配置されると、データを選択するときにボトルネックが発生することです。

3
tom10271

ブログ、ビデオ、ギャラリー、コメントに共通のテーブルを持つことの利点は、これらのそれぞれに一意のIDを持つことですが、それは実際には必要ありません。

そして、これらはすべていくつかの共通の属性を共有しているようです。したがって、それらを保存するには共通のテーブルが必要ですが、アプリケーションの観点からは、それらは異なり、別のテーブルに保存する必要があります。

それらすべてを共通のテーブルに保存することは、メンテナンスの問題であり、UIに表示するためにそれらのエントリをフェッチするときにも問題になるため、これら4つすべてに異なるテーブルを用意することをお勧めします。

次に、コメントを保存する方法があります。コメントはvideoまたはblogまたはgalleryにあり、時間の経過とともに非常に多くなる可能性があるため、選択できます。カテゴリごとに1つのコメントテーブル。

2
vijayp