Оптимальная структура БД. Как организовать правильно?
Отдельно таблица пользователей.
Отдельно таблица продуктов.
Третья таблица, объединяющая, id пользователя, id продукта, плюс цена.
Нет такого понятия, как вообще оптимальная структура данных. В данном случае можно, например, создать две доп. таблицы:item_name (id, name);
item_user_price(id_user, id_item, price);
В первой будет "более 200" записей (которые, кстати, со временем могут удаляться / добавляться), во второй - столько, сколько цен будет вводиться пользователями (сомневаюсь, что пользователи будут рады, вводить все 200 цен за раз; а может у кого-то вообще есть не все цены).
Такая структура даст минимальную избыточность. Но будет ли она "оптимальной" по скорости и расходу памяти, зависит от конкретных запросов, которые на ней будут выполняться.