mysql - 如何模拟数据库中项目的折扣?

标签 mysql database-design entity-relationship

我正在建立一个电子商务网站,并希望在有限的时间内为某些商品提供折扣。

我的产品表(MySQL)如下所示:

Product
    - productId
    - Name
    - Weight
    - Price (price as on the cover of the item)

我是否应该为交易制作另一张 table :

Deals
 - dealID
 - productID (Foreign Key)
 - discount (fractional value: percentage)
 - description

用于检索项目:

  • q1:在 products 中查找 productID = 交易表中所有 productID 的所有产品
  • q2:使用交易表中的折扣更新价格
  • q3:退回所有产品

有没有更好的方法来做到这一点?另外,如果交易只存在有限的时间,我该如何处理?

编辑: 我想显示我们为每种产品提供多少折扣。因此,我需要每个产品的两个值,原价和给定持续时间的折扣价。

我发布了 crontab here 提出的解决方案的后续内容

最佳答案

您可能会考虑将开始时间戳和结束时间戳添加到您的 Deals 表中。这样,您就可以检查以确保当前日期介于交易的开始日期和结束日期之间。

您的 Deals 表实际上并不需要 dealID - 它可以使用 productID 和折扣开始日期作为键值。此外,根据给定商品的价格可能有多高,请记住使您的 discount 字段足够精确(例如 DECIMAL 12,8)。

如果是我,我实际上会关闭Product 表并创建一个ProductPricing 表,而不是创建一个Deals 表。该 ProductPricing 表将包含 productID 和作为关键字段的开始时间戳,然后还有一个结束时间戳以指示该价格何时更改。当然,还有商品的价格。

关于mysql - 如何模拟数据库中项目的折扣?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576536/

相关文章:

mysql - 我应该在 MySQL 中使用大 INT 还是常规 INT 来存储时间戳?

mongodb - MongoDB 中的多对多

database - 在数据库中存储营业时间

Symfony 和 Doctrine : cross database relations

Symfony 形式多对一一对多

MySQL创建表时出现重复键?

php - 从数据库查询 php Codeigniter

mysql - 使用 Aulux Barcode 软件连接到 MySQL 数据库

database-design - 没有 WHERE 的 SELECT 的 CQL 设计

mysql - 第二范式中的 E-R 模式