Вы недостаточно адекватно представляете отношения «один ко многим» между продуктами и продавцами.В вашем табле продукта есть seller_id и seller_price, но если один товар продается многими продавцами, он не может.
Вместо дублирования записей о товарах, чтобы один и тот же товар мог иметь нескольких продавцов, вам нужна таблица между продуктами и продавцами.
CREATE TABLE seller_products (
seller_id integer,
product_id integer,
price decimal
);
Я оставлю индексы внешних ключей и т. Д.вы.Идентификатор продавца и идентификатор продукта могут представлять собой уникальную комбинацию (исторические данные лучше всего удалять из активных наборов данных для увеличения срока службы), но, конечно, любой данный продукт будет указан один раз для каждого продавца, который его продает, и каждый данный продавец будет указан один раз для каждого продукта.он продает (вместе с его уникальной ценой).
Затем вы можете присоединить таблицу к продуктам, чтобы получить данные, которые вы в настоящий момент храните денормализованными в таблице products
:
SELECT *
FROM products
LEFT JOIN seller_products ON ( seller_products.product_id = products.id)