Как организовать таблицы в БД?
Если соотношение ставится вручную, то это обычное отношение многие-ко-многим. Реализуется в виде отдельной таблицы (id_a, id_b).
Можно ещё принять соглашение, что id_a должен быть всегда меньше id_b и добавить триггер BEFORE INSERT чтобы автоматически контролировать это правило и корректировать пару при вставке.
Я бы рекомендовал попробовать хранить товары в MongoDB.
Свободная структура документа позволит вам хранить разные товары с разным набором признаков.
Также достаточно удобно можно организовать выборку товара по требуемым критериям