什么是更好的方法,更少的代码,更多的ForeignKey或更多的代码和列?

时间:2020-08-07 11:22:50

标签: python django postgresql model foreign-keys

我正在编写我的第一个商业Django应用程序,并且由于要在相当长时间内坚持更改和优化模型而一直在寻求帮助。

现在,我正在考虑什么是创建模型的更好方法。假设我有几个模型,但都没有几个共同的字段(例如名称,城市,地址,邮政编码)。

您能告诉我什么是更好的方法吗?在每个模型(表)中重复这几个字段(列),或者只是在适合的地方使用外键并创建一个地址模型,即使这些地址具有完全不同的含义(人,机构等),而我不会在一张桌子上需要它们。

我了解我使用的外键越多,每次需要从其他表中获取一些信息时,应用程序将进行的查询越多?甚至值得考虑吗?

我看到的优势是:

  • 更少的代码
  • 不重复自己

和缺点:

  • 要查询相同信息的更多查询吗?
  • 稍稍复杂一些,稍后再实施
  • 重复行的可能性更大

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果我很好地理解了您的问题,那么对我来说,逻辑方法是只定义一次与模型相关的文件(模型1),如果您要使用它们并将它们共享(我的意思是将模型1)共享给其他人您刚创建的模型在其他模型和模型1之间加入Join(Foreignkey,many_to_many ...)。

答案 1 :(得分:0)

我建议您使用基本模型并使用FK关联特定信息。

在一个用户示例中,您可以像您所说的那样拥有一个基础模型,然后有一个'institution_profile'和'individual_profile'或类似的与用户相关的东西,然后可以从该基础模型中访问所有这些模型。

有了这个,您将在代码的可读性和逻辑上获得很多。此外,您还可以减少数据库的冗余性。

我还建议检查this article有关外键性能。

相关问题