一个检查约束或多个检查约束?

aw *_*rud 3 sql oracle database-design check-constraints

关于是否更少检查约束更好或更多的任何建议?如果有的话,他们应该如何分组?

假设我有3列VARCHAR2(1 BYTE),每列都是'T'/'F'标志.我想为每个列添加一个检查约束,指定只IN ('T', 'F')允许使用字符.

我应该有3个单独的检查约束,每列一个:

COL_1 IN ('T', 'F')

COL_2 IN ('T', 'F') 

COL_3 IN ('T', 'F')
Run Code Online (Sandbox Code Playgroud)

或者一个检查约束:

COL_1 IN ('T', 'F') AND COL_2 IN ('T', 'F') AND COL_3 IN ('T', 'F')
Run Code Online (Sandbox Code Playgroud)

我的想法是最好将这三个分开,因为列在逻辑上彼此无关.唯一的情况是我会检查一个以上列的检查约束,如果一个值与另一个值之间存在某种关系,例如:

(PARENT_CNT > 0 AND PRIMARY_PARENT IS NOT NULL) OR (PARENT_CNT = 0 AND PRIMARY_PARENT IS NULL)
Run Code Online (Sandbox Code Playgroud)

KM.*_*KM. 8

保持分开,它们是不同的列.此外,错误消息将显示失败的检查约束名称,您将更好地了解问题所在.未来的开发人员会因为他们在一起而感到困惑,或者因为他们在不同的专栏上而没有注意到他们.