データベース テーブルのスキーマを設計する必要があります。
それは次のようになります:
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 の特性の 1 つです。TRUE と FALSE という名前は認識されません。
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}