У меня есть таблица соединений для отношения «многие ко многим», которая просто связывает два внешних ключа вместе. Однако я обнаружил, что это не предотвратит дублирование одинаковых записей строк. Как правильно обращаться с этим? Я думал, что добавление PRIMARY KEY к двум внешним ключам сделает это, но кажется, что я не правильно понимаю.
CREATE TABLE ab_link (
a_id bigint REFERENCES a(a_id) PRIMARY KEY,
b_id bigint REFERENCES b(b_id) PRIMARY KEY
);
Я нашел еще один вопрос в следующем примере:
CREATE TABLE bill_product (
bill_id int REFERENCES bill (bill_id) ON UPDATE CASCADE ON DELETE CASCADE
, product_id int REFERENCES product (product_id) ON UPDATE CASCADE
, amount numeric NOT NULL DEFAULT 1
, CONSTRAINT bill_product_pkey PRIMARY KEY (bill_id, product_id) -- explicit pk
);
Является ли это ограничение лучшим способом обеспечения уникальности? Я думаю, что есть какой-то способ сделать это без третьего ряда.