За мои деньги это плохой дизайн, потому что он использует таблицы атрибутов, которые являются таблицами EAV и которые могут вызвать проблемы с производительностью. Потратьте время на то, чтобы действительно определить атрибуты, которые вы хотите иметь для продуктов, на самом деле они в большинстве своем одинаковы для большинства продуктов (цвет, размер, единицы (упаковка из 10, один элемент и т. Д.). EAV - последнее средство.
Храните информацию о ценах и т. Д. В таблице заказа. Вы не хотите, чтобы цена изменилась, если цена продукта изменится позже в будущем.
Моя структура будет выглядеть примерно так:
порядок
ордерид, дата, кастомерид
Информация для заказа
идентификатор заказа, идентификатор товара, номер товара, номер изделия, имя товара, количество, цена, единица измерения, цвет, размер, другие атрибуты
Заказ заметок
идентификатор заказа, примечание
Продукты
идентификатор продукта, номер изделия, имя продукта, идентификатор компании, цена продукта, цвет, размер, единица измерения
Лучше иметь нулевые столбцы (если у вас нет сотен атрибутов, которых у вас обычно не будет), если некоторые продукты не имеют одинаковых атрибутов)
Кроме того, если вам нужны полные спецификации для продукта, подумайте о том, чтобы поместить их в большое поле varchar и добавить к нему полнотекстовый индекс. Это должно работать лучше, чем таблица EAV.