我正试图在数据库(Django + PostgreSQL)上设计一个Inventory
表,并且对于实现与其他多态关系的最“正确”方式表。在库存数据库上实现多态关联
基本上,每个条目都需要有一个input
字段,它可以引用任何一组表格:例如,产品可能已经被购买(因此该字段应该是PurchaseOrder
表的外键),或者它可能已经生产/制造(即ProductionOrder
)。同样,它最终会有一个output
,例如,可以参考SalesOrder
(如果产品已售出)或另一个ProductionOrder
(如果它用于制造另一件东西)。
当然,单个外键字段不能引用不同表中的条目,那么实现此目的的最佳方式是什么?我阅读了类似问题的答案,但这些建议似乎并不适合这样的情况。创建中间表似乎并不合适,因为销售和生产订单不属于相同的“超集”,至少对我而言。
我目前的想法是对于输入和输出都有尽可能多的字段选项(即idProductionOrder
,idSalesOrder
),并添加-NAND约束以避免两个字段同时包含数据。我认为这可能是一个实际的解决方案,但可能不是一个非常整齐的解决方案。有更好的方法吗?