数据库管理系统键:候选键、主键、超级键和外键类型

⚡ 智能摘要

在数据库管理系统(DBMS)中,键是唯一标识表中每一行并建立表间关系的属性。从超键、主键到外键和代理键,共有八种键类型,它们共同确保关系数据库中的身份和完整性。

  • 🗝️ 核心宗旨: 键用于标识唯一行并链接相关表,从而保持数据一致性。
  • 🔝 超级密钥: 任何用于识别行的属性集,可能包含除最小属性之外的额外属性。
  • 首要的关键: 选定的候选键,不能为空,不能重复,每个表只能有一个。
  • 🎯 候选键: 一个最小的超键,没有冗余属性;主键从这些超键中选取。
  • 🔁 备用键: 任何未被选为主键的候选键。
  • 🔗 外键: 引用另一表主键的列,以强制执行引用完整性。
  • 🧩 复合和替代: 复合键将多列组合起来以确保唯一性;代理键是生成的替代键。

DBMS 密钥候选超级主键

数据库管理系统中的键是什么?

数据库管理系统中的键 键是属性或属性集,用于帮助您识别关系(表)中的行(元组)。它们使您能够找到两个表之间的关系。键通过一个或多个列的组合来唯一标识表中的一行,并且还有助于查找表中的唯一记录。

计费示例:

员工ID 名字
11 安德鲁 约翰逊
22 Tom 木材
33 Alex 海尔

在上面的例子中,员工 ID 是主键,因为它唯一标识一个员工记录。在这个表中,没有其他员工可以拥有相同的员工 ID。

为什么我们需要钥匙?

以下是数据库管理系统中使用键的一些原因:

  • 键可以帮助您识别表中的任何数据行。在实际应用中,一个表可能包含数千条记录,并且这些记录可能重复。键确保您即使面临这些挑战也能唯一地标识表中的记录。
  • 它们可以帮助您建立和识别表之间的关系。
  • 它们有助于你在关系中维护身份认同和诚信。

数据库管理系统中的键类型

数据库管理系统中主要有八种不同类型的键,每种键都有其自身的功能:

  1. 超级钥匙
  2. 首要的关键
  3. 候选键
  4. 备用键
  5. 外键
  6. 复合键
  7. 复合键
  8. 代理键

下表概述了所有八项内容,然后对每项内容进行详细解释。

主要 一行 独特?
超级钥匙 任何用于标识行的属性集,允许添加额外属性。
候选键 最小超键,无冗余属性
首要的关键 选定的候选键,非空
备用键 未被选为主键的候选密钥
外键 引用另一个表中的主键 没有
复合键 两个或多个属性,每个属性都可能不唯一 组合
复合键 合并两列或多列以获得唯一性 组合
代理键 生成的人工标识符

什么是超级钥匙?

超键是由一个或多个键组成的集合,用于标识表中的行。超键可能包含一些并非唯一标识所必需的附加属性。

计费示例:

雇员社会保障号 雇员编号 雇主名称
9812345098 AB05 显示
9876512345 AB06 罗斯林
199937890 AB07 JAMES

在上面的例子中,EmpSSN 和 EmpNum 是超级键。

什么是主键?

主键 in DBMS 主键是表中唯一标识每一行的列或列组。主键不能重复,也就是说,同一个值在表中不能出现多次。一个表只能有一个主键。

定义主键的规则

  • 两行数据不能具有相同的主键值。
  • 每一行都必须有一个主键值。
  • 主键字段不能为空。
  • 如果任何外键引用主键,则主键列中的值永远不能被修改或更新。

计费示例: 在下面的例子中, StudID 是主键。

学生编号 卷号 名字 电邮
1 11 Tom 价格筛选 abc@gmail.com
2 12 Nick 赖特 xyz@gmail.com
3 13 达纳 纳坦 mno@yahoo.com

什么是备用密钥?

备用密钥 主键是表中唯一标识每一行的列或列组。一个表可以有多个主键选项,但只能将其中一个设置为主键。所有非主键的键都称为备用键。

计费示例: 在此表中,学号 (StudID)、学号 (Roll No) 和邮箱地址 (Email) 都符合成为主键的条件。但由于学号 (StudID) 已是主键,因此学号 (Roll No) 和邮箱地址 (Email) 成为备选键。

学生编号 卷号 名字 电邮
1 11 Tom 价格筛选 abc@gmail.com
2 12 Nick 赖特 xyz@gmail.com
3 13 达纳 纳坦 mno@yahoo.com

什么是候选键?

候选键 候选键是一组用于唯一标识表中元组的属性。候选键是一个超键,其属性不重复。主键应从候选键中选择。每个表必须至少有一个候选键,一个表可以有多个候选键,但只能有一个主键。

候选密钥的属性:

  • 它必须包含唯一值。
  • 候选键可以有多个属性。
  • 它不能包含空值。
  • 它应该包含确保唯一性所需的最少字段。
  • 它能唯一标识表中的每一条记录。

例如:在下表中,StudID、Roll No 和 Email 是候选键,它们可以帮助我们唯一地标识学生记录。它们与超键和主键的关系是理解它们关系的一种常用方法。 函数依赖.

学生编号 卷号 名字 电邮
1 11 Tom 价格筛选 abc@gmail.com
2 12 Nick 赖特 xyz@gmail.com
3 13 达纳 纳坦 mno@yahoo.com
DBMS 中的候选键
DBMS 中的候选键

什么是外键?

外键 外键是连接两个表的列,用于建立两个表之间的关系。外键的目的是维护数据完整性,并允许在同一实体的两个不同实例之间进行导航。它充当两个表之间的交叉引用,因为它引用了另一个表的主键。

计费示例:

部Code 部门名称
001 科学
002 英语
005 电脑
教师 ID 名称 名称
B002 David 华纳
B017 萨拉 约瑟夫
B009 Mike 布伦顿

在这个例子中,我们有两个表格:教师表和部门表,它们都属于同一所学校。目前,我们无法得知哪位教师在哪个部门工作。

通过添加外键 DeptCode 我们可以通过教师表和教师表建立两个表之间的关系。

教师 ID 部Code 名称 名称
B002 002 David 华纳
B017 002 萨拉 约瑟夫
B009 001 Mike 布伦顿

这个概念也称为参照完整性。

什么是复合密钥?

复合键 复合键包含两个或多个属性,可用于唯一标识特定记录。数据库中每一列单独来看可能并非唯一,但组合起来后就具有唯一性。复合键的作用就是唯一标识表中的每条记录。

计费示例:

订单号 产品编号 产品名称 数量
B005 日本102459 老鼠 5
B005 DKT321573 USB 10
B005 天哪446789 液晶显示器 20
B004 DKT321573 USB 15
B002 天哪446789 激光打印机 3

在这个例子中,订单号 (OrderNo) 和产品 ID (ProductID) 都不能单独作为主键,因为它们都不能唯一标识一条记录。但是,订单号和产品 ID 组成的复合键可以唯一标识每条记录。

什么是复合键?

复合键 列是指两个或多个列的组合,它们共同唯一标识表中的行。列的组合保证了唯一性,但单个列的唯一性无法保证。因此,需要将它们组合起来才能唯一标识表中的记录。

复合键和组合键的区别在于,复合键的任何部分都可以是外键,而组合键不一定是外键的一部分。

什么是代理密钥?

代理密钥 代理键是一种人工键,旨在唯一标识每条记录。这种键之所以唯一,是因为当没有自然主键时才会创建它。代理键本身并不赋予表中的数据任何意义,通常是在插入记录之前生成的一个整数。

名称 开始时间 结束时间
安妮 SMITH 09:00 18:00
千斤顶 弗朗西斯 08:00 17:00
安娜 麦克莱恩 11:00 20:00
显示 威拉姆 14:00 23:00

上面的例子展示了不同员工的轮班时间。这里需要一个代理键来唯一标识每个员工。代理键 SQL 使用场景:

  • 没有属性具有主键参数。
  • 主键过大或过复杂。

主键和外键之间的区别

以下是主键和外键的主要区别:

首要的关键 外键
帮助您在表中唯一标识一条记录。 它是表中的一个字段,是另一个表的主键。
主键永远不接受空值。 外键可以接受多个空值。
主键是聚集索引,表中的数据是按照聚集索引的顺序进行物理组织的。 外键无法自动创建索引,无论是聚集索引还是非聚集索引。您可以手动创建索引。
一个表中只能有一个主键。 一个表中可以有多个外键。

常见问题

每个候选键都能唯一标识一行。主键是设计者选定的候选键;其余的候选键则成为备用键。

两者都通过组合列来保证唯一性。在复合键中,每一列本身都是一个外键;而组合键则简单地连接两个或多个属性,这些属性不一定是外键。

当自然属性无法可靠地唯一确定,或者自然键过大或可能发生变化时,应使用代理键。生成的整数保持稳定,并能简化连接操作。

是的。通过分析列的唯一性、空值率和稳定性,人工智能可以筛选出候选键,并建议一个主键或代理键,最终的选择权留给设计者。

是的。与主键不同,外键可以为空,这表示该行尚未关联到任何父记录。非空的外键必须与已存在的主键匹配。

总结一下这篇文章: