【发布时间】:2016-07-22 02:36:42
【问题描述】:
我正在尝试在数据库 (Django + PostgreSQL) 上设计一个 Inventory 表,但我怀疑哪种方法是实现与其他表的多个多态关系的最“正确”方式。
基本上,每个条目都需要有一个input 字段,该字段可以引用一组表中的任何一个:例如,可能已经购买了一个产品(因此该字段应该是PurchaseOrder 的外键表),或者它可能已经生产/制造(即ProductionOrder)。同样,它最终会有一个output,例如,它可以指代SalesOrder(如果产品已售出)或另一个ProductionOrder(如果它用于制造其他东西)。
当然,单个外键字段不能引用不同表中的条目,那么实现这一点的最佳方法是什么?我阅读了类似问题的答案,但这些建议似乎不太适合这种情况。创建中间表似乎不合适,因为销售订单和生产订单不属于同一个“超集”,至少对我来说是这样。
我目前的想法是为输入和输出提供尽可能多的字段(即idProductionOrder、idSalesOrder),并添加一个 -NAND- 约束以避免两个字段同时包含数据。我认为这可能是一个实用的解决方案,但可能不是一个非常简洁的解决方案。有更好的方法吗?
【问题讨论】:
标签: django database postgresql polymorphic-associations