数据库中的外键是否可以引用多个元素?

时间:2015-09-02 13:49:20

标签: sql django postgresql foreign-keys primary-key

我正在尝试使用Django / PostgreSQL建立数据库,但我无法弄清楚这是否是我可以做的事情。我想在我的表中做的是拥有各种元素,每个元素都有它们的主键字段,但同时,在同一个表中,每个元素也有一个列,它具有一个外键约束引用这些元素的主键列表。所以它必须看起来像这样:

|_pk_|_x_|_y_|_dependencies_|
|pk1 |---|---|   [pk2,pk3]  |
|pk2 |---|---|--------------|
|pk3 |---|---|--------------|

我不明白的是,是否可以让外键列引用多个主键,因为在Django中如果我只需要引用同一个表,我只想说models.ForeignKey('self')并且它会自动引用同一个表的主键,但我需要多个主键(或者甚至是None,它实际上取决于项目)。

这可行吗?设计一种方法来进行相同的引用但是使用多个表会不会更好?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您无法在Django的ForeignKey中引用多个字段。

您是否考虑过使用ManyToManyField

它创建了一个中间表,允许对该元素进行任意数量的引用。

如果您不想要,您也可以使用CSV-Field(或1.8中新的postgres特定ArrayField),但必须自己进行约束验证......

答案 1 :(得分:0)

是。这是一个例子。

CONSTRAINT fk_t1_t2 FOREIGN KEY (refcol1, refcol2)
                    REFERENCES table2(col1, col2)