2017-06-20 10 views
1

私は、製品が2つの異なるプロパティを持つことができるデータベースモデルを実行していますが、そのうちの1つは他のプロパティを除外しています。たとえば、製品Aに対してプロパティ1が有効になっている場合、この製品はプロパティ2を有効にすることはできません。sqlの2つのブール値フィールドでOR条件をモデル化する方法は?

どのようにこの条件を達成できますか?私はトリガを使用して他のブール値フィールドを無効にすることを考えましたが、データモデリングでこれを行うオプションがあるかどうかわかりません。

私が使用しているrdbmsはpostgres sqlです。

ありがとうございます。

+5

は、より多くの意味をなす1つの*のENUMフィールド*ではないでしょうか? Productは 'property = 1'か' property = 2'か 'property = NULL'です。 – deceze

答えて

3

Useチェック制約、例えば:

create table my_table(
    id integer primary key, 
    property1 boolean, 
    property2 boolean, 
    check (not (property1 and property2)) 
    ); 
関連する問題