我必须为数据库表设计模式。
它是这样的:
field1 is TRUE/FALSE
field2 is TRUE/FALSE
field3 is TRUE/FALSE
field4 is TRUE/FALSE
field5 is char(50) if field4 is TRUE
有人可以为这种表建议一个最佳模式。
我正在使用 Informix 数据库。
Informix 有一个稍微奇怪的 BOOLEAN 类型。您可能更喜欢使用fieldN CHAR(1) NOT NULL CHECK(fieldN IN ('Y', 'N'))
(或IN('T', 'F')
)。但是 BOOLEAN 在其范围内工作。
CREATE TABLE Anonymous
(
ID_Column SERIAL NOT NULL PRIMARY KEY,
field1 BOOLEAN NOT NULL,
field2 BOOLEAN NOT NULL,
field3 BOOLEAN NOT NULL,
field4 BOOLEAN NOT NULL,
field5 CHAR(50),
CHECK((field4 = 't' AND field5 IS NOT NULL) OR (field4 = 'f' AND field5 IS NULL))
);
值't'
和'f'
是 Informix BOOLEAN 的特性之一;名称 TRUE 和 FALSE 无法识别。
如果 field4 为 FALSE,那么 field5 应该是什么?列的数据类型不能是条件的或动态的!但是,如果您定义 VARCHAR 而不是 CHAR,则大小可以是可变的。如果 field4 为 FALSE,您可以添加一个附加列。
field1 BOOLEAN,
field2 BOOLEAN,
field3 BOOLEAN,
field4 BOOLEAN,
field5 CHAR(50), {if field4 is TRUE}
field6 DATATYPE {if field4 is FALSE}