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

数据库管理系统中的键是什么?
数据库管理系统中的键 键是属性或属性集,用于帮助您识别关系(表)中的行(元组)。它们使您能够找到两个表之间的关系。键通过一个或多个列的组合来唯一标识表中的一行,并且还有助于查找表中的唯一记录。
计费示例:
| 员工ID | 名字 | 姓 |
|---|---|---|
| 11 | 安德鲁 | 约翰逊 |
| 22 | Tom | 木材 |
| 33 | Alex | 海尔 |
在上面的例子中,员工 ID 是主键,因为它唯一标识一个员工记录。在这个表中,没有其他员工可以拥有相同的员工 ID。
为什么我们需要钥匙?
以下是数据库管理系统中使用键的一些原因:
- 键可以帮助您识别表中的任何数据行。在实际应用中,一个表可能包含数千条记录,并且这些记录可能重复。键确保您即使面临这些挑战也能唯一地标识表中的记录。
- 它们可以帮助您建立和识别表之间的关系。
- 它们有助于你在关系中维护身份认同和诚信。
数据库管理系统中的键类型
数据库管理系统中主要有八种不同类型的键,每种键都有其自身的功能:
- 超级钥匙
- 首要的关键
- 候选键
- 备用键
- 外键
- 复合键
- 复合键
- 代理键
下表概述了所有八项内容,然后对每项内容进行详细解释。
| 主要 | 一行 | 独特? |
|---|---|---|
| 超级钥匙 | 任何用于标识行的属性集,允许添加额外属性。 | 是 |
| 候选键 | 最小超键,无冗余属性 | 是 |
| 首要的关键 | 选定的候选键,非空 | 是 |
| 备用键 | 未被选为主键的候选密钥 | 是 |
| 外键 | 引用另一个表中的主键 | 没有 |
| 复合键 | 两个或多个属性,每个属性都可能不唯一 | 组合 |
| 复合键 | 合并两列或多列以获得唯一性 | 组合 |
| 代理键 | 生成的人工标识符 | 是 |
什么是超级钥匙?
超键是由一个或多个键组成的集合,用于标识表中的行。超键可能包含一些并非唯一标识所必需的附加属性。
计费示例:
| 雇员社会保障号 | 雇员编号 | 雇主名称 |
|---|---|---|
| 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 |

什么是外键?
外键 外键是连接两个表的列,用于建立两个表之间的关系。外键的目的是维护数据完整性,并允许在同一实体的两个不同实例之间进行导航。它充当两个表之间的交叉引用,因为它引用了另一个表的主键。
计费示例:
| 部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 使用场景:
- 没有属性具有主键参数。
- 主键过大或过复杂。
主键和外键之间的区别
以下是主键和外键的主要区别:
| 首要的关键 | 外键 |
|---|---|
| 帮助您在表中唯一标识一条记录。 | 它是表中的一个字段,是另一个表的主键。 |
| 主键永远不接受空值。 | 外键可以接受多个空值。 |
| 主键是聚集索引,表中的数据是按照聚集索引的顺序进行物理组织的。 | 外键无法自动创建索引,无论是聚集索引还是非聚集索引。您可以手动创建索引。 |
| 一个表中只能有一个主键。 | 一个表中可以有多个外键。 |
