Python 每个表的Django型号与每个选择的型号
我与Django合作了一段时间,现在我的树和整个数据库都充满了数据注:现有的数据库,我想知道在这一点上,每个表一个模型是否真的比每个选择一个模型更好 我有一张桌子——objtree。这是我存储所有节点品牌、类别、标签等的地方。你可以想象,在我的政府中,它被大量使用。今天我不得不为另一个表添加另一个外键,但我已经在那里添加了两个外键。问题是,我几乎在所有情况下都使用这个模型,但是外键很少使用,更不用说这次使用的第三个外键了。由于这些表中的每一个表都有20k+的最小行,而且外键很少使用,我想知道在每个select-speed-wise中使用一个模型类是否更好 这种方法会影响速度吗?到目前为止,它对我每个表的模型都很好,但是对于如此大的数据库来说,这不是一种过度的杀伤力吗 如有任何意见,我们将不胜感激 问候 编辑: 这是模型。这3个外键很少需要,但现在,它们仍然被选中,即使我不需要它们,也许有一种简单的方法可以指定我在执行操作时不想使用的外键,例如Model.objects.all 所以问题是如果有3个模型会更好,我会分别使用外键。这会影响速度吗?还是坏方法?也许我做错了什么,我不知道Python 每个表的Django型号与每个选择的型号,python,django,django-models,Python,Django,Django Models,我与Django合作了一段时间,现在我的树和整个数据库都充满了数据注:现有的数据库,我想知道在这一点上,每个表一个模型是否真的比每个选择一个模型更好 我有一张桌子——objtree。这是我存储所有节点品牌、类别、标签等的地方。你可以想象,在我的政府中,它被大量使用。今天我不得不为另一个表添加另一个外键,但我已经在那里添加了两个外键。问题是,我几乎在所有情况下都使用这个模型,但是外键很少使用,更不用说这次使用的第三个外键了。由于这些表中的每一个表都有20k+的最小行,而且外键很少使用,我想知道在每
class Objtree(models.Model):
node_id = models.AutoField(
primary_key = True
)
type_id = models.IntegerField()
parent_id = models.IntegerField()
sort_order = models.IntegerField(
null = True,
blank = True
)
name = models.CharField(
unique = True,
max_length = 255,
blank = True
)
lft = models.IntegerField()
rgt = models.IntegerField()
depth = models.IntegerField()
added_on = models.DateTimeField()
updated_on = models.DateTimeField()
status = models.IntegerField()
point_to = models.IntegerField(
null = True,
blank = True
)
node = models.ForeignKey(
'Objtree_labels',
verbose_name = 'Objtree_labels',
to_field = 'node_id'
)
specs = models.ForeignKey(
'OptionSpecs',
verbose_name = 'OptionSpecs',
db_column = 'node_id',
null = True,
blank = True
)
ct = models.ForeignKey(
'CategoryTemplate',
verbose_name = 'CategoryTemplate',
db_column = 'node_id',
to_field = 'group_id',
null = True,
blank = True
)
我想知道在这一点上,每个表一个模型是否真的比每个选择一个模型更好
每个选择的型号是什么?听起来你的模型错了
问题是,我几乎在所有情况下都使用这个模型,但是外键很少使用,更不用说这次使用的第三个外键了
你在干什么?这听起来好像您没有正确地完成工作中的数据库建模部分。从这个简短的描述听起来,你好像在随意地向模型扔属性
没有任何合理的替代方案可以替代每个表的模型。你应该问的问题是我在做什么?这个真实世界的物体是什么?对这件事的关系数据库描述是什么
如果最好有3个模型,我会分别使用外键吗
三个模型表示树结构的三个副本,每个副本只有一个外键
然而,基本问题仍然存在
这是什么?这三件事是分开的吗?这三个方面是一件事吗?这些不是技术问题,而是现实问题。不要为表现而烦恼。以极大的逼真度为现实建模而烦恼
“对象树标签”、“选项规范”、“类别模板”-这些是什么真实世界的对象?标签-现实世界中通常不存在。选项规格可能是有形的。类别模板听起来不像是真的
这会影响速度吗
从来没有。一个表有很多外键,三个表各有一个外键,在速度上几乎无法区分。当然,除非您经常需要在单独的表之间匹配值,否则单独的表之间的连接将产生一些成本
但是如果这三个值是真正独立的——三个独立的东西——它们必须在单独的表格中,以反映它们是不同种类的东西这一事实