购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 关系模型的基本术语与形式化定义

在关系模型中,将现实世界中的实体、实体与实体之间的联系都用关系来表示,关系模型源于数学,它有自己严格的定义和一些固有的术语。

3.2.1 基本术语

关系模型采用单一的数据结构——关系——来表示实体以及实体之间的联系,用直观的观点来看,关系就是二维表。

下面介绍关系模型中的有关术语。

(1)关系

通俗地讲, 关系 (relation)就是二维表,二维表的名字就是关系的名字,表3-1所示的关系名是“学生”。

(2)属性

二维表中的每个列称为一个 属性 (attribute)[或叫字段(field)],每个属性有一个名字,称为属性名。同一个表中的属性名不能相同。二维表中对应某一列的值称为属性值;二维表中列的个数称为关系的元数。如果一个二维表有 n 个列,则称其为 n 元关系。表3-1所示的学生关系有学号、姓名、性别、所在学院四个属性,是一个四元关系。

(3)值域

二维表中属性的取值范围称为 值域 (domain)。例如在表3-1所示关系中,“性别”列的取值为“男”和“女”两个值,这些都是列的值域。

(4)元组

二维表中的一行数据称为一个 元组 (tuple) 表3-1所示学生关系中的元组有:

(202101001,李勇,男,计算机)

(202101002,刘晨,男,计算机)

(202101003,王敏,女,计算机)

(202101004,张小红,女,计算机)

(202102001,张海,男,经济管理)

(202102002,刘琳,女,经济管理)

(5)分量

元组中的每一个属性值称为元组的一个 分量 (component), n 元关系的每个元组有 n 个分量。例如,对于元组(202101001,李勇,男,计算机),有4个分量,对应“学号”属性的分量是“202101001”,对应“姓名”属性的分量是“李勇”,对应“性别”属性的分量是“男”,对应“所在学院”属性的分量是“计算机”。

(6)关系模式

二维表的结构称为 关系模式 (relation schema),或者说,关系模式就是二维表的表头结构。设关系名为 R ,属性分别为 A 1 A 2 ,…, A n ,则关系模式可以表示为

R A 1 A 2 ,…, A n

例如,表3-1所示关系的关系模式为学生(学号,姓名,性别,所在学院)。

如果将关系模式理解为数据类型,则关系就是该数据类型的一个具体值。

(7)关系数据库

对应于关系模型的所有关系的集合称为关系数据库(relation database)。

(8)候选键

如果一个属性或属性集(或称为属性组)的值能够唯一标识一个关系的元组而又不包含多余的属性,则称该属性或属性集为 候选键 (candidate key)。比如,学生(学号,姓名,性别,所在学院)的候选键是学号。

候选键又称为候选关键字或候选码。在一个关系上可以有多个候选键。例如,假设为学生关系增加“身份证号”属性,则学生(学号,姓名,性别,所在学院,身份证号)的候选键就有两个:学号、身份证号。

(9)主键

当一个关系中有多个候选键时,可以从中选择一个作为 主键 (primary key)。每个关系只能有一个主键。

主键也称为主码或主关键字,是表中的属性或属性集,用于唯一地确定一个元组。主键可以由一个属性组成,也可以由多个属性共同组成。例如,表3-1所示的学生关系,学号是主键,因为学号的每个值都可以唯一地确定一个学生。而表3-2所示的借阅关系的主键就由学号、ISBN和借书时间三个属性共同组成。因为一个学生可以在不同时间多次借阅同一本书,而一本图书也可以在不同时间被多个学生借阅,因此,只有将学号、ISBN和借书时间三个属性组合起来才能共同确定一行记录。由多个属性共同组成的主键称为复合主键。当某个表由多个属性共同作为主键时,我们就用括号将这些属性括起来,表示共同作为主键。比如,表3-2所示的借阅关系的主键是(学号,ISBN,借书时间)。

注意,不能根据关系在某个时刻所存储的内容来决定其主键,关系的主键与实际的应用语义有关。例如,对表3-2所示的借阅关系,如果用(学号,ISBN)作为主键在一个学生对一本图书只能借一次的情况下是成立的,如果实际情况是一个学生对一本图书可以在不同时间多次借阅,则用(学号,ISBN)作为主键就不够了,因为一个学生对一本图书借了多少次,其(学号,ISBN)的值就会重复多少遍。因此借阅关系模式用(学号,ISBN,借书时间)作为主键更符合实际业务情况。

(10)主属性和非主属性

包含在任一候选键中的属性称为 主属性 (primary attribute),不包含在任一候选键中的属性称为 非主属性 (nonprimary attribute)。比如借阅(学号,ISBN,借书时间,还书时间),学号、ISBN、借书时间是主属性,还书时间是非主属性。

关系中的很多术语可以与现实生活中的表格术语进行对应,术语对比见表3-3。

表3-3 术语对比

3.2.2 形式化定义

在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型表示,即关系。关系模型是建立在集合论的基础上的,本小节我们将从集合论的角度给出关系数据结构的形式化定义。

1.关系的形式化定义

为了给出关系的形式化定义,首先定义笛卡儿积。

D 1 D 2 ,…, D n 为任意集合,则 D 1 D 2 ,…, D n 的笛卡儿积为

D 1 × D 2 ×…× D n ={( d 1 d 2 ,…, d n )| d i D i i =1,2,…, n }

其中每一个元素( d 1 d 2 ,…, d n )即为一个 n 元组( n -tuple),简称元组。元组中每一个 d i 即为一个分量。

比如假设:

D 1 ={计算机,经济管理}

D 2 ={李勇,王敏,张海}

D 3 ={男,女}

D 1 D 2 D 3 的笛卡儿积为

D 1 × D 2 × D 3 ={(计算机,李勇,男),(计算机,李勇,女),

(计算机,王敏,男),(计算机,王敏,女),

(计算机,张海,男),(计算机,张海,女),

(经济管理,李勇,男),(经济管理,李勇,女),

(经济管理,王敏,男),(经济管理,王敏,女),

(经济管理,张海,男),(经济管理,张海,女)}

其中(计算机,李勇,男)、(计算机,王敏,女)等都是元组。“计算机”“李勇”“男”等都是分量。

笛卡儿积实际上就是一个二维表,上述笛卡儿积的运算如图3-2所示。

图3-2 笛卡儿积的运算示意图

图3-2中,笛卡儿积的任意一行数据就是一个元组,它的第一个分量来自 D 1 ,第二个分量来自 D 2 ,第三个分量来自 D 3 。笛卡儿积就是所有这样的元组的集合。

根据笛卡儿积的定义可以给出关系的形式化定义: D 1 × D 2 ×…× D n 的任意一个子集称为 D 1 D 2 ,…, D n 上的一个 n 元关系。

形式化的关系定义同样可以把关系看成二维表,给表中的每个列取一个名字,称为属性。 n 元关系有 n 个属性,一个关系中的属性的名字必须是唯一的。属性 D i i =1,2,…, n )的取值范围称为该属性的 值域

比如,上述例子中,取子集:

R ={(计算机,李勇,男),(计算机,王敏,女),(经济管理,张海,男)}

这就构成了一个关系,其二维表的形式见表3-4,把第一个属性命名为“所在学院”,第二个属性命名为“姓名”,第三个属性命名为“性别”。

表3-4 一个关系

从集合论的观点也可以将关系定义为:关系是一个有 K 个属性的元组的集合。

2.对关系的限定

关系可以看成二维表,但并不是所有的二维表都是关系。关系数据库对关系有一些限定,归纳起来有以下几个方面。

1)关系中的每个分量必须是不可再分的最小属性。即每个属性都不能再被分解为更小的属性,这是关系数据库对关系的最基本的限定。例如,表3-5就不满足这个限定,因为在这个表中,“高级职称人数”不是最小的属性,它是由两个属性组成的一个复合属性。对于这种情况只需要将“高级职称人数”属性分解为“教授人数”和“副教授人数”两个属性即可(见表3-6),这时这个表就是一个关系。

表3-5 包含复合属性的表

表3-6 不包含复合属性的表

2)表中列的数据类型是固定的,即列中的每个分量都是同类型的数据,来自相同的值域。

3)不同列的数据可以取自相同的值域,每个列称为一个属性,每个属性有不同的属性名。

4)关系表中列的顺序不重要,即列的次序可以任意交换,不影响其表达的语义。

5)行的顺序也不重要,交换行数据的顺序不影响关系的内容。其实在关系数据库中并没有第1行、第2行等这样的概念,而且数据的存储顺序也与数据的输入顺序无关,数据的输入顺序不影响对数据库数据的操作过程,也不影响其操作效率。

6)同一个关系中的元组不能重复,即在一个关系中任意两个元组的值不能完全相同。 KtHp5lAmB0XmP3qN7u89oldWH2/SBj4HX8nC51gbvu5xJvS6onRz4GNVl4JL17o4

点击中间区域
呼出菜单
上一章
目录
下一章
×