2017-12-05 11 views
0

私のサイトにはさまざまな記事があり、常に特定のカテゴリにしか表示されません。ニュース、スポーツ、ビジネス。カテゴリのテーブルを分離するか、または結合を使用しますか?

すべての記事が1つのテーブルにあり、記事タイプテーブルへのリレーショナルリンクがあるテーブルデザインを作成する方が効率的でしょうか?たとえば、すべてのスポーツ記事を取得するために参加することができます。

記事の種類ごとに、ニュース用、スポーツ用、ビジネス用のそれぞれのテーブルを持つ方が効率的でしょうか。

私は決してこれらの3つのカテゴリを持つことはありません。

---編集

表の構造は同じです。例えばタイトル、記事の内容、日付など

+0

これらのアーティクルの構造が同じ場合、それらは単一のテーブルに属します。 – CBroe

+0

両方のケースで提案されたテーブルスキーマを投稿してください –

答えて

1

ニュース記事、スポーツ記事、ビジネス記事の唯一の違いがカテゴリ(つまり、すべての種類の記事にタイトル、著者、発行日、WordCount、ボディ、CommentsAllowedなど)、CategoryIDを持つArticleテーブルを1つ使用する

スポーツ記事はビジネス記事と大きく異なるため、共有するプロパティはBodyだけで、異なるテーブルは行く道がある。行Aに複数のヌル列を持つ記事テーブルを必要としません。なぜなら、これらの列はスポーツ記事のみであり、これはビジネス記事であり、これはスポーツ記事であるため、行Bには異なる数のヌルがあるからですそれらの列はビジネスのためだけです」

時折ヌルを持つことは許されています。「人々は素敵で丁寧なのでビジネス記事の著者にツイートを書くことができます著者のTwitterのハンドルをスポーツ記事に載せることは、ライバルチームの嫌がらせと戦いを誘発する "記事記事のテーブルAuthorTwitterHandleの列は、スポーツ記事ではnullになり、ビジネス記事には挿入されますが、本質的にここでは特に、他の記事に決して適用することはできません。ある日、新しいCEOがスポーツ記事のつぶやきを有効にすることを決めたかもしれません。ビジネス記事が他の記事ではないと思う10の合法的な余分なプロパティは、それらのプロパティのための余分なテーブルを作成し、BusinessArticlesExtraProperties.ArticleID = Articles.ID型joinを介してarticlesテーブルに戻すことができます。これはオブジェクト指向プログラミング継承のメカニズム

+0

ありがとうございます。 – panthro

関連する問題