我正在開發HSQLDB 2.2.9。 HSQLDB是支持SQL數組類型的RDBMS之一,我想使用此功能來解決數據庫中的某些功能。HSQLDB UNIQUE約束和SQL數組類型
我在開發數據庫時一直在運行一些命令行查詢,但我不確定當聲明一個類型爲VARCHAR(24)ARRAY []的列時,HSQLDB如何處理UNIQUE約束。我正在使用的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列包含對每個客戶端唯一的標識符。當我開發這個數據庫時,我瞭解到一個客戶可能有一個或多個mrn。解決這個問題的一個辦法是使用mrn列爲每個客戶存儲一個mrn數組。
在這種情況下UNIQUE的語義是什麼? HSQLDB是否聲明數組中的每個元素都滿足UNIQUE列約束?
這個回答Can PostgreSQL have a uniqueness constraint on array elements?表明Postgres 9.1無法對SQL數組類型元素強制使用UNIQUE列約束。我想知道這是否也適用於HSQLDB。
「數組解決了很多問題,但不應該用作表格的替代品。」這聽起來好像你的mrn應該放在一個單獨的表中,每個表都有一個對客戶端ID記錄的外鍵引用。查詢能夠處理這種事情。 – scottb 2015-01-16 05:17:25