问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MySQL数据库:超键、候选键、主键与外键详解

创作时间:
作者:
@小白创作中心

MySQL数据库:超键、候选键、主键与外键详解

引用
CSDN
1.
https://blog.csdn.net/qq_41840843/article/details/140793636

MySQL数据库中,键的概念是数据库设计和数据完整性约束的基础。本文将详细介绍四种常见的键:超键、候选键、主键和外键,并通过具体示例帮助读者理解它们的定义和作用。

超键(Superkey)

超键是能唯一确定表中每行数据的属性集。它可以是单个属性或多个属性的组合。

示例:

假设有一个学生表(Student),包含学号(ID)、姓名(Name)、年龄(Age)和班级(Class)四个字段。

其中,学号(ID)单独、姓名+班级(Name+Class)组合,以及学号+姓名+年龄+班级的全集都可以作为超键,因为它们都能唯一标识表中的一行数据。

ID
Name
Age
Class
001
张三
20
1班
002
李四
21
2班
003
王五
20
1班
004
赵六
22
3班

候选键(Candidate Key)

候选键是最小的超键,即没有任何多余属性的超键。一个表可以有多个候选键。

示例:

在上表中,如果假设学号(ID)是唯一的,并且没有其他属性与学号组合后还能保持唯一性,那么学号(ID)就是一个候选键。同时,如果姓名+班级的组合在表中也是唯一的(尽管这种情况较少见),那么它也是一个候选键。

主键(Primary Key)

主键是表中的一个特殊候选键,用于唯一标识每行数据。每个表只能有一个主键,且主键的值不能为空。

示例:

在上表中,我们通常会选择学号(ID)作为主键,因为它能唯一标识每一个学生,并且符合主键的所有要求。

外键(Foreign Key)

外键是表中的一个字段,其值必须是另一个表的主键的值。它用于在两个表之间建立关联,确保数据的参照完整性。

示例:

假设我们还有一个班级表(Class),其中包含班级ID(ClassID)和班级名称(ClassName)两个字段,且班级ID是主键。

在学生表中,我们可以添加一个班级ID(ClassID)字段作为外键,这个字段的值必须对应于班级表中的某个班级ID,从而在学生表和班级表之间建立关联。这样,当我们查询某个学生的信息时,可以通过学生表中的班级ID快速找到该学生所属的班级信息。

班级表 (Class)

ClassID
ClassName
C001
一年级1班
C002
一年级2班
C003
二年级1班

学生表 (Student)

ID
Name
Age
ClassID
001
张三
20
C001
002
李四
21
C002
003
王五
20
C001
004
赵六
22
C003

总结:

超键包含候选键,候选键中最常用的是主键,而外键用于表间关联。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号