我必须为数据库表设计模式。
它是这样的:
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}