Вот пример создания таблицы point_user из одного из моих проектов, которая состоит из двух полей, связывающих две другие таблицы (point и user) отношениями many-to-many. В этих двух полях содержатся id записей из тех двух таблиц. Первичный ключ тут просто составной, состоящий из обоих полей. И не надо его как-то специально отслеживать.
create table point_user
(
point_id uuid not null
constraint fk_413312bc028cea2
references point
on delete cascade,
user_id uuid not null
constraint fk_413312ba76ed395
references "user"
on delete cascade,
primary key (point_id, user_id)
);
create index idx_413312ba76ed395
on point_user (user_id);
create index idx_413312bc028cea2
on point_user (point_id);