Postgres:我如何制作一个JOIN/Jjunction表,它引用了*另外两个表中的一个



我有一个Postgres数据库,它有一个Foo表和CCD_ 2表。它还有一个Bar表,所有这些表都有一个简单的id主键列。

我想在这三者之间创建一个多对多的关系,这样Bar可以有0+Foo和0+Foo_Group。我可以很容易地创建一个Foo_and_Foo_Groups_BarJOIN表,其中包含FooFoo_GroupBar的外键。但是,我在JOIN表上创建主键时遇到了问题。

问题是,在Foo_and_Foo_Groups_Bar中,foo_idfoo_group_id将始终是NULL。。。但是主键列不能有NULLs。我能找到的唯一解决方案是在Foo_and_Foo_Groups_Bar上放一个id列。。。但我认为JOIN表不应该有自己的ID,应该使用它们的JOIN ID列作为主键。

那么什么是";正确的";在这里我是在JOIN表中添加一列(除了让约束愉快之外,似乎没有必要(,还是有更好的方法?

我是合成主键的爱好者。可以为主键添加serial/Foo_Group0列。然后为id的三元组添加一个唯一的约束。

从你的例子来看,我不能100%确定你说的是一段单一的关系。听起来你有两种关系,一种是在barfoo之间,另一种是barfoo_groups之间。如果是这种情况,那么您可以有两个桥接表,并且不必担心NULL值。

最新更新