概述:商家优惠折扣。用户可以使用折扣。商家提供多种折扣,但只能连续使用。这意味着,最初如果您没有使用某项业务的任何折扣......您只有资格获得折扣1.一旦您使用折扣1,您就有资格获得2,那么一旦您使用2,您就有资格获得3。
需要的功能:
我的第一个解决方案是简单创建4个表:
Biz创建折扣,用户获取折扣并将其保存在UserDiscount中。 Biz与Discount有一对多关系。使用UserDiscount折扣有一对多。
问题是如果商家更新折扣或删除折扣,它会完全改变用户的历史记录,并且即使他们没有过期也可以兑换折扣。
其次是在UserDiscount中创建整个副本。但这看起来像是很多重复。
第三是每次业务更新,或删除他们的折扣只需在折扣中创建新记录。但是现在我要为每个折扣添加一个标志,如果这是否是活动的,并且在有3个记录之前,现在可能有100个,这取决于业务更新他们的东西多少次。
答案 0 :(得分:1)
为了避免更改历史记录和最小化重复的问题,您不应该在折扣表中编辑记录,而是在需要时添加新记录。如果折扣有效,您可以添加标记,但使用生效日期/到期日期更好。您可以进行的一项优化是允许编辑尚未使用的折扣,以最大限度地减少表中未使用的行。