Но это не обеспечило бы уникальность AID. Ключ в родительской таблице (aId, bId) не является aId.

тим, у нас есть эти таблицы:

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

Ответы на вопрос(2)

Ваш ответ на вопрос