小编典典

外键与辅助键

sql

我以前认为外键和辅助键是同一回事。

在谷歌搜索结果变得更加混乱之后,一些人认为它们是相同的,其他人则说,辅助键是一个不必唯一的索引,并且与主键相比,它可以更快地访问数据。

有人可以解释其中的区别吗?
还是确实是混合术语的情况?
每个数据库类型是否可能有所不同?


阅读 208

收藏
2021-03-23

共1个答案

小编典典

Wiki / Foreign_key中的定义指出:

在关系数据库的上下文中,外键是一个表中的一个字段(或字段的集合),它唯一地标识另一个表的一行。换句话说,外键是一列或列的组合,用于在两个表之间建立和强制执行链接。

包含外键的表称为引用表或子表,而包含候选键的表称为引用表或父表。

以这种情况为例:

客户可能下达0,1或更多的订单。

从业务的角度来看,每个客户都由唯一的ID(主键)标识,并且我们不会在每个订单中重复客户信息,而是将引用或指针指向该唯一的客户ID(客户的主键)。订单表。通过查看任何订单,我们可以使用唯一的客户ID告诉谁下了订单。

在插入“客户”行后,在订单表中设置FK的值时,将建立父表(“客户”表)和子表(“订单”表)之间的关系。另外,删除子行可能会影响父行,具体取决于创建FK时建立的“引用完整性”字符串(层叠规则)。FK帮助在关系数据库系统中建立完整性。

至于“第二关键字”,该术语是指一个或多个列的结构,这些结构一起有助于检索同一表的一个或多个行。“钥匙”一词在某种程度上误导了某些人。次要密钥不必唯一(与PK不同)。它不是表的主键。它用于在定义该表的同一表中定位行(与FK不同)。它的执行仅通过索引(唯一或不唯一)进行,并且实现是可选的。一个表可以有0,1或多个辅助键。例如,在Employee表中,您可以使用自动生成的列作为主键。或者,您可以决定使用员工编号或SSN来检索员工信息。

有时人们将术语“辅助密钥”与术语“候选密钥”或“备用密钥”(通常出现在“规范化”上下文中)混合使用,但它们都是不同的。

2021-03-23