本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第3章,第3.1节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.2 关系模型的基本术语
在关系数据模型(简称关系模型)中,现实世界中的实体、实体与实体之间的联系都用关系来表示,关系模型源于数学,它有自己严格的定义和一些固有的术语。
关系模型采用单一的数据结构——实体以及实体间的联系均用关系来表示,并且用直观的观点来看,关系就是二维表。表3-1和表3-2所示的都是关系。
下面分别介绍关系模型中的有关术语。
1.?关系(relation)
通俗地讲,关系就是二维表,二维表的名字就是关系的名字,图3-1中的关系名就是“学生”。
2.?属性(attribute)
二维表中的列就称为属性(或叫字段),每个属性有一个名字,称为属性名。二维表中对应某一列的值称为属性值;二维表中列的个数称为关系的元数。如果一个二维表有n个列,则称其为n元关系。表3-1所示的学生关系有学号、姓名、年龄、所在系、性别5个属性,是一个五元关系。
3.?值域(domain)
二维表中属性的取值范围称为值域。例如在表3-1中,“年龄”列的取值为大于0的整数,“性别”列的取值为“男”和“女”两个值,这些就是列的值域。
4.?元组(tuple)
二维表中的一行称为一个元组(记录值),例如,表3-1所示关系中的元组有:
(0512101,李勇,男,19,计算机系)
(0512102,刘晨,男,20,计算机系)
(0512103,王敏,女,20,计算机系)
(0521101,张立,男,22,信息系)
(0521102,吴宾,女,21,信息系)
5.?分量(component)
元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。例如,元组(0512101,李勇,男,19,计算机系)有5个分量,对应学号属性的分量是“0512101”、对应姓名属性的分量是“李勇”、对应年龄属性的分量是“19”、对应性别属性的分量是“男”,对应所在系属性的分量是“计算机系”。
6.?关系模式(relation schema)
二维表的结构称为关系模式,或者说,关系模式就是二维表的表框架或表头结构。设关系名为R,其属性分别为A1,A2,…,An,则关系模式可以表示为:
R(A1,A2,…,An)
对每个Ai(i = 1,…,n)还包括该属性到值域的映像,即属性的取值范围。例如,表3-1所示关系的关系模式为:
学生(学号,姓名,性别,年龄,所在系)
如果将关系模式理解为数据类型,则关系就是一个具体的值。
7.?目或度(degree)
关系表包含的属性个数即为目或度。
8.?关系数据库(relation database)
对应于一个关系模型的所有关系的集合称为关系数据库。
9.?候选键(candidate key)
如果一个属性或属性集的值能够唯一标识一个关系的元组而又不包含多余的属性,则称该属性或属性集为候选键。候选键又称为候选关键字或候选码。在一个关系上可以有多个候选键。
10.?主键(primary key)
主键也称为主关键字,是表中的属性或属性组,用于唯一地确定一个元组。主键可以由一个属性组成,也可以由多个属性共同组成。例如,表3-1所示的学生基本信息表中,学号就是此学生关系的主键,因为它可以唯一地确定一个学生。而表3-2所示的学生选课关系的主键就由学号和课程号共同组成。因为一个学生可以修多门课程,而且一门课程也可以有多个学生选择,因此,只有将学号和课程号组合起来才能共同确定一行记录。我们称由多个属性共同组成的主键为复合主键。当某个表是由多个属性共同作为主键时,我们就用括号将这些属性括起来,表示共同作为主键。比如,表3-2的主键是(学号,课程号)。
注意,我们不能根据关系在某时刻所存储的内容来决定其主键,这样做是不可靠的,只能是猜测。关系的主键与其实际的应用语义有关、与关系模式的设计者的意图有关。例如,对于表3-2所示的“选课”关系,用(学号,课程号)作为主键在一个学生对一门课程只能有一次考试的前提下是成立的,如果实际情况是一个学生对一门课程可以有多次考试,则用(学号,课程号)作主键就不够了,因为一个学生对一门课程有多少次考试,则其(学号,课程号)的值就会重复多少遍。如果是这种情况,就必须为这个关系添加一个“考试次数”列,并用(学号,课程号,考试次数)作为主键。
有时一个关系中可能存在多个可以作主键的属性,比如,对于“学生”关系,假设增加了“身份证号”列,则“身份证号”列也可以作为学生表的主键。如果关系中存在多个可以作为主键的属性,则称这些属性为候选键属性,相应的键为候选键。
当一个关系中有多个候选键时,可以从中选择一个作为主键。每个关系只能有一个主键。
11.?主属性(primary attribute)和非主属性(nonprimary attribute)
包含在任一候选键中的属性称为主属性。不包含在任一候选键中的属性称为非主属性。