今天学习的数据库中的键,但是不明白,经过上网看书查寻后发现这个“键”其实是一种关系的属性。
首先我们要先了解什么键,定义:在一个关系中,存在这样的属性,使得在该关系的任何一个关系状态中的两个元组,再改属性上值的组合不相同,即这些属性的值都能用来唯一标识该关系的元组,则称这些属性为该关系的码或键
首先说明“关系”是什么,关系我们可以以理解为一张表,
对于键分别有:超键、候选键、主键、全键、外键这几类。
超键(码):
在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键。
根据图中我们可以看到一些信息,而对应的这些信息就是一个超键或超码,因为在这个关系中所有属性的集合就是这个关系的超码或超键,如(学号、姓名)、(学号、姓名、性别)(学号、姓名、性别、出生日期、班号、身份证号)都是这个表的超码或超键
候选键(码):
在关系的一个码或键中,不能从中移去任何一个属性,否则他就不是这个关系的码或键。这种码或键就是这个关系的候选码或键。
在表中我们可以发现只要我们确定学号或者身份证号都可以确定一个学生的全部基本信息,那么这个这两个属性值就是候选码或键。
主键(码):
在一个关系的若干个候选码或键中指定一个用来唯一标识关系的元组(表中的一行即为一个元组),则这个候选码或键就是这个关系中的主键或码。
我们可以指定学号为主键,
通俗理解:主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
有些情况下主键可能是一个集合有两个或多个属性组成,如成绩表(学号,课程号,成绩) 我们想要确定成绩就要通过学号和课程号这两个属性来确定。
全键(码):
一个关系模式的所有属性集合是这个关系的主码或键,则称这样的主码或键为全码或键
关系模型的所有属性组是这个关系模式的候选键 |
外键或(码):
A表中的一个字段,是B表的主键,那他就可以是A表的外键
根据下图表我们可以确定“班号”为主键或码,但是这个主键在上图中也出现了,但是它并不是上图的主键,那我们就可称这个“班号”为上图的外键。
总体这些键或码的关系我们可以理解为
都惟一标识一个元组;
超键中可能有无关的属性,而主键和候选键中属性都是必要的属性;
主键是候选键中的一个,只不过它被数据库设计者选中而称为主键而已,事实主键也是候选键
候选键的范围更广阔一些