複数のテーブルから共通のテーブルへの1対多の関係をモデル化するための適切なパターンを見つけようとしています。
EntityA、EntityB、およびその他のエンティティには、1つまたは複数のGenericInfoがあります。
オプション1:これらのエンティティは異なるため、スーパーテーブルを使用して次のような関係をモデル化することはできません
オプション2:そして、GenericInfoテーブルから外部キー制約を削除することによって参照整合性を失いたくありません。
オプション3:現在、リレーションシップマッピングにアソシエーションテーブルを使用しています。
リンク/関係を維持することを目的とするデータベースに作成する必要のあるテーブルが多すぎるため、このソリューションは好きではありません。
オプション4:私が考えることができるもう1つの方法は、次のような単一のId属性を持つマッピングテーブルを作成することです。
専門家の意見やご意見をお待ちしております。
ありがとう、
アップデート
Vasek、コメントありがとうございます。
私が解決しようとしている問題は次のとおりです。オブジェクトのコレクションを公開するインターフェイス実装のオブジェクトリレーショナルマッピングを確立するにはどうすればよいですか。
ORマッピングには、クラス戦略ごとに1つのテーブルを使用しています。したがって、例の各テーブルはクラスからマップされます。次の型の定義とテーブルがあるとします(ここにディスグラムを投稿できないのは残念です)
パブリックインターフェイスIGenericInfoProvider
{
GenericInfo[] GenericInfoArray {get; set;}
}
パブリッククラスBaseClassForA{}---------------------------------------------テーブルBaseEntityForA
パブリッククラスBaseClassForB{}------------------------------------------- --テーブルBaseEntityForB
パブリッククラスClassA:BaseClassForA、IGenericInfoProvider {} ---テーブルEntityA
パブリッククラスClassB:BaseClassForB、IGenericInfoProvider{}---テーブルEntityB
パブリッククラスGenericInfo{}------------- ---------------------------------------テーブルGenericInfo
EntityA/EntityBとGenericInfoの間の1対多の関係をモデル化しようとしています。この種の関係は、私たちのドメインモデルではかなり一般的です。
Option1は、多くのテーブルからのすべてのIDを含むスーパーテーブルを作成することにつながるため、考慮されません。これは、OOの世界では意味がありません。
Option2は、参照整合性のために受け入れられません。
Option3は私が現在使用しているパターンです。
Option4
を検討していますが、それが正しい方向へのアプローチであるかどうかはわかりません。