当前位置: 首页 > 面试题库 >

外键与辅助键

许琛
2023-03-14
问题内容

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

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

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


问题答案:

Wiki / Foreign_key中的定义指出:

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

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

以这种情况为例:

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

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

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

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

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



 类似资料:
  • 本文向大家介绍Android辅助功能AccessibilityService与抢红包辅助,包括了Android辅助功能AccessibilityService与抢红包辅助的使用技巧和注意事项,需要的朋友参考一下 推荐阅读:Android中微信抢红包插件原理解析及开发思路 抢红包的原理都差不多,一般是用Android的辅助功能(AccessibilityService类)先监听通知栏事件或窗口变化事

  • Hyperf 提供了大量便捷的辅助类,这里会列出一些常用的好用的,不会列举所有,可自行查看 hyperf/utils 组件的代码获得更多信息。 协程辅助类 Hyperf\Utils\Coroutine 该辅助类用于协助进行协程相关的判断或操作。 id(): int 通过静态方法 id() 获得当前所处的 协程 ID,如当前不处于协程环境下,则返回 -1。 create(callable $call

  • 主要内容:文本,背景,其他,更多实例,实例,实例,实例,实例,实例,实例,实例本章将讨论 Bootstrap 中的一些可能会派上用场的辅助类。 文本 以下不同的类展示了不同的文本颜色。如果文本是个链接鼠标移动到文本上会变暗: 类 描述 实例 .text-muted "text-muted" 类的文本样式 尝试一下 .text-primary "text-primary" 类的文本样式 尝试一下 .text-success "text-success" 类的文本样式 尝试一下

  • 简介 Laravel 包含各种各样的全局「辅助」PHP 函数,框架本身也大量地使用了这些功能;如果你觉得方便,你可以在你的应用中自由的使用它们。 可用方法 数组 & 对象 array_add array_collapse array_divide array_dot array_except array_first array_flatten array_forget array_get arra

  • 周边辅助 一个好的机器学习系统,要有充分的周边辅助,让开发者更加方便的开发,Angel提供了如下的辅助类,并将不断完善。 全局指标(GlobelMetrics) 了解这些辅助类和模块,可以让你的算法开发更加轻松和便捷,调试起来事半功倍。 项目地址:https://github.com/Angel-ML/angel 官网:https://angelml.ai/

  • 为程序制作辅助功能是很重要的。在这里,我们很高兴地向你们介绍Devtron和Spectron。这两个新功能有机会使开发者们让他们的应用程序更加可用。 Electron 应用中有关辅助功能的开发和网站是相似的,因为两者最终使用的都是HTML. 然而, 对于Electron应用, 你不能使用在线的辅助功能审查者, 因为你的应用没有一个URL可以提供给审查者. 然而这些新功能将这些审查工具带到您的Ele