私のデータベースには、次の仕様のテーブルがあります。
- 1つのPK
- 外部キーを持つ3つのフィールド
- いくつかの統計フィールド
問題はここにあります:
すべての行で、1つのFKフィールドのみが入力されます。最良の解決策AまたはBは何ですか?
A-テーブルに3FKを定義します
B-1つのフィールドをFK_TYPEとして定義し、1つのフィールドをDEMAND_FKとして定義し、結果についてFK_TYPEのチェックを使用します
私のデータベースには、次の仕様のテーブルがあります。
問題はここにあります:
すべての行で、1つのFKフィールドのみが入力されます。最良の解決策AまたはBは何ですか?
A-テーブルに3FKを定義します
B-1つのフィールドをFK_TYPEとして定義し、1つのフィールドをDEMAND_FKとして定義し、結果についてFK_TYPEのチェックを使用します
オプションA-この設計が必要な場合は、外部キーごとに個別の列が必要になります。「条件付き」外部キーを定義する(標準の)方法はありません。
システムがチェック制約をサポートしている場合は、FK列の1つだけがnullにならないようにチェック制約を含めます。チェック制約をサポートしていない場合は、これと同じチェックを実施するトリガーを追加します。
私が間違っていなければ、どのリレーショナルデータベースでもBは不可能です。外部キーは、テーブルの1つの主キーのみを参照できます。Bを使用する場合は、アプリケーションレベルで制約を追加する必要があります。それ以外の場合はAを使用します。