Уникальное ограничение для нескольких таблиц

Допустим, у нас есть следующие таблицы:

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 , чтобы для всех строк в Child ​​не более одной ссылки на Родитель , имеющий некоторое значение aId ? Другими словами, могу ли я создать уникальное ограничение, чтобы объединение приведенных выше таблиц не имело повторяющихся aId ? Я думаю, что нет - грамматики каждой базы данных, которую я смог найти, кажутся привязанными к одной таблице для каждого ограничения - но это может быть недостаток воображения с моей стороны. (Одним из решений, конечно же, является деконормализация для включения aId в Child .)

8
задан troutwine 8 June 2011 в 14:39
поделиться