は、私はコンピュータサイエンスの学生ですが、これはDBの関係に関する私の理解です:
あなたは「人」の2種類があるので - 顧客 - と展望を - あなたが潜在的に「人」と呼ばれるテーブルを持つことができます。 Personテーブルには、両方のエンティティ間の共通データ(FirstName、LastName、Address1、Address2、City、State、Zipなど)が格納されます。
PersonがProspectであることを示すには、PersonsをPersonテーブルにリンクするProspectテーブルが必要です。見込み客に関するより詳細な属性をこの表に格納することができます。
PersonテーブルにリンクするPersonId列とCustomerエンティティの特定の属性を持つCustomerテーブルがあります。
ここでは、他のエンティティを派生させることができるデータベースがあります。たとえば、Employeeエンティティ>基本エンティティが始まります。また、Employeeテーブルはそのテーブルにリンクし、従業員固有のデータ用の他のカスタム列も持ちます。
それは意味がありますか?
また、私はこれについてすべて間違っています:)。私がまだ学生なので間違っていれば私を修正してください。
"オポチュニティ"レコード(Customer OR Prospect)に2つのフィールドがあり、そのうちの1つがnullである必要があるため、あなたは立ち往生していると思います。私が提案したモデルでは、あなたの機会はPersonにリンクし、従業員の機会(実際には悪い考えではないかもしれない)を制限するカスタムビジネスルールを定義することができます。
あなたの機会モデルの参照されたPersonについては、ICollectionではありません(特に機会には1人のみがいると言われています)。
private virtual Person Person { get; set; }
EDIT:あなたは、データベース全体を再構築したくない場合は、あなただけの、これが(顧客、または見込みである機会の種類を尋ねるドロップダウンを持っている可能性があり、それは単にのような単一のクラスになります)。選択に基づいて、あなたの[オポチュニティ]テーブルに外部キーを追加して[顧客またはプロスペクト]にリンクします。
このように、顧客と人の見通しはどちらも1対1の関係になるでしょうか? – MissioDei
私は混乱しています。はい、人は、常に1つの見込み客/顧客にリンクします。それは1対1です。今では見込み顧客を顧客に変換すると、その人は両方のテーブルにリンクしますが、それはOKです。なぜなら、別々にはまだ1対1であるからです。 – Jack
したがって、各導出表のforeignIDユーザーはNULLを使用できますか?そうでなければ、それぞれの関連付けが必要です。ありがとう – MissioDei