引用PK的外键是否需要NOT NULL约束?

时间:2009-09-01 18:22:15

标签: database-design postgresql

引用主键的外键是否需要PostgreSQL数据库中的NOT NULL约束?
数据库高度标准化,并且非常大。我不希望添加额外的约束,如果不需要所述查询,则会减慢查询速度。

2 个答案:

答案 0 :(得分:12)

如果您希望能够在该表的FK列中表示unknown,则将其设为可为空,如果必须具有值,则将其设置为Null。

您可以在引用表中使用空FK值包含任意数量的记录。唯一约束是在引用表中的行(PK所在的位置)不在引用表中的行上(FK所在的行)。

答案 1 :(得分:-1)

主键必须是唯一的,理想情况下应该由数据库选择,以限制并发问题,因此,尽管它可以是唯一的,但对于1条记录,每个其他记录必须具有值。

否则,如果有多个匹配,您如何知道此外键与哪一行相关?

所以,正如New提到的那样,NULL应该是有效的,但对于一个记录,因为唯一性将是更大的问题。

编辑:哎呀,误解了这个问题。

之前我在外键上放了null,但是如果你有级联删除,那么null将不起作用,除非你在主表中有一个空值的键。