Связь продукта и заказа через связующую таблицу не совсем верная, тк в будущем (настоящем) может не быть товаров, заказанных ранее. Потому товары для заказа хранятся в отдельной таблице purchases
, причем такая "сущность данных" может быть денормализованней товара.
В товаре у вас находятся характеристики. Но может быть такое, что их число увеличится сильно (и сильно вероятно), обычно их выносят в таблицу features
и связь products_features
Не увидел у вас предложений/офферов/вариантов товара — конкретные ценовые предложения товаров. Например размеры одного товара или разного одного цвета, у этих "сущностей данных" и будет цена и остаток. В вашем случае StorageID и SupplierID
Все остальное норм и дробится уже по мере развития и усложнения/роста системы