2017-12-27 53 views
0

親と他の子の2つのエンティティがあります。私は親の統計(カウント、ビュー、コメント)を持っていますが、私は親の子供の統計(カウント、ビュー、コメント)も持っています。親と子は同じフィールドを共有しますが、1対多の関係(1つの親には多くの子があります)があります。同じフィールドを共有するエンティティとデータベース関係を行う方法

この状況をモデル化する方法については混乱しています。

私はwheatherが2つのテーブルを作成し、外部キーを使用する方が効率的ではないかどうかはわかりません(テーブルにはほとんど同じフィールドがありますが、その子テーブルにはparentIdがあります)。

他の状況では、すべてのデータ(親と子)を同じテーブルに入れて、自分自身の関係を作ろうとすることがあります。

このオプションが効果的でしょうか?

私は他の提案を検討するために開いています。

この表には数百万のレコードが格納されますが、後で選択します。

+0

いくつかのデザインを見せてください。 (あなたの説明はとにかくあまりにも曖昧です。)[mcve]を読んで行動してください。 「効率的」とは何も意味しません。「最高」に関する私のコメントを含めて、Googleの同意語と同義語に関する質問をしてください。 – philipxy

答えて

2

あなたの説明に基づいて、

テーブルはほぼ同じフィールドを持つことになり、その子のテーブルを除く がPARENTID

を持つことになり、それは単項関係を使用することをお勧めしますとparentを入れて、 childの表と親の場合はnullparentIdを使用してください。

ただし、別のテーブルにいくつかの属性を抽出することがあります。
一部のフィールドのアクションが非常に多い場合(一部のフィールドでは更新が多いなど)、他のテーブルでアクションを抽出する方がよいでしょう。この場合

(あなたがこれらのフィールドの多くのアクションを持っている場合)、あなたは他のテーブルにcountviewscommentsを入れて、メインテーブルの間に1対1の関係を作ることができます。

関連する問題