2

データベース テーブルのスキーマを設計する必要があります。

それは次のようになります:

     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 データベースを使用しています。

4

2 に答える 2

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 の特性の 1 つです。TRUE と FALSE という名前は認識されません。

于 2012-12-18T16:36:27.370 に答える
1

What is field5 supposed to be if field4 is FALSE? A column's datatype cannot be conditional or dynamic! However, the size can be variable if you define a VARCHAR instead of a CHAR. What you can do is add an additional column for if field4 is FALSE.

field1 BOOLEAN,
field2 BOOLEAN,
field3 BOOLEAN,
field4 BOOLEAN,
field5 CHAR(50),  {if field4 is TRUE}
field6 DATATYPE   {if field4 is FALSE}
于 2012-12-18T16:29:10.903 に答える