2016-11-28 9 views
0

私はAを定義する多くのフィールドを持っているテーブルAを持っているだけでなく、常にそうとは限らないものを定義する多くのフィールドも持っています。私はこのエンティティを2つに分割することを考えています:Aに関連するフィールドだけを含む縮小Aエンティティと、「Bの形式をとる」ときにAに関連するフィールドをコインにするBエンティティ。1対1の関係を作成する価値はありますか?

(「A」は「Mission」と呼ばれるテーブル、「B」はMonsterというテーブルです)私のドメインでは、ミッションは多くのことになることがあり、時にはモンスターです。モンスターを定義する多くのフィールドがありますので、元のミッションテーブルは巨大です)。

つまり、私はこのMonsterテーブルを作成すべきかどうかは自分自身を議論しています。私はかなり大きなミッション・テーブルを受け入れるべきですか、それとも1対1の関係を作り出すべきでしょうか?結合はかなり頻繁に実行され、私はこれについて少し心配しています。

ありがとうございます。

私は3つのテーブル(ない2)のために行くだろう
+0

「ミッション」を読み込むたびに「モンスター」が必要な場合は、別のテーブルと必要な結合が意味をなさない可能性があります。しかし、パフォーマンスに関しては、唯一の真実は測定から来ます。シナリオごとにスキーマを作成し、予想されるデータ量を入力し、最も一般的なユースケースをテストします。 –

+0

テーブルAとテーブルBの後に同じ数のカラムがある場合は、メモリスペースを節約せず、結合の複雑さを追加するだけです。パフォーマンスが重要な場合は、おそらくその結合を避けるようにしてください。また、1つのテーブルの実際の不利益がどのようなものになるか、自分自身に尋ねてください。 coulmnsの数はほとんど私が推測する引数です。 – molig

+0

答えをありがとう。私はそれがそうでなければ私はそれがそのままテーブルを残す必要があるときに私はモンスターを隔離することができる場合、私は勉強します。 –

答えて

1

  1. 表のミッションのために、
  2. 表(関連するすべてのプロパティタイプ毎含む)モンスターの種類について、
  3. 表についてモンスターのインスタンス(実際のモンスターが必要なとき)このテーブルには、モンスターのプロパティが必要なときにいつでも使用できるモンスタータイプテーブルへの参照が格納されます。

このようにして、HUGEテーブル/スペースの必要性は大幅に減少します。

+0

ありがとうございました!これまでのところ、私はモンスタータイプを区別する必要はありませんが、それは別個のモンスターテーブルを思い付く良い動機になります。これまでのところ私はそれをそのまま残すことに決めました:) –

+0

OK。それでも、私の答えが有用であると信じるならば、あなたはそれを投票することを検討するかもしれません。ちなみに、さまざまなモンスターの種類は、たとえば人を食べなかったモンスター、1人の人を食べる同じモンスターなどです。それぞれのモンスターの種類は異なる場合があります。人を捕まえて食べる)。 – FDavidov

+0

ああ、そうです!それらはクールなアイデアです!ありがとうございました!私はあなたの答えをupvoted :) –

関連する問題