**
** 关系数据库 **
**
** 六, ** ** 关系代数 **
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。
1 ,传统的集合运算
并 (union) ,差 (difference) ,交 (intersection) ,广义笛卡儿 (extended Cartesian product)
2 ,专门的关系运算
规定的几个记号。
⑴ 设关系模式为 R(A1,A2, … ,AN) 。它的一个关系设为 R 。 t ∈ R 表示 t 是 R 的一个元组。 t[Ai] 则表示元组 t 中相应于属性 Ai 上的一个分量。
⑵ 若 A={Ai1,Ai2, … ,Aik} ,其中 Ai1,Ai2, … ,Aik 是 A1,A2, … ,AN 中的一部分,则 A 称为属性列或域列。 t[A]=(t[Ai1],t[Ai2], … ,t[Aik]) 表示元组 t 在属性列 A 上诸分量的集合。则表示 (A1,A2, … ,AN) 中去掉 {Ai1,Ai2, … ,Aik} 后剩余的属性组。
⑶ R 为 n 目关系, S 为 m 目关系。 tr ∈ R , ts ∈ S , tr ts 称为元组的连接。它是一个 n + m 列的元组,前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的一个 m 元组。
⑷ 给定一个关系 R(X , Z) , X 和 Z 为属性组。定义当 t[X]=x 时, x 在 R 中的象集为:
Zx={t[Z] | t ∈ R , t[X]=x}
3 ,下面给出关系运算的定义:
1 .选择 (Selection)
σ F ( R )= { t | t ∈ R ∧ F(t)= ’真’ }
从关系 R 中选取使逻辑表达式 F 为真的元组。这是从行的角度进行的运算。
2 .投影 (Projection)
关系 R 上的投影使从 R 中选择出若干属性列组成新的关系。记做:
π A ( R )= { t[A] | t ∈ R }
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。
3 .连接 (Join)
连接也称为 连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。
连接运算中由两种常用的连接,一种是等值连接,一种是自然连接。
1 ,为“=”的连接运算称为等值连接。它是从关系 R 与 S 的广义笛卡儿积中选取 A , B 属性值相等的那些元组,集等值连接为:
2 ,自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
4 .除 (Division)
给定关系 R ( X , Y )和 S ( Y , Z ),其中 X , Y , Z 为属性组。 R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集。 R 与 S 的除运算得到一个新的关系 P ( X ), P 是 R 中满足下列条件的元组在 X 属性列上的投影,元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合。除操作是同时从行和列的角度进行运算。
** 七,关系演算 **
1, 元素关系演算语言 ALPHA :
ALPHA 语言主要有 GET 、 PUT 、 HOLD 、 UPDATE 、 DELETE 、 DROP 六条语句,语句的基本格式是:
** 操作语句 工作空间名(表达式): 操作条件 **
表达式用于指定语句的操作对象,它可以是关系名或属性名,一条语句可以同时操作多个关系或多个属性。操作条件是一个逻辑表达式,用于将操作对象限定在满足条件的元组中,操作条件可以为空。
1, GET 检索操作
2, UPDATE 更新操作,步骤如下:
· 首先用 HOLD 语句将要修改的元组从数据库中读到工作空间中
· 然后用宿主语言修改工作空间中元组的属性
· 最后用 UPDATE 语句将修改后的元组送回数据库中
3, PUT 插入操作,步骤如下:
· 首先用宿主语言在工作空间中建立新元组
· 然后用 PUT 语句把该元组存入指定的关系中
4, HOLD 带着并发控制的 GET 语句
5, DELETE 删除操作
· 用 HOLD 语句把要删除的元组从数据库中读到工作空间中
· 用 DELETE 语句删除该元组
2, 域关系演算 QBE ( Query By Example )
最突出的特点是它的操作方式。它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑程序以填写表格的方式构造查询要求,而查询结果也是以表格形式显示,因此非常直观,易学易用。
** 八,关系数据库管理系统: ** ** **
关系数据库管理系统简称为关系系统,是指支持关系模型的系统。一个数据库管理系统可定义为关系系统,当且仅当它至少支持:
1, 关系数据库(即关系数据结构)。也就是说,从用户观点看,数据库是由表构成的,并且系统中只有表这种结构。
2, 支持选择、投影和(自然)连接运算。对这些运算不要求用户定义任何物理存取路径。
按照 E.F.Codd 的思想,依据关系系统支持关系模型的程度不同,可以把关系系统分为四类:
1 ,表式系统。
这类系统仅支持关系数据结构(即表),不支持集合级的操作。表式系统实际上不能算关系系统。倒排表列( Inverted list )系统就属于这一类。
2 ,(最小)关系系统。
即上面定义的关系系统,它支持关系数据结构和选择、投影、连接三种关系操作。许多微机关系系统如 FoxBASE 、 FoxPro 等就属于这一类。
3 ,关系上完备的系统。
这类系统支持关系数据结构和所有的关系代数操作(功能上与关系代数等价)。目前许多中大型关系系统如 DB2 、 ORACLE 等就属于这一类。
4 ,全关系系统。
这类系统支持关系模型的所有特征,特别是数据结构中域的概念,实体完整性和参照完整性。虽然 DB2 、 ORACLE 等系统已经接近这个目标,但到目前为止尚没有一个系统是全关系系统。
尽管不同的关系系统对关系模型的支持程度不同,但它们的体系结构都符合三级模式结构,提供了模式、外模式、内模式以及模式与外模式之间的映象、模式与内模式之间的映象。表就是关系系统的模式,在表上面可以定义视图,这就是关系系统的外模式,关系系统通常都提供了定义视图即外模式的语句。内模式则是实际存储在磁盘或磁带上的文件。
未完待续。
** 小康 **
2004-2-29