Postgres单个外键到不同的表

时间:2018-02-17 21:03:37

标签: sql postgresql

我有一些postgres表:

Component          Component_A      Component_B
-----------         ------------     ------------
id                  id               id
component_type      type             type
component_id        foo_col          bar_col

我希望Component能够引用Component_AComponent_B,具体取决于component_typecomponent_id的组合。 Component_AComponent_B具有不同的结构,因此它们不能存储在同一个表中。从某种意义上说,ComponentComponent_AComponent_B都是1比1。

在Postgres中建模的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话,我会在Component_A中输入id的外键,并在Component中输入component_type和component_id。 Component_B也是如此。如果在这两个外键中放置一个ON DELETE CASCADE,则每当删除一个Component时,它们的相应Component_A或Component_B将被删除,从而使这些表中的数据库没有孤立记录。

如果您正在寻找相反的方法(删除Component_A中的记录并删除相应的组件),我不确定是否可以使用外键完成,但您可以通过使用在Component_A和Component_B中删除TRIGGER,负责删除与组件相关的记录。