1
数据库原理与应用技术
1.3.1.1 2.1.1 关系的基本概念
2.1.1 关系的基本概念

1. 域

在关系数据模型中,每个属性都有一个取值范围。域是用于描述这个属性取值范围的,或者说,域是一组具有相同数据类型的值的集合。例如,{若干整数集合},{男,女},{0,1},{ A,B, C,D,E}等,都可以看成是域。域有如下特点。

(1) 域必须命名。命名后的域表示为:

D1 ={ 张三, 李四, 王五, 赵六},表示某些姓名的集合,域名为D1。

D2 ={ 男, 女},表示性别的集合,域名为D2。

D3 ={ 18, 19, 20 },表示年龄的集合,域名为D3。

(2) 域中数据的个数称为域的基数。

例如,上述命名后的域,D1的基数为4,D2的基数为2,D3的基数为3。

2. 笛卡儿积

设D1,D2,…,Dn为给定的域,则D1,D2,…,Dn的笛卡儿积(Cartesian Product)为:

D1×D2×…×Dn={(d1, d2,…, dn)|di∈Di , i=1,2,…,n }

其中,每一个元素(d1, d2,…, dn)称为一个n元组,简称元组,元组中的每一个di称为元组的一个分量,di必须是Di中的一个值。

注意这里元组与集合的区别。元组不是di的集合,因为元组中的分量是按序排列的;集合是一组相关数据的组合,集合中的数据是无序的。二者的表示方法不同,例如,

元组:(a,b,c)≠(b,a,c)≠(c,b,a),(a,a,a)≠(a,a)≠(a)

集合:{a,b,c}={b,a,c}={c,b,a}

【例2-1】设D1={ 0, 1 }, D2={ a, b, c },求笛卡儿积D1×D2。

解:D1×D2={(0, a),(0, b),(0, c),(1, a),(1, b),(1, c)}。

可以把笛卡儿积看成是一张二维表。上述D1×D2的结果还可以用表2-1表示。

表2-1 D1×D2的结果

表2-1中的第一个分量来自D1,第二个分量来自D2。笛卡儿积就是所有这样的元组组成的集合。

3. 关系

笛卡儿积 D1×D2×…×Dn 的任意一个子集称为集合D1,D2,…,Dn上的一个n元关系。关系中属性个数称为元数,元组个数称为基数。在实际应用中,关系往往是从笛卡儿积中选取的有意义的子集。在计算机里,一个关系可以存储为一个文件。

【例2-2】设D1={张强,李林,王孝文}是一个学生集合,D2={高等数学,英语,C语言,电子技术}是一个课程集合,求笛卡儿积D1×D2。

解:R=D1×D2如表2-2所示。

关系R1是从R中提取的一个有意义的子集。R1⊆R,R1如表2-3所示。

表2-2 关系R

表2-3 关系R1

笛卡儿积D1×D2的结果集R本身是无意义的,而关系R1是从D1×D2中选取出来的有意义的子集,它表示学生与课程之间存在的一种选修关系。所以说关系是从笛卡儿积中选出的有意义的子集。

4. 属性

属性对应关系中的列,也称为字段。关系中的属性名称必须是互不相同的。

5. 关键字

如果一个属性(集)的值能唯一标识一个关系的元组,则该属性(集)称为候选关键字(关键字),简称为键。

作为关键字,有以下特点。

(1) 一个关系中可以有多个候选关键字。

(2) 当对关系进行插入、删除或检索时,可以选取其中一个候选关键字作为主关键字(简称关键字或主键)。每个关系都有一个并且只有一个主关键字。

(3) 凡可作为候选键的属性称为主属性;否则,称为非主属性。

(4) 当关系中的某个属性集并非主键,但却是另一个关系的主键时,则该属性集称为外部键,简称为外键。

6. 元组

元组对应关系中的行,也称为记录。一个元组对应一个实体,一个关系可由一个或多个元组构成,一个关系中的元组必须互不相同。

7. 关系模式

一个关系的属性名表称为关系模式,一个关系模式描述了一个实体,是对关系的描述,它包括关系名、组成关系的属性名、属性间的数据依赖关系等。关系模式实际上就是关系框架,即二维表的表结构。例如,设关系名为REL,其属性为A1, A2 ,…, An,则关系模式可表示为:

REL(A1, A2,…, An)

8. 关系模型

关系模型是所有的关系模式、属性名和关键字的汇集,是模式描述的对象。一个关系模型描述了若干个实体及其相互联系,反映了客观世界的逻辑抽象。

9. 关系数据库

关系数据库是对应于一个关系模型的所有关系的集合。关系数据库可以用型和值去描述。关系数据库的型是指数据库的结构描述,它包括关系数据库名、若干属性的定义及这些属性上的若干关系模式。关系数据库的值是指符合这些关系模式的多个关系在某一时刻各自所取的值。

10. 关系的性质

关系就是一个二维表,可以用二维表来理解关系的性质。

(1) 关系的每一列属性必须具有不同的名字。

(2) 关系的每一列属性是同一类型的域值,不同属性的域值可以相同。

(3) 关系的任意两行不能完全相同,即不可能出现两个完全相同的元组。

(4) 关系的每一分量都是不可再分的最小数据单位,即所有的属性值都是原子的。

(5) 关系中行的顺序、列的顺序可以任意互换,不会改变关系的意义。

(6) 每个关系都有一个主关键字唯一标识它的各个元组。