【问题标题】:Is it better to have several different tables for similar objects, or one big table?为相似的对象设置几张不同的表更好还是一张大表更好?
【发布时间】:2021-06-15 21:02:21
【问题描述】:

我的表格有一个优化问题:

我有 Items 可以有一个 price 一个,十个和一百个。

现在我有三个表:

class Prix_x1(models.Model):
    def __str__(self):
        return self.item.name

    prix = models.IntegerField(null=True)
    saved_at = models.DateTimeField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE)


class Prix_x10(models.Model):
    def __str__(self):
        return self.item.name

    prix = models.IntegerField(null=True)
    saved_at = models.DateTimeField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE)


class Prix_x100(models.Model):
    def __str__(self):
        return self.item.name

    prix = models.IntegerField(null=True)
    saved_at = models.DateTimeField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE)

但我经常需要检查这些价格中的哪一个单位单位价格最低。因此,每次我需要这样做时,我都必须检查每个项目的每个价格表。
所以我的问题是:这是一种更好的优化方法吗?

例如,最好有一个大表Price,其中的字段number_of_unit 可以取1、10 或100 作为值?

感谢您的帮助!!

【问题讨论】:

    标签: python-3.x django django-models orm


    【解决方案1】:

    您可以在模型中为每个价格设置一个位置:

    class Prix(models.Model):
    def __str__(self):
        return self.item.name
    
    prix_x1 = models.IntegerField(null=True)
    prix_x10 = models.IntegerField(null=True)
    prix_x100 = models.IntegerField(null=True)
    
    saved_at = models.DateTimeField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    

    【讨论】:

    • 我怎么没想到,这么简单啊啊啊!谢谢!
    【解决方案2】:

    我认为最好有一张桌子

    class Prix(models.Model):
        def __str__(self):
            return self.item.name
    
        prix = models.IntegerField(null=True)
        prix_x = models.IntegerField(null=True)
        saved_at = models.DateTimeField()
        item = models.ForeignKey(Item, on_delete=models.CASCADE)
    

    保存并增加 prix 和 prix_x

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2014-01-31
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多