私たちのシステムのプロセスは、特定のルールに従ってファイルを送信する責任があります。ファイル名に応じて、ファイルを顧客または工場に送信できます (ただし、両方には送信できません)。
ルールの各行には、ファイル名フィルター、それが属する顧客と工場が含まれ、ファイルの暗号化、分割、結合、名前変更などの必要があるかどうか、宛先フォルダーなどの他のパラメーターを指定します。
その過程で、ファイルが属する工場と顧客を認識し、工場と顧客のルールを調べて、フィルターに一致するファイルにルールを適用します (顧客のルールが優先されます)。
データベース内のルールと顧客/工場との関係を表す最良の方法は何ですか? データベースには既に Customer テーブルと Factory テーブルがありますが、関係を表す最良の方法が思いつきません。ルールの各行には、FK が 1 つだけあります (Customer または Factory のいずれかであり、両方を持つことはできず、何も持たないこともできません)。これを表す方法の 1 つは、次のようになります。
しかし、これは 2 つの FK のうちの 1 つしか持てないという事実を捉えていません。そのうちの 1 つが有効な FK で、もう 1 つが空でなければならないという制約を設定できますが、あまりクリーンではないようです。さらに、ルールの他の決定要因 (国など) があると、さらに醜くなります。このデザインを改善する方法はありますか?
システムが .NET で開発されていることを指定することも役立つと思います。また、オブジェクト リレーショナル マッピング、つまり NHibernate を使用します。