超键,候选键,主键,外键

article/2025/8/29 14:36:31

前言:

对于刚学习数据库的童鞋来说,定会遇到这么一个问题,那就是数据库所说的各种键之间的关系以及区别,作为曾经在这个难点上有过痛苦经历的人来说,印象是比较深刻的,所以在这里我将我自己心中所了解到的四种键做一个小小的介绍,菜鸟级别的我希望大牛们多多指教指导,不胜感谢!

关系:

超键、候选键、主键和外键的关系:   

 

 

 

请留意这句关于超键的定义,首先得是在关系模式中,同时还要是唯一标识元组,而且还是属性集,只有满足这三点才能成为超键。比如下面这个关系模式:

学生(学号,姓名,性别,专业编号,年龄)

分析:

我们知道通过学号可以找到一个学生的姓名、性别、专业号、年龄,但是通过姓名不一定能找到这些,比如有重名的,通过性别也不能找到,通过专业号也不行,一个专业可以有很多学生在学习,通过年龄也不行,所以在上面这个关系模式中只有通过学号才能找到特定学生。

于是(学号,姓名)的组合属性集就称为超键。因为学号和姓名的组合能找到特定的学生。所以,在这个关系模式中

超键是:

(学号)、(学号,姓名、)(学号,性别)、(学号,专业编号)、(学号,年龄)、(学号,姓名,性别)、(学号,姓名,专业编号)、(学号,姓名,年龄)、(学号,姓名,性别,专业编号)、(学号,姓名,性别,年龄)、(学号,姓名,性别,专业编号,年龄)。

作用:

①保证实体的完整性

②加快数据库的操作速度

③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复

④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录

 

首先得是在关系模式中不必多说了,跟着也是唯一标识元组,值得留意的是它是不含多余属性的属性集(跟超键的区别)。比如按照上面给的例子(专业内学生姓名均不同):

学生(学号,姓名,性别,专业编号,年龄)

分析:

这个例子跟上一个对比的区别就是专业内学生姓名均不同,所以不仅仅通过学号能找到特定的学生,而且还能通过姓名找到特定的学生,性别、专业号、年龄这三个属性却不能找到特定的学生。

于是,学号和姓名就成了这个关系模式中的候选键,所以在这个关系模式中

候选键是:

(学号)、(姓名)

作用:

①保证实体的完整性

②加快数据库的操作速度

③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复

④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录

在候选键中随意选取一个就可以成为主键,还是上面给的例子(专业内学生姓名均不同):

学生(学号,姓名,性别,专业编号,年龄)

分析:

主键是建立在候选键的基础上的,所以在上面候选键(学号)、(姓名)中随意选取其中一个即为主键

主键是:(学号)或者(姓名)也可以是多个属性构成的联合主键

作用:

①保证实体的完整性

②加快数据库的操作速度

③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复

④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录

外键是建立在两个关系模式中的,参考上面的例子,然后再加一个关系模式,如下:

学生(学号,姓名,性别,专业编号,年龄)

专业(专业编号,专业课程,专业老师)

分析:

关系模式学生中的(专业编号)不是关系模式学生中的候选键,而是关系模式专业中的候选键,所以这个时候称关系模式学生中的(专业编号)为外键

外键有:

(专业编号)

作用:

①使得一张表中的数据不要太过冗余

②保持数据的一致性和完整性

③加快数据库的操作速度

 

举个栗子1:区别候选键和主键

公司原来的经理退休,现在有三个候选人:A,B以及C(候选键),最终任命选择了C当经理(主键)。在C成为经理之前,他(她)一定是经理候选人,可是一旦他(她)被选为经理,那么我们就叫他经理,而习惯上就不再称其为经理候选人了。

举个栗子2:区别超键、候选键、主键、外键

超键(爷爷)候选键(爸爸)主键(自己)外键(舅舅家的我)

我身上有爷爷的遗传基因,但是继承爸爸的遗传基因更多,外公那边的遗传基因只有外公有遗传,而舅舅和表弟的遗传基因和我一点关系都没有

 


http://chatgpt.dhexx.cn/article/kl8EjWhc.shtml

相关文章

候选键的计算(数据库系统概论)

本篇博客是在学习数据库系统概论第六章(关系数据理论)后觉得直接去分析候选码有难度,就在网站上搜寻了一些资料,得出了一些结论,在这里分享一下,希望对大家有帮助!!! 算…

闭包及候选键求解方法

一、闭包 设X是函数依赖集,被X逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集X的闭包,记为。 设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用表示,它是一个从F集使用FD推理…

规范化理论:候选键的求解理论和算法

什么是关键码? 设关系模式R的属性集是U,X是U的一个子集,F是在R上成立的一个函数依赖集。如果X→U在R上成立(即X→U在中),那么称X是R的一个超键。如果X→U在R上成立,但对X的任一真子集都有→U不…

数据库中的超键 候选键 主键 外键

这里写目录标题 数据库中的超键 候选键 主键示例说明 数据库中的超键 候选键 主键 见下图: 示例说明 学号身份证姓名班号班位置SN001SF1张三CN_a3层SN002SF2李四CN_a3层SN003SF3王五CN_a3层SN004SF4李六CN_b4层SN005SF5谭七CN_b4层SN006SF6张三CN_a3层 由表可得…

MySQL之候选键

文章目录 MySQL之候选键1.主键和候选键的区别 MySQL之候选键 1.主键和候选键的区别 表格的每一行都由主键唯一标识,一个表只有一个主键; 主键也是候选键,按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用

求候选键

根据题干,画图: 由于从D出发可找到A、E,然后CA结合又能找到B,因此通过CD可遍历所有元素,因此候选键为CD。 求候选键,就是找可遍历所有元素的元素组合。

数据库主键、外键、超键、最左前缀原则

首先看看各种键的定义: 超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键 候选键(candidate key):不含有多余属性的超键称为候选键 主键(primary key):用户选作元组标识的一个候选键程序主键 外键(foreign key)如果关系模式R1中的某属性集不是…

C语言实现数组长度计算方法

写C时,经常要用到计算数组长度,我一般用下面这种方法: #define LEN(x) sizeof(x) / sizeof(x[0]) 即利用库函数sizeof来计算数组长度,这种方法,对一维数组和多维数组都有效,如以下代码示例: …

c语言输入变量字符串数组的长度,c语言数组长度问题?

onemoo 内容太长,我另写一个回答:对于不确定将要存储多少个字符的情形,你只能先定义一个足够长的数组,比如char s[256]; 在接受输入时不要用那种可以一次性存入一串字符的函数(如scanf("%s", s)),因为你不知…

c语言怎么获取数组的长度,C语言怎么获取数组的长度

c语言中,定义数组后可以用sizeof命令获得数组的长度【可容纳元素个数】,通过传递数组名参数到子函数中,以获得数组长度是不可行的。 c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数) 如:{ int data…

第六章 C语言数组_C语言变长数组:使用变量指明数组的长度

在《C语言的三套标准:C89、C99和C11》一节中我们讲到,目前经常使用的C语言有三个版本,分别是 C89、C99 和 C11。C89(也称 ANSI C)是较早的版本,也是最经典的版本,国内大学几乎都是以该版本为基础…

C语言 数组长度

借助sizeof()函数 # include <stdio.h> int main(void) { int a[10] {0};printf("sizeof(a) %d\n", sizeof(a));return 0; }sizeof(a) 40 ,数组 a 是 int 型的&#xff0c;每个元素占 4 字节&#xff0c;所以长度为 10 的数组在内存中所占的字节数就是 4…

C语言0长度数组(可变数组/柔性数组)详解

CSDNGitHubC语言0长度数组(可变数组/柔性数组)详解AderXCoding/language/c/zero_length_array 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作 1 零长度数组概念 众所周知, GNU/GCC 在标准的 C/C 基础上做了有实用性…

C语言的数组长度能用变量指定吗?

疑问&#xff1a;C语言的数组长度能用变量指定吗&#xff1f; 回答&#xff1a;在支持C99的编译器下可以。 一、背景简介 C89/C90&#xff1a; C89即ANSI C&#xff0c;ANSI&#xff1a;美国国家标准学会&#xff08;American Natinal Standards Institute&#xff09;C90即I…

空间平面及其方程

目录 1. 方程类型2. 常见问题 F&#xff08;x&#xff0c;y&#xff0c;z&#xff09; 0 几何意义 空间中的平面 1. 方程类型 点法式 A&#xff08;x - x0&#xff09; B&#xff08;y - y0&#xff09; C&#xff08;z - z0&#xff09; 0 &#xff08;A&#xff0c;B&am…

三维空间平面拟合MATLAB

1.根据一组点的坐标拟合空间平面&#xff0c;有两种方法&#xff1a; 第一种&#xff1a;如果在测量得到的数据中&#xff0c;x&#xff0c;y值都是确认没有误差的&#xff0c;而误差只是出现在z值上&#xff0c;则可以使用线性回归的方法&#xff0c;此方法最小二乘的目标是在…

空间曲面构造及其方程

&#xff11;.旋转单叶双曲面 旋转单叶双曲面是直纹面&#xff0c;它的构造有多种方式&#xff0c;先看其中一种: 设直线的参数方程为&#xff1a; 则通过geogebra命令 bCurve(1,t,2t,t,-5,5) 绘制出的直线如图所示&#xff0c;它将作为旋转单叶双曲面的&#xff02;直纹&quo…

三维空间:点到线的距离,点到面上的投影,直线在平面上的投影直线方程(平面束)

你好哦&#xff0c;这里是云切月斩&#xff08;Echo_Fish&#xff09;&#xff0c;本文章如果能加深你对于高等数学知识点的理解&#xff0c;那么我将不胜荣幸&#xff01;如果本文章存在错误请不吝赐教&#xff01; 一、点到线的距离&#xff08;已知一个点和直线的一般式&…

0803平面及其方程-向量代数与空间解析几何

文章目录 1 曲面方程与空间曲线方程的概念1.1 曲面方程1.2 空间曲线的方程 2 平面的点法式方程3 平面的一般方程4 两平面的夹角4.1 两平面夹角的定义4.2 夹角的余弦公式4.3 点到平面的距离 结语 1 曲面方程与空间曲线方程的概念 1.1 曲面方程 如果曲面与三元方程 ​ F ( x …

空间解析几何中那些图形和方程(大彻大悟版)

文章目录 前言一、平面及其方程平面的点法式方程平面的一般方程平面的截距式方程两平面的夹角点到平面的距离公式 二、空间直线及其方程空间直线的一般方程空间直线的对称式方程&#xff08;点向式方程&#xff09;空间直线的参数方程两直线的夹角直线与平面的夹角平面束方程 三…