Вы рисуете себя в углу с выбором № 2.
Во-первых, вы не можете указать, что продукт производится на двух заводах без ввода двух строк в таблице продуктов только для одного продукта.Если вы сделаете это, ваша разработка приложений станет очень запутанной.
Во-вторых, вы не можете иметь дело с возможностью того, что на предприятие будет добавлен новый завод, который изначально не производит никаких продуктов.Это может никогда не случиться.Но если это произойдет, вы застряли.
В-третьих, вы не можете добавить в смесь новый продукт, который изначально нигде не производился.Вы не можете сказать, что с такой схемой, как ваша # 2.
В-четвертых, вам нужно будет написать критерии выбора, такие как "где ProductID = CurrentProductID или ProductID равен нулю" повсеместно.Это может показаться простым для вас, но это точно не для меня.Я бы предпочел иметь дело с дополнительным объединением.
Хорошие принципы дизайна хороши не потому, что так сказал какой-то первосвященник.Они хороши тем, что работают в самых разных обстоятельствах.
Если у вас есть много-много вариантов, воспользуйтесь распределительной таблицей.Вы пожалеете об этом, если не сделаете этого.