create table a_joins (
id uuid primary key default uuid_generate_v4(),
a_id uuid not null references a (id) on delete cascade,
b_id uuid references b (id) on delete restrict,
c_id uuid unique references c (id) on delete restrict,
index integer not null,
check ((b_id is not null) != (c_id is not null)),
unique (a_id, b_id),
unique (a_id, index)
);
create table a_joins (
id uuid primary key default uuid_generate_v4(),
a_id uuid not null references a (id) on delete cascade,
b_id uuid references b (id) on delete restrict,
c_id uuid unique references c (id) on delete restrict,
index integer not null,
check ((b_id is not null) != (c_id is not null)),
unique (a_id, b_id),
unique (a_id, index)
);