Нужна помощь в написании SQL для применения рекламных предложений в корзине покупок на кассе
Не смейтесь, но я разработчик Lotus Notes (нереляционная база данных!), Пытаюсь работать с SQL, и, хотя у меня есть базовые концепции, я застрял на чем-то, что я считаю "продвинутым".
Представьте, что пользователь достигает онлайн-заказа, добавив набор продуктов в свою корзину. Мне нужно применить акции к корзине.
Эти рекламные акции смотрят на предметы в корзине и добавляют "очки" для любой комбинации, которая соответствует заранее определенному "комплекту". Промо-акции также должны быть ориентированы на пользователей в конкретных странах (информация, полученная в момент регистрации) и другие личные данные.
Акции вводятся и поддерживаются командой администратора сайта и должны быть максимально гибкими. Таким образом, они могут вознаграждать людей за такие вещи, как "Купите продукты X типа Y и получите 50% дополнительных очков" или "3 или более XE-123 и добавьте 500 очков" и т. Д.
Прямо сейчас я ищу общее направление. Как я должен хранить критерии, которые соответствуют элементам в корзине для любого из текущих рекламных акций? Сделает ли одна большая хранимая процедура код C#, который строит цикл корзины во всех рекламных акциях и определяет, какой из них подходит?
Прямо сейчас у меня даже нет схемы таблицы. Просто знание того, как это должно работать, и небольшая идея, с чего начать.
Джейк
2 ответа
Я предлагаю не использовать SQL для такой бизнес-логики.
База данных является хорошим местом для хранения информации о продуктах, таких как тип Y или тип X. Это делает дизайн базы данных довольно простым.
То, что вы упоминаете о C#, кажется лучшим направлением. Существует много информации о трехуровневой архитектуре с возможностью поиска, которая может помочь хорошо объяснить преимущества этой стратегии.
"Как можно более гибко" - это красный флаг (ИМХО). Я бы попробовал прибить это к:
- Бонус "Фиксированная точка и / или процент (от общего количества пунктов корзины / пакета)" (три столбца в таблице помощников)
- Когда корзина содержит комбинацию, которая соответствует предварительно определенному "комплекту", где "комплект" содержится в вспомогательной таблице с несколькими строками, с идентификатором комплекта и строкой для каждого элемента в комплекте, содержащего как минимум ItemID и количество,
И никакие другие виды вознаграждения невозможны. Это, чтобы сохранить проект / требование управляемым.
Затем имейте SP, который проверяет наличие пакетов в корзине и применяет соответствующие акции (как хранится в первой таблице помощников).
Также убедитесь, что вы знаете требование, возможно ли 1 или несколько рекламных акций.