Мы для себя решили такими таблицами:
Склады
Пользователи
Продукция
Заказы
Состав заказа (здесь запись 1 строка = 1 товар или промо-код в заказе).
Таким образом в заказе у пользователя хранится цена, скидка и инфо по товару, актуальная на момент заказа.