0

CHECK() 制約は、問題の同じ行内の値のみを参照できるという印象を受けています。次のルールを適用する方法を見つけようとしています。

次の表を考えます。

PK_Employee_ID | Employee_Name | Manager_ID

Manager ID は、テーブル上の別の従業員の ID です。特定の行の PK_Employee_ID が別の行の Manager_ID で参照されている場合、その行の Manager_ID は null でなければならないというルールが必要です。あれは:

すべての従業員にマネージャーが必要なわけではありませんが、別の従業員のマネージャーである従業員にはマネージャーがいない場合があります。

問題を解決する他の方法があることを知っています。単に「Is_Manager」である別のビット列が存在する可能性があります。これは、1 の場合、Manager_ID がヌルでなければならないことを意味します。ただし、各行がマネージャーであるかどうかを明示的に伝えるのではなく、他の行を見て自分で判断できるようにするという、より洗練されたソリューションをお勧めします。これにより、特定の行間の関係を簡単に変更できます。それとも、これは問題を処理するための非常に非効率的な方法ですか?

4

0 に答える 0