我有一些postgres表:
Component Component_A Component_B
----------- ------------ ------------
id id id
component_type type type
component_id foo_col bar_col
我希望Component
能够引用Component_A
或Component_B
,具体取决于component_type
和component_id
的组合。 Component_A
和Component_B
具有不同的结构,因此它们不能存储在同一个表中。从某种意义上说,Component
与Component_A
和Component_B
都是1比1。
在Postgres中建模的最佳方法是什么?
答案 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,负责删除与组件相关的记录。