私は HSQLDB 2.2.9 で開発しています。HSQLDB は、SQL 配列型をサポートする RDBMS の 1 つです。この機能を使用して、データベースの一部の機能に対処したいと考えています。
データベースを開発する際にいくつかのコマンド ライン クエリを実行しましたが、VARCHAR(24) ARRAY[] 型の列に対して宣言されたときに UNIQUE 制約が HSQLDB によってどのように処理されるかわかりません。私が使用しているDDLは次のとおりです。
CREATE CACHED TABLE Clients (
cli_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
mrn VARCHAR(24) ARRAY DEFAULT ARRAY[] NOT NULL UNIQUE,
lastname VARCHAR(48) NOT NULL,
firstname VARCHAR(24) NOT NULL,
dob INTEGER DEFAULT 0 NOT NULL
);
mrn 列には、各クライアントに固有の識別子が含まれています。私がこのデータベースを開発したとき、クライアントが 1 つまたは複数の mrn を持っている可能性があることを知りました。この問題の 1 つの解決策は、mrn 列を使用して、各クライアントの mrn の配列を格納することです。
この状況での UNIQUE のセマンティクスは何ですか? HSQLDB は、配列内の各要素が UNIQUE 列制約を満たしていると主張しますか?
この回答Can PostgreSQL has a uniqueness constraint on array elements? は、Postgres 9.1 が SQL 配列型要素に UNIQUE 列制約を適用できないことを示唆しています。これはHSQLDBにも当てはまるのではないかと思います。