数据库设计:同一实体不同关系

时间:2018-09-05 17:06:57

标签: django database postgresql database-design architecture

我正在使用Django和Postgresql构建电子商务平台。在我的平台上,我有一个名为“类别”的实体和一个名为“属性”的实体。一个类别可以具有多个属性,但是一个属性只能属于一个类别。

例如,“数码相机”类别可以将镜头,图像质量等作为其属性。

我已经意识到某些属性可以属于所有类别。例如:包装,运输,客户服务等。

除了这些常规属性外,将来我可能还会拥有属于多个类别的属性。例如,电池可以属于电子部门的所有类别(类别属于一个部门)。但是我不确定这是否是个好主意,因为它可能使事情变得不必要地复杂。

解决此问题的最佳方法是什么?请注意,我需要能够经常查询常规属性。我想到了以下解决方案:

  1. 设置默认类别,然后将那些属性分配给该类别。在代码中编写一种特殊的逻辑,该逻辑将始终关注这些类别。
  2. 允许在属性表中使用可为空的外键。因此,属性不能属于任何特定类别,表明它属于所有类别。
  3. 为常规属性创建另一个表。
  4. 将类别-属性关系存储在第三个表中。但是,我的问题是如何查询不属于任何特定类别的属性?

感谢您的帮助。

更新: 不知道这是否是最好的解决方案,但是我走了简单的路线,最后在属性和其他模型之间建立了可为空的m2m关系。谢谢大家的帮助。

0 个答案:

没有答案