2012-01-05 15 views
0

は、これらのテーブルを検討:SQLクロステーブル制約が

BOXES 
box_id int 
box_type enum('regular', 'special') 

ITEMS 
item_id int 
item_type enum('regular', 'special') 
item_box int (foreign key referencing box_id) 

を、唯一のITEM_TYPEを持つアイテムspecialがBOX_TYPE specialまたはITEM_TYPE regularの項目だけでボックスに属していることを可能にする制約を作成するにはどのような方法がありますbox_type specialのボックスに属していますか?

ありがとうございます。

答えて

0

mysqlについてはよく分かりませんが、一般的には、項目(item_type,item_box)の参照ボックス(box_type,box_id)には外部キーが必要です。

+0

申し訳ありませんが、私は逆も行うことができるように指定しておくべきです(つまり、「特殊」を「通常」にすることのみ許可します)。これは外部キーの制約では機能しませんタイプについては、私は思っていません。 – user1123312

0

あなたは同じタイプのアイテムだけをボックスに入れることを意味します。ビジネスロジック層で何かを作らなければならないでしょう、RDBMSは私が知る限りこれを作ることはできません。