我目前正在尝试为我的项目设计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>
因此,总结一下-哪种方法更好,或者我可以实施另一种方法?非常感谢您的任何建议。
答案 0 :(得分:0)
您应该使用变体2。最佳实践是避免频繁的表重组,这在每次添加或删除供应商时都必须在变体1中进行(尽管MySQL在最新版本中相当快)。使用单个列来标识不同的供应商值会更好。当您不必担心列值更改或完全删除时,它还可以促进查询重用。同样,空间也不是真正值得关注的问题。给您一个想法,如果您的价格表有1,000,000行(6个月),则大小约为40-50M(假设仅是主键索引)。如果确实要担心的话,MySQL还提供压缩和分区以减少存储。