Я пытаюсь использовать двойной первичный ключ в качестве внешнего ключа.
Create table AAA (
AAA_id int primary key
);
create table BBB (
AAA_id int,
BBB_name character varying(20),
primary key (AAA_id, BBB_name)
);
create table CCC (
AAA_id,
BBB_name,
DDD_id,
... ???
);
таблица ААА является объектом
Таблица BBB много к одному с AAA и содержит псевдонимы AAA
Я пытаюсь создать сводную таблицу, CCC, которая содержит много к одному между DDD и BBB.
Наверное, я хочу что-то вроде
create table CCC (
AAA_id,
BBB_name,
DDD_id,
foreign key (AAA_id, BBB_name) references BBB(AAA_id, BBB_name) on update cascade
);
где AAA_id и BBB_name являются внешними ключами, но они также всегда ссылаются на одну и ту же строку в BBB.
но, конечно, это недопустимо. Каков наилучший способ создать такой тип поведения в PostgreSQL?