我正在建立一个电子商务网站,并希望在有限的时间内为某些商品提供折扣。
我的产品表(MySQL)如下所示:
产品 - 产品ID - 姓名 - 重量 - 价格(价格以商品封面为准)
我应该再做一张桌子进行交易吗:
优惠 - 交易ID - 产品ID(外键) - 折扣(小数值:百分比) - 描述
用于检索物品:
有更好的方法吗?另外,如果交易仅在有限时间内存在,我该如何处理?
编辑: 我想显示我们为每种产品提供多少折扣。因此,我需要每个产品有两个值:原始价格和给定持续时间内的折扣价格。
我发布了 crontab 提出的解决方案的后续内容here
您可以考虑向
Deals
表添加开始时间戳和结束时间戳。 这样,您可以检查以确保当前日期位于交易的开始日期和结束日期之间。
您的
Deals
表实际上并不需要 dealID
- 它可以使用 productID
和折扣开始日期进行键入。 另外,根据给定商品的价格有多高,请记住使您的 discount
字段足够精确(例如 DECIMAL 12,8
)。
如果是我,我实际上会保留 Product
表的价格
,并创建一个
ProductPricing
表,而不是创建
Deals
表。 该
ProductPricing
表将包含
productID
和作为关键字段的起始时间戳,然后还有一个结束时间戳来指示价格何时发生变化。 当然,还有商品的价格。
if
)。
价格 - 折扣金额 = 购物车价格
在有限的时间内,您可以放入过期日期列,并且仅返回未过期的行。
我会将discountPrice、discountPercentage、endDiscountDate 列添加到表Product 中 并创建表折扣历史记录以保持折扣跟踪
这是一个相当古老的话题,但我认为我的观点对于将来遇到这个问题的任何人来说仍然会很有趣。
开始日期
。这将改变当前价格始终是最近开始日期的价格的说法。折扣将涉及创建两个条目:
折扣价格以及折扣开始日期