tee*_*bot 4 database database-design
我有一张优惠券表.优惠券仅适用于某些商品或适用于整个商品类别.
例如:比萨12" 和(1L百事可乐或炸薯条)的5美元优惠券
我能想到的最好的方法是制作一个CouponMenuItems表,其中包含coupon_id和位字段,如IsOr和IsAnd.它不起作用,因为在这个例子中我有2组项目.第二个是2个项目之间的OR关系.
知道如何做到这一点所以实现的逻辑尽可能简单吗?
任何帮助或提示赞赏!
谢谢,
Teebot
通常,您可以使用析取范式来简化此类事物.
您将逻辑规范化为一系列分离 - "或条款".每个析取都是"和条款".
因此,您的规则将成为以下长期分离.
要么
(你总是可以做到这一点,BTW,任何逻辑.问题是有些事情可能真的很复杂.好消息是没有营销人员会在你身上尝试令人困惑的逻辑.此外,从任何旧形式的重写解析正常形式是一个简单的代数.)
你会注意到,这总是两层深的:总是一个顶层的析取列表(其中任何一个都可能是真的)和一个较低级别的合取列表(所有这些都必须为真).
因此,您有一个"条件"表,其中包含id和产品名称等列.这定义了订单项和产品之间的简单比较.
您有一个Conjuncts("中级和子句")表,其中包含联合ID和条件ID等列.合取与条件之间的联合将产生合取的所有条件.如果所有这些条件都成立,则合并为真.
具有Disjuncts("顶级或子句")表,其中包含诸如disjunct Id和conjunct ID之类的列.如果这些析取中的一个是真的,则析取是正确的.
析取,合取和条件之间的连接产生了您需要测试的完整条件集.