0

詳細エンティティDetailBを持つマスターエンティティMasterAがあります。DetailBへの外部キーを持つ別のエンティティDetailCがあります。

私のクエリでは、DetailCリストをたくさんクエリしますが、MasterAに関連してDetailCをクエリする必要があります。この場合、クエリを高速化するために、DetailCとMasterAの間に外部キー関係を作成することは理にかなっています。(DetailBで結合するのではなく)。アプリケーション層では、DetailCのFKが(DetailBで指定されているものと)同期していることを確認します。ありがとう!

4

2 に答える 2

1

あなたのデータはどうかによると思います。

あなたの意見で、DetailCとMasterAに何か関連があると思うなら、そうするのは理にかなっていると思います。

または、効率を心配する場合、設計のトレードオフは常に発生すると思います。この場合、速度(または便利)と交換するためにデータサイズを増やす必要があります。

于 2012-10-17T07:05:24.300 に答える
1

MasterAに関する外部キーとなるフィールドをDetailCに追加できます。ただし、DetailCがDetailBと関係があり、DetailBがMasterAと関係がある場合、この余分なフィールドは冗長になります。厳密な正規化では、そのようなフィールドは存在しないはずですが、データに不一致がないことを保証できる限り、正規化ルールを緩和できるはずです。

于 2012-10-17T10:19:30.833 に答える