データベース制約を追加して、行が 2 つの列のいずれかに単一の値を持つように制限することはできますか? 説明しましょう:
Sales Order Table
---------------------------------
id | person_id | company_id |
この行は次のようになります。
id | person_id | company_id |
---|-----------|------------|
1 | 1 | null |
2 | 2 | null |
3 | null | 1 |
4 | null | 2 |
この図では、販売注文のソースは個人または会社です。それはどちらかであり、それ以上でも以下でもありません。私の質問は次のとおりです。データベースを制約して、1) 両方のフィールドを null にできず、2) 両方のフィールドを非 null にできないようにする方法はありますか? つまり、1 つは null でなければならず、もう 1 つは非 null でなければなりません...
2 つのテーブル (個人、会社) を 1 つの顧客テーブルに結合するという最初の反応があるかもしれません。しかし、私が示している例は、非常に単純な例にすぎません。私のアプリケーションでは、扱っている 2 つのフィールドを 1 つに結合することはできません。
私が使用している DBMS は MySQL です。
質問が理にかなっていることを願っています。よろしくお願いします。