SQL Server 2008 データベースに次のテーブルがあります。
ItemIDフィールドを持つtblItem 。
tblGoodItemにも ItemID フィールドがあり、tblItem を指す外部キーがあります。
tblBadItemにも ItemID フィールドがあり、tblItem を指す外部キーもあります。
アイテムは、良いアイテムと悪いアイテムの両方になることはできません。どちらか一方でなければなりません。しかし、その商品が良くも悪くも、それは商品でなければなりません。
私の質問はこれです: ItemID 値が両方のテーブルに存在できないように、tblGoodItem と tblBadItem の両方の ItemID フィールドに制約を追加するにはどうすればよいですか?
同様の質問に対するスタック オーバーフローの回答をいくつか読みましたが、この解決策を考えています。
ItemID で tblBadItem の tblGoodItem を結合するビューvwItemを作成します。
ビューにいくつのレコードが存在するかを確認するために、vwItem に対してクエリを実行する UDF fnItemを記述します。
fnItem を呼び出して、返される値が 0 であることを確認する制約があります。
これは最高のアイデアですか?誰かがより良いアイデアを持っていますか?