主键(Primary Key) 是一组属性,用于在一个关系(或实体集)中唯一标识每个元组(或实体)。该集合中任何两个元组(或实体)在这些主键属性上的取值不能完全相同 [1]。上下文提到,主键是一种 超键,但其任何真子集都不是超键 [1]。在 SQL 中,主键使用 PRIMARY KEY 进行声明,必须是唯一的,并且不能包含 NULL 值 [1]。

外键(Foreign Key),也称为参照完整性约束,是一组存在于一个关系中的属性,它们的值必须与另一个关系中特定属性(通常是主键)的值相对应 [1]。这意味着一个关系中外键属性的值必须在被参照关系的主键中存在 [1]。

联系

外键通过参照另一个关系的主键(或唯一键)来连接关系 [1]。这在表之间建立了联系,并有助于维护参照完整性。

区别

  • 目的: 主键用于在单个表中唯一标识每个元组。外键用于通过参照另一个表中的主键来连接两个表之间的元组。
  • 唯一性和可空性: 主键必须是唯一的且不能为 NULL。外键可以有重复的值,并且可以为 NULL(除非应用了其他约束),只要非 NULL 值对应于被参照主键中的值即可 [1]。