针对多个供应商的产品定价历史的数据库设计

时间:2018-09-05 19:13:13

标签: mysql database database-design

我目前正在尝试为我的项目设计DB(mysql)结构,该项目是一家批发公司的在线商店-我已经创建了涉及产品的所有内容,有多种变体,但是我在价格和价格方面存在问题多个供应商的历史数据:

请在下面找到该项目的主要假设:

  • 我们将有几个产品供应商
  • 由于上述原因,每种产品的价格都会有所不同
  • 我们希望能够与每个供应商都有每种产品的历史价格数据

变体1

起初,我考虑过将2个表添加到我的数据库中:

供应商表 Supplier_id,名称

价格表 id,product_id,price_supplier1,price_supplier2,price_supplier3,时间戳

但是在这样的示例中,每当我们想要添加另一个供应商时,我们都需要向数据库中添加行(我不是数据库专家,但我想那不是最好的方法)

变体2

另一种想法是只列出价格表:

供应商表 Supplier_id,名称

价格表 :id,product_id,supplier_id,时间戳

但是,在这种情况下,如果我们有5个供应商,那么每天我们都会为1种产品创建5条记录,所以让我们想象一下,我们只有1000种产品,并且希望保留过去6个月的历史数据-这样的表格将非常迅速地增长/ p>

因此,总结一下-哪种方法更好,或者我可以实施另一种方法?非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

您应该使用变体2。最佳实践是避免频繁的表重组,这在每次添加或删除供应商时都必须在变体1中进行(尽管MySQL在最新版本中相当快)。使用单个列来标识不同的供应商值会更好。当您不必担心列值更改或完全删除时,它还可以促进查询重用。同样,空间也不是真正值得关注的问题。给您一个想法,如果您的价格表有1,000,000行(6个月),则大小约为40-50M(假设仅是主键索引)。如果确实要担心的话,MySQL还提供压缩和分区以减少存储。