Никак. Стоимость доставки в БД является исходной. От неё рассчитывается новая с учётом промокода. Промокод и новая стоимость доставки сохраняются в заказе (или не в заказе).
Если у вас свой магазин, то вполне себе правильно. Если у вас агрегатор, то можете добавить еще таблицы "магазины", "точки продаж магазина" и в таблицу офферов добавить поле "айди точки продаж" (как вариант).