感悟网 导航

数据库中数据库中 码、候选码、外部码之间的关系是什么 sql中的主码、候选码、外部码的联系与区别

作者&投稿:那封 (若有异议请与网页底部的电邮联系)
主码、候选码、外部码之间的联系与区别~

主码包含候选码和码,候选码包含码。
1、含义不同:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;若一个关系有多个候选码,其中任何一个都可以做主码,主码的诸属性就称为主属性;一个表中如果有一个字段,存储另外一个表的主键,这个字段就是外键,又称外码。
2、实际操作不同:码是可以确定一个元组的所有信息的属性名或属性名组。

例如在{a,b,c,d}中,假设知道a的值就能确定a,b,c,d的值,假设知道c,d的值就可以确定a,b,c,d的值,那么{a}就是码,{c,d}就是码。

并且{a,b},{a,c},{a,b,c},{a,b,c,d}等也都是码,因为它们也可以确定一个元组的所有值,即使很多余。

候选码的真子集中不存在码,候选码可以有多个。

就上面的例子而言,{a}是候选码,{c,d}是候选码,因为它们的真子集中不存在码。

而诸如{a,b}并不是候选码,因为它的真子集中含有{a},且{a}是码。

主码就是主键的意思,主码是任意一个候选码,还是上面的例子,主码是候选码{a},{c,d}中的其中一个,既可以是{a},也可以是{c,d}。

3、定义概念不同:码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。
超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。
候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。
所以候选码是最小超码,它们的任意真子集都不能成为超码。例如,如果K是超码,那么所有包含K的集合都不能是候选码;如果K,J都不是超码,那么K和J组成的集合(K,J)有可能是候选码。
按照上面码的定义看看外码的定义如下:
设F是基本关系R的一个或者一组属性,但不是关系R的码。K(s)是基本关系S的主码。如果F与K(s)相对对应,则称F是R的外码。
综上:F是非主属性组,必定可以取空值,但是课本例子包括课后题都说F可以是主属性,当为主属性时,为了保持实体完整性,不可以取空值。
扩展资料:

码=超键:能够唯一标识一条记录的属性或属性集。

标识性:一个数据表的所有记录都具有不同的超键;非空性:不能为空;有些时候也把码称作“键”。
候选键=候选码:能够唯一标识一条记录的最小属性集;标识性:一个数据表的所有记录都具有不同的候选键;
最小性:任一候选键的任何真子集都不能唯一标识一个记录(比如在成绩表中(学号,课程号)是一个候选键,单独的学号,课程号都不能决定一条记录)。
非空性:不能为空;候选键是没有多余属性的超键;举例:学生ID是候选码,那么含有候选码的都是码,少部分地方也有叫超级码的,但是见得不多。
主键=主码:某个能够唯一标识一条记录的最小属性集(是从候选码里人为挑选的一条)。

唯一性:一个数据表只能有一个主键;标识性:一个数据表的所有记录都具有不同的主键取值;
非空性:不能为空;人为的选取某个候选码为主码。
参考资料:百度百科-数据库

(1) 候选码(Candidate key)
在关系模式R(U)中,K为R的一个属性或者一组属性,若满足K→U,则K为关系模式R的候选码(Candidate key)。
候选码是一组非空的属性名集合,每个属性必须为该关系模式的属性。
在关系模式R(U)中,包含在任何一个候选码中的属性称为主属性(prime Attribute)。不包含在任何候选码中的属性称为非主属性(Nonprime Attribute)或非码属性。
最简的情况下,单个属性是候选码。最极端的情况,所有的属性的组合构成码。如果整个属性组U是码,则称为全码。例如,在关系模式供应商(供应商名称,供应商地址,供应商电话)中,供应商名称是唯一的候选码。而在关系模式供应(供应商名称,供货名称,供应单价)中,属性的组合(供应商名称,供货名称)是唯一的候选码。
关系模式的每个候选码具有下列两个特性:
· 唯一性:在关系模式R(U)中, 设K为关系模式R的候选码,则对于关系模式R的任何一个关系实例r中,任何时候都不存在候选码属性值相同的两个元组。即候选码的值唯一的决定元组的所有属性值,即r中的任意2个元组s和t,都有s[k]不等于t[k]
· 最小特性:在不破坏唯一性的情况下,没有任何属性可以从候选码属性集中删除。即候选码是由其值唯一决定元组值的最小属性集组成。
例如:在供应关系中,必须由供应商名称和供货名称两者组合才能唯一的决定供应关系中的一个元组值,缺一不可。
下面给出一个具有多个候选码的例子。有关系模式CSZ(CITY,ST,ZIP),其中有三个属性:城市为CITY,街道ST,邮政编码ZIP。其属性集合和属性间的函数函数依赖关系为:
U = { CITY,ST,ZIP }
F = {(CITY,ST)→ZIP,ZIP→CITY}
即城市和街道共同决定邮政编码,邮政编码决定城市。在这个关系模式中,有两个候选码,即(CITY,ST)和(ST,ZIP)。CITY,ST和ZIP都是主属性。
再给出一个全码的例子,如表5-2。我们有一个大部件的设计A,其中包含四个设计相同的左右并排放置的子部件,四个子部件的编号由左到右分别为I1,I2,I3和I4。设计一个关系模式描述四个子部件之间的左右邻接关系,关系模式左右邻接(左邻接部件,右邻接部件)。这个关系模式的唯一的候选码就是(左邻接部件,右邻接部件),即全码。

表 5-2

左邻接部件 左邻接部件
I1 I2
I2 I3
I3 I4


在左右邻接关系中,必须由左邻接部件和右邻接部件共同决定其中的一个元组。
(2)主码(Primary Key)
在一个关系模式中,可以有多个候选码,但只能有一个主码。
若关系模式R(U)中有多个候选码,则选定其中的一个候选码作为主码,或称主关键字。
例如,在关系模式供应商(供应商名称,供应商地址,供应商电话)中,供应商名称是唯一的候选码,也是它的主码。而在关系模式供应(供应商名称,供货名称,供应单价)中,属性的组合(供应商名称,供货名称)是唯一的候选码,也是它的主码。在这个关系模式CSZ中,有两个候选码,即(CITY,ST)和(ST,ZIP),可以任选其中一个作为主码。在左右邻接关系中,关系模式的唯一的候选码(左邻接部件,右邻接部件)也是它的主码。

(3)外码
关系模式R中属性或属性组X并非R的候选码,但X是另一个关系模式的候选码,则称X是R的外部码(Foreign Key),也称外码。
例如:在供应关系模式中,供应商名称不是供应关系模式的码,但供应商名称是关系模式供应商的码,则称供应商名称是关系模式供应的外部码或外码。
主码和外部码提供了一种表示不同关系之间相互关联的手段。如关系模式供应商和供应之间的关系就是通过供应商名称来体现的。

主码是从候选码中挑出来的一个作为主码,主码和外部码提供了一种表示不同关系之间相互关联的手段。

数据库中码又称数据库主码,是数据库中唯一能标识一个记录值的内部记录标志符。

若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。

关系模式R中属性或属性组X并非R的候选码,但X是另一个关系模式的候选码,且X与R的主码对应,则称X是R的外部码,也称外码。

扩展资料:

在两个表的关系中,主码用来在一个表中引用来自于另一个表中的特定记录。主码表定义的一部分。一个表的主键可以由多个主码共同组成,并且主码的列不能包含空值。主码是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。

一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。主键的值不可重复,也不可为空(NULL)。



候选码,有时简称为码,主要是用来表示一个实体的属性或属性组;如果有多个候选码的话,则从中选择一个作为主码。而外部码指的是如果一个关系R的属性或者属性组K,并不是这个关系的码,而是另一个关系S的码,则称K是关系R的外部码,简称外码。

码是可以唯一标识实体的属性或属性集,候选码,外码,主码都是码

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网