これらのテーブルがあるとしましょう:
CREATE TABLE A (
id SERIAL NOT NULL PRIMARY KEY
);
CREATE TABLE B (
id SERIAL NOT NULL PRIMARY KEY
);
CREATE TABLE Parent (
id SERIAL NOT NULL PRIMARY KEY,
aId INTEGER NOT NULL REFERENCES A (id),
bId INTEGER NOT NULL REFERENCES B (id),
UNIQUE(aId, bId)
);
CREATE TABLE Child (
parentId INTEGER NOT NULL REFERENCES Parent (id),
createdOn TIMESTAMP NOT NULL
);
Child
すべての行に対して、最大で 1 つの値をChild
参照するように一意の制約を作成することは可能ですか? 別の言い方をすれば、上記のテーブルの結合に重複がないように一意の制約を作成できますか? 私が見つけたすべてのデータベースの文法は、制約ごとに 1 つのテーブルに結び付けられているように見えますが、それは私の想像力の欠如かもしれません。(もちろん、 onを含めるための非正規化は 1 つの解決策です。)Parent
aId
aId
aId
Child