Дополнительная информация: как смоделировать скидку на товары в базе данных?

Я создаю сайт электронной коммерции и хотел бы предложить скидки на определенные товары в течение ограниченного времени. Я хотел бы показать, какую скидку мы предлагаем на каждый продукт. Следовательно, мне нужны два значения для каждого продукта: исходная цена и цена со скидкой на заданный срок.

Это продолжение ответа на вопрос , который я задал

Схема:

  • Product

    • productId
    • Name
  • ProductPricing

    • ] productId (FK)
    • startDateTimeStamp
    • endDateTimeStamp
    • цена
    • исходная цена применима, только если мы используем подход A (появится позже)

Данные:

Product:
    1   |   Apple
    2   |   Banana

T1: 21 декабря 2011 г. : В настоящее время сделок нет

ProductPricing
    1   |   Dec 20, 2011, 00:00 |   Jan 1, 2038, 00:00  |   10$ |   10$
    2   |   Dec 20, 2011, 00:00 |   Jan 1, 2038, 00:00  |   20$ |   20$

T2: 24 декабря 2011 г. : Сделка! Применяйте скидку 25% на яблоки с 25 декабря, 14:00 - 26 декабря, 14:00

Подъезд A. - Запрос обновляет цены на яблоки в течение заданного периода времени

ProductPricing
    1   |   Dec 25, 2011, 14:00 |   Dec 26, 2011, 14:00 |   7.5$|   10$
    2   |   Dec 20, 2011, 00:00 |   Dec 25, 2038, 00:00 |   20$ |   20$

Подход B. - Запрос добавляет еще одну запись с ценами на яблоки за указанный период

ProductPricing
    1   |   Dec 20, 2011, 00:00 |   Jan 1, 2038, 00:00  |   10$ |   10$
    2   |   Dec 20, 2011, 00:00 |   Dec 25, 2038, 00:00 |   20$ |   20$
    1   |   Dec 25, 2011, 14:00 |   Dec 26, 2011, 14:00 |   7.5$|   10$

T3: 27 декабря 2011 г. - Опции

Подход A. В настоящее время срок действия сделки истек, следует ли мне сбросить endTimeStamp с помощью триггера?

Подход B. Следует ли мне удалить самую последнюю запись о продукте, по которому только что истек срок действия сделки?

5
задан Community 23 May 2017 в 12:22
поделиться