informix中表的模式

时间:2012-12-18 14:27:52

标签: database informix

我必须为数据库表设计模式。

就像:

     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数据库。

2 个答案:

答案 0 :(得分:3)

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无法识别。

答案 1 :(得分:1)

如果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}