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

⚡ 智能摘要

在数据库管理系统(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 使用场景:

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

主键和外键之间的区别

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

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

常见问题

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

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

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

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

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

总结一下这篇文章: