sql – 外键vs二键

前端之家收集整理的这篇文章主要介绍了sql – 外键vs二键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我曾经认为外键和二键是一回事.

在Google搜索之后,结果更加令人困惑,有些人认为它们是相同的,其他人则认为辅助键是一个不必是唯一的索引,并且允许比使用主键更快地访问数据.

有人可以解释这个区别吗?
或者它确实是混合术语的情况?
每个数据库类型可能有所不同吗?

解决方法

wiki/Foreign_key中的定义指出:

In the context of relational databases,a foreign key is a field (or
collection of fields) in one table that uniquely identifies a row of
another table. In other words,a foreign key is a column or a
combination of columns that is used to establish and enforce a link
between two tables.

The table containing the foreign key is called the referencing or
child table,and the table containing the candidate key is called the
referenced or parent table.

以案例为例:

客户可以下1个或更多订单.

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

在插入Customer行后,在Order表中设置FK的值时,将建立父(Customer表)和子表(Order表)之间建立的关系.此外,删除子行可能会影响父级,具体取决于创建FK时建立的参照完整性标记(级联规则). FK有助于在关系数据库系统中建立完整性.

对于“辅助密钥”,该术语指的是一个或多个列的结构,它们一起帮助检索同一个表的一行或多行. “关键”这个词对某些人来说有点误导.辅助密钥不必是唯一的(与PK不同).它不是表的主键.它用于定位在其中定义的同一个表中的行(与FK不同).它的实施只能通过一个索引(或者是唯一的或不是唯一的)来实现是可选的.一个表可以有0,1个或更多的辅助密钥.例如,在Employee表中,您可以使用自动生成的列作为主键.或者,您可以决定使用员工编号或SSN来检索员工信息.

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

原文链接:https://www.f2er.com/mssql/77296.html

猜你在找的MsSQL相关文章