我正在尝试创建一个类似于groupon的系统,但商家会将凭证代码输入系统,客户可以使用它来获取产品。
让我们假设商家1有以下产品
他会将产品ID 2的优惠券代码添加到系统中。
优惠券会添加到COUPON表中,并带有以下字段:
max是可以发出的优惠券的最大值。 num_available是可用优惠券的编号。因此,如果商家将最大值设为5,则num_available从5开始,但每当客户被分配该优惠券时,num_available减少1
然后,当客户订购时,他们会获得优惠券
用户订单被添加到下表订单: 订单:
OrderPosition:
每个订单(存储在订单中)都有多个与之关联的产品(存储在OrderPosition中)。
因此,用户1订购产品2并获得为产品2添加的优惠券ID 1.优惠券ID 1(在COUPON表中)的num_available在数据库中减少了1。
但是,如果用户1订购两件产品2 - 一件为她,另一件为她的朋友 - 她会得到两个不同的优惠券代码吗?
基本上,我想让他的过程更有效率,我不知道Groupon是如何设计这个过程的,但如果有人对如何做到这一点有好的想法,请告诉我!
我很想知道是否应该更改数据库架构以提高效率......
我的最终目标是让人们购买优惠。一旦他们买了一笔交易,他们就会得到一张优惠券。我可以自动生成该优惠券,但我猜一些商家想要输入他们自己的系统上的优惠券,对吗?
问题是 - 我应该如何设计系统以实现上述目标?
我还要强调,我网站上列出的产品将来自不同的商家。我不会列出我自己的产品。商家就像在Groupon.com上一样列出他们自己的产品。
生成优惠券代码而不是商家输入代码是否可行?这是否意味着他们必须在自己的系统上支持这些代码?如果jcpenny.com在我的网站上输入产品,我可以为这些产品生成优惠券代码,但是如果jcpenny.com不支持这些优惠券代码怎么办?我猜测商家想要输入自己的代码......或者我错了?
答案 0 :(得分:2)
我建议为每个请求生成优惠券代码。如果有人订购2,则生成2个代码。
如果有人为朋友购买,或者同一个用户多次购买,则会更容易。我实际上在我写的系统中有相同的情况,它最终成为我案例中最方便的解决方案。
当然,这是一个意见问题......