3

不要笑,但我是一名尝试使用 SQL 的 Lotus Notes(非关系数据库!)开发人员,虽然我已经掌握了基本概念,但我仍然坚持我认为是“高级”的东西。

想象一下,一个用户在他们的购物篮中添加了一组产品后到达在线结账处。我需要对购物篮应用促销活动。

这些促销会查看购物篮中的商品,并为匹配预定义“捆绑包”的任何组合添加“点数”。促销活动还需要能够针对特定国家/地区的用户(在注册时获得的信息)和其他个人详细信息。

促销活动由站点管理团队输入和维护,并且需要尽可能灵活。因此,他们可以奖励诸如“购买 Y 型 X 产品并获得 50% 额外积分”或“3 个或更多 XE-123 并获得 500 积分”等奖励。

现在我正在寻找大方向。我应该如何将与购物篮中的项目匹配的条件存储到任何正在运行的促销活动中?一个大的存储过程会做还是应该构建购物篮的 C# 代码遍历所有促销活动并查看哪个合适?

现在我什至没有表模式。只是知道它应该如何工作并且不知道从哪里开始。

杰克

4

2 回答 2

1

我的建议是不要将 SQL 用于这种业务逻辑。

数据库是保存产品信息的好地方,比如它们是 Y 型还是 X 型。这使数据库设计非常简单。

您提到的 C# 似乎是一个更好的方向。有很多关于 3 层架构的可搜索信息可以帮助很好地解释这种策略的好处。

于 2010-08-26T12:50:20.650 回答
0

“尽可能灵活”是一个危险信号(恕我直言)。我会尝试将其确定为:

  • “固定点数和/或百分比(总篮子/捆绑点数)奖金(助手表中的三列)
  • 当购物篮包含与预定义的“bundle”匹配的组合时,其中“bundle”包含在辅助表中,具有多行,具有 bundleID 和捆绑中每个项目的行,至少包含 ItemID 和 Quantity .

并且不可能有其他类型的奖励。这是为了保持项目/需求的可管理性。

然后有一个 SP 来检查篮子中是否存在捆绑包并应用相关促销(存储在第一个帮助表中)。

还要确保您知道是否可以进行 1 次或多次促销的要求。

于 2010-08-26T08:46:23.300 回答