惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Security Latest
Security Latest
Spread Privacy
Spread Privacy
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
U
Unit 42
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Scott Helme
Scott Helme
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
爱范儿
爱范儿
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Latest news
Latest news
GbyAI
GbyAI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
AI
AI
NISL@THU
NISL@THU
I
Intezer
G
GRAHAM CLULEY
B
Blog
S
Secure Thoughts
IT之家
IT之家
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
Recorded Future
Recorded Future
Hacker News - Newest:
Hacker News - Newest: "LLM"

博客园 - 光辉飞翔

台东海域纳入常态化治理推动国土规划准备工作 信息技术 数字孪生 第2部分:数字实体 《过松源晨炊漆公店》杨万里 关系运算及元组演算 论文素材-无服务架构serverless “4+1”视图模型 N版本程序设计(N-Version Programming, NVP) -软件容错技术 曾国藩遗嘱 今将永别,特立四条以教汝兄弟。 徐霞客的《青云志》 oracle 常用命令:查看数据库和表命令 【转】Docker和Containerd 软考 架构 浏览器打开网页提示:证书链是由不受信任的颁发机构颁发的 何为著相?凡所有相皆为虚妄,若见诸相非相,则见如来。 Barra风格因子模型 明朝那些事作者石悦讲顿悟天道 什么是信创 MS银行 主成分分析与因子分析的区别 慈不带兵、义不经商,下半句更狠!(深度) python logger打印两次解决办法
超键、候选键、主键、外键的区分
光辉飞翔 · 2025-07-07 · via 博客园 - 光辉飞翔

一、超键

是指可以唯一标识关系模式中的元组(数据记录)的一个或多个属性的集合。简单来说,超键是在给定关系模式中,能够唯一标识一个元组的属性集合。超键中的属性可以是关系模式中的任意属性,它可以是单个属性或多个属性的组合。
举例来说,对于一个关系模式R(A,B,C,D),其中A、B、C、D为属性,(A,B)、(A,C)、(A,B,C)、(A,D)、(B,D)等都是R的超键,它们都能够唯一标识R中的元组。

超键可以作为候选键和主键的基础,它们之间没有直接的联系和区别。

二、候选键

是指能够唯一标识一个关系模式中元组的属性集合。简单来说,候选键是超键的子集,它们的属性组合能够唯一标识一个元组。
在一个关系模式中,可能存在多个候选键。候选键必须满足两个条件:唯一性和最小性。唯一性指候选键的属性组合能够唯一标识一个元组,即不存在重复的元组。最小性指候选键的属性组合中任何一个属性去掉后,就不能唯一标识一个元组。
举例来说,对于一个关系模式R(A,B,C,D),其中A、B、C、D为属性,(A,B)、(A,C)、(A,B,C)都是R的候选键,它们的属性组合能够唯一标识R中的元组,并且不能再去掉任何一个属性。
候选键可以作为主键的候选,主键的选择一般是从候选键中选取的。候选键也可以作为外键的参照。

 三、主键

是在关系模式中选择的一个候选键,用来唯一标识关系模式中的元组。简单来说,主键是一个关系模式中能够唯一标识一个元组的属性组合。

主键必须满足两个条件:唯一性和非空性。唯一性指主键的属性组合能够唯一标识一个元组,即不存在重复的元组。非空性指主键的属性组合中的任何一个属性都不能为空。

根据实际需求和关系模式的特点,可以选择一个或多个属性作为主键,但主键值必须在整个关系模式中是唯一的。
举例来说,对于一个关系模式R(A,B,C,D),其中A、B、C、D为属性,如果选择(A,B)为主键,则(A,B)的属性组合能够唯一标识R中的元组,并且不能为空。
主键可以作为外键的参照,用于建立不同表之间的关系。


四、外键

是用来建立关系模式之间的联系和引用其他关系模式的主键的一个或多个属性。简单来说,外键是一个关系模式中的属性,它引用了其他关系模式的主键。
外键用于建立关系数据库中的表与表之间的关联关系,用于维护数据的完整性和参照完整性。

举例来说,对于一个关系模式R(A,B,C)和关系模式S(D,E),其中A、B、C、D、E为属性,如果在R中的属性C引用了S中的主键D,则C为R中的外键,D为S中的主键。
外键可以确保数据的完整性。当插入、更新或删除一个关系模式中的元组时,如果有外键引用关系,数据库系统会自动检查外键的完整性,并根据约束规则执行相应的操作。

五、联系和区别

1.超键、候选键、主键和外键都是关系数据库中的重要概念,用于定义和约束数据实体之间的关系以及数据的完整性。
2.超键是在给定关系模式中能够唯一标识一个元组的属性集合。候选键是超键的子集,它们的属性组合能够唯一标识一个元组。主键是在候选键中选择的一个候选键,用来唯一标识一个元组。外键是一个关系模式中的属性,它引用了其他关系模式的主键。

3.超键可以作为候选键和主键的基础。候选键中选择的一个候选键可以作为主键。主键可以作为外键的参照。
4.超键、候选键、主键和外键之间的唯一区别在于它们的功能和作用:超键是属性集合,用于唯一标识一·个元组:候选键是超键的子集,用于唯一标识一个元组:主键是选择的一个候选键,用于唯一标识一个元组并且不能为空:外键是引用其他关系模式的主键,用于建立关系和维护数据的完整性。
5.建立关系模式之间的联系时,可以使用外键引用其他关系模式的主键。通过外键可以建立关系数据库中的表与表之间的关联关系,并维护数据的完整性和参照完整性。

6.在数据库设计中,主键和外键是两个最常用的约束关系,它们在维护数据的完整性和参照完整性面起着重要的作用。主键用于唯一标识一个元组,外键用于建立表与表之间的关联关系。

举例:

学生成绩信息表中有(学号、姓名、性别、年龄、系别、专业等)

超键

  学生表中含有学号或者身份证号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(学号,性别)等

  我们假设学生的姓名唯一,没有重名的现象。

      学号唯一,所以是一个超键
      姓名唯一,所以是一个超键
     (姓名,性别)唯一,所以是一个超键
     (姓名,年龄)唯一,所以是一个超键
     (姓名,性别,年龄)唯一,所以是一个超键

候选键

   学号唯一,而且没有多余属性,所以是一个候选键

   姓名唯一,而且没有多余属性,所以是一个候选键

  (姓名,性别)唯一,但是单独姓名一个属性就能确定这个人是谁,所以性别这个属性就是多余属性,所以(姓名,性别)不是候选键
  (姓名,年龄),(姓名,性别,年龄)同上,也不是候选键

主键:

  主键就是候选键里面的一个,是人为规定的,例如学生表中,我们通常会让“学号”做主键,学号能唯一标识这一个元组。

外键:外键就很简单了,假如我们还有一个教师表,每个教师都有自己的编号,假设老师编号在老师这个层次中是主键,在学生表中它就是外键。