Как Реализовать Систему Скидок И Акций

Здравствуйте. Я работаю с расширением "YII Shopping Cart", как там работать со скидками мне понятно.

Подскажите пожалуйста общую картину реализации системы скидок и акций в интернет магазине в целом?

Мои мысли:

  1. Добавить в таблицу Product 2 поля "скидки", "акции".

Перед занесением товара в корзину проверять наличие заполненности этих двух полей.

Если присутствует поле скидка, то уменьшить цену товара на эту скидку, если присутствует акция то проверяем что это за акция(но откуда брать данные о акции непонятно?)

  1. Создать отдельные таблицы "Акции" и "Скидки" и связать их с таблицей "Product". Одна акция может применена ко многим продуктам и скидки также. В каждой из этих таблиц задаем условия. В скидках(на сколько скидываем). В акциях например второй товар бесплатно(+1 к купленному товару)и что еще можно тогда будет добавить в акции?

Вообщем вопрос для людей с опытом, как это правильно реализуется?

И вот что подумал, нужна ли таблица "акции" вообще?