第三章 关系数据库1.关系数据语言
- 关系模型
在第一章中我们已经初步认识了关系模型,现在让我们了解一些更多的关于关系模型的知识。
- 概念。关系模型是建立在集合代数的基础上的。关系可以简单地认为是一个二维表。表的每列对应集合代数中的域的概念,称为属性。表的每行对应元组,即域的笛卡尔积的任意一个元素。元组中的每一个值称为分量。关系中属性的数目称为关系的目。关系是笛卡尔积的子集。下面我们给出两个域的 D1 和 D2:
D1=姓名={张三,李四} D2=年龄={20,24}
它 们 的 笛 卡 尔 积 是 : D1×D2={(张三,20),(张三,24),(李四,20),
(李四,24) }
笛卡尔积可表示成二维表,它的子集构成了两目的关系,关系的属性分别为姓名的年龄:
在数据库中我们要求关系的每一个分量必须是不可分的数据项,也即必须是规范化的关系,简称为范式。数据库中的关系具有以下的特性:
·关系中的每一列的分量是同一类型的数据,来自于同一个域;
·不同的列可以出自同一个域,每一列称为属性,要给予不同的属性名加以区分。例如:在上面的关系中,添加语文成绩和数学成绩,这两个属性来自于同一个成绩域;
·列的顺序可以交换;
·行的顺序可以交换;
·关系中不能存在完全相同的两行;
·每一分量不可分。例如,不能存在成绩这样的列,在这个列的下面又分成几个分量。在关系模型中,无论是实体还是实体间的联系均由关系—— 这一单一的结构类型来表示。下面是有关关系模型的几个概念:
主码:关系中唯一标识一个元组的一个或一组属性,称为主码。
关系模式:关系的描述称为关系模式,由关系名、属性名、属性间数据的依赖关系等组成。
关系数据库:对数据库的描述,即域的定义和域上的关系的集合是数据库的型的概念。数据库某个时刻对应的关系的集合称为数据库的值。
需要指出的是,关系模式是稳定的,而关系,即数据库的值是不断更新的。
- 关系操作。关系模型决定了关系操作的特点。关系语言的特点是高
度非过程化。操作的对象是关系,操作的结果也是关系,这种操作是集合操作。用户不必关心存取路径,这正式网状和层次模型的缺点。关系模型中, 关系操作有关系代数和关系演算两种形式,这两种形式的功能是等价的,一个是代数表示,一个是逻辑表示。关系操作用关系代数表示,常用的有θ选择、投影、θ连接、除、并、交、差等。θ表示>、<等比较运算符。
- 关系模型的完整性。关系模型要求实体完整性、参照完整性和用户定义的完整性。
-
实体完整性,简单地讲就是主码不能为空。这样作的意义是保证关系中不会出现无意义的元组。比如在学生关系中,每个学生都有不同的学号, 学生的学号就是主码,实体的完整性就防止了没有学号的学生数据的出现。
-
参照完整性存在于两个关系之间。可以理解为,关系 A 中的属性 a, 与关系 B 中的主码 b 相对应,则关系 A 中所有元组的属性 a 的值必须对应关系 B 中某一个元组的主码 b 的值。这样作主要是为防止止无意义的数据的出现和存在。例如,在学生数据和学生的成绩数据之间,成绩关系中的学号不能是学生关系中没有的学号。
-
用户定义的完整性,是用户根据数据库的实际情况制定的数据库的约束条件。当这种约束条件定义好之后,用户就不必用程序检验,而是用关系模型提供的系统的方法去处理。