我正在建立一个电子商务网站,并希望在限定时间内为某些商品提供折扣。
我的产品表(MySQL)如下所示:
Product - productId - Name - Weight - Price (price as on the cover of the item)
我应该为交易制作另一张表格吗?
Deals - dealID - productID (Foreign Key) - discount (fractional value: percentage) - description
用于检索项目:
有更好的方法吗?另外,我如何处理仅在有限时间内存在交易的情况?
编辑: 我想展示我们为每件产品提供多少折扣。因此,我需要每个产品两个值,原始价格和给定持续时间的折扣价格。
我发布了crontab here
提出的解决方案的后续内容答案 0 :(得分:8)
您可以考虑在Deals
表中添加开始时间戳和结束时间戳。这样,您可以检查以确保当前日期在交易的开始日期和结束日期之间。
您的Deals
表格并不真正需要dealID
- 可以使用productID
和折扣的开始日期加以键入。此外,根据给定项目的价格有多高,请记住使discount
字段足够精确(类似DECIMAL 12,8
)。
如果是我,我实际上会将价格从Product
表中删除并创建ProductPricing
表而不是创建Deals
表。该ProductPricing
表将包含productID
和一个起始时间戳作为关键字段,然后还有一个结束时间戳,以指示该价格何时发生变化。当然还有物品的价格。
答案 1 :(得分:3)
另一件需要考虑的事情是,当给定项目没有折扣时,您如何对情况进行建模?您可以在此处使用Null Object模式 - 基本上,在创建产品时,您还可以在该产品上添加0%折扣和无限时间的交易。这样,您可以简化产品检索逻辑(查询中没有外部联接,没有if
来计算价格)。
答案 2 :(得分:1)
我会在折扣列中使用小数。
价格*折扣= $ off off
价格 - $ off off =购物车价格
在有限的时间内,您可以输入到期日期列,并且只返回未过期的行。
答案 3 :(得分:0)
我会将discountPrice,discountPercentage,endDiscountDate列添加到表Product 并创建表格折扣历史记录以保持折扣跟踪
然后当选择不需要加入表时,您可以选择正确的价格 通过检查endDiscountDate