1.3.3 关系的运算与关系操作
对关系数据库进行查询时,需要找到用户感兴趣的数据,这就需要对关系进行运算。关系的基本运算有两类:一类是传统的集合运算(并、差、交等),在Access 2010系统中没有直接提供传统的集合运算,但可以通过其他操作或编写程序来实现;另一类是专门的关系运算(选择、投影、连接),查询就是对关系进行的基本运算。
在Access 2010中,查询是高度非过程化的,用户只需明确提出“要干什么”,而不必指出“怎样去干”,系统将自动对查询过程进行优化,从而可以实现对多个相关联的表进行高速存取,但是要正确写出一个较复杂的查询表达式就必须先了解关系运算。
1. 传统的关系运算
现有两个关系R、S。若两个关系是相容的(主关键字相同),便可以进行传统的关系运算。
两个关系的“并”是由属于R、S这两个关系的元组组成的集合。
两个关系的“差”是由属于R但不属于S(或属于S但不属于R)的元组组成的集合。
两个关系的“交”是由既属于R又属于S的元组组成的集合。
2. 关系操作(专门的关系运算)
(1)选择
从关系中找出满足给定条件的元组的操作称为选择。选择的条件以逻辑表达式形式给出,选取逻辑表达式的值为真的元组。例如,要从“教师”表中找出性别为“女”的教师,所进行的查询操作就属于选择运算。
选择是从行的角度进行的运算,即从水平方向抽取记录,经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中的元组是原关系的一个子集。
(2)投影
从关系模式中指定若干个属性组成新的关系称为投影。投影是从列的角度进行的运算,相当于对关系进行垂直分解。经过投影运算可以得到一个新关系,其关系模式所包含的属性个数往往比原来关系少,或者属性的排列顺序不同。投影运算提供了垂直调整关系的手段,体现出关系中列次序无关的特点。例如,从“教师”表中查询所有教师的姓名所进行的查询操作就属于投影运算。
(3)连接
连接是关系的横向结合。连接运算是将两个关系模式合成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。
连接过程是通过连接条件来控制的,连接条件中将出现两个表中的公共属性名,或者具有语义相同的属性,连接的结果是满足条件的所有记录。
选择和投影运算的操作对象只是一个表,相当于对一个二维表进行切割。连接运算需要两个表作为操作对象。如果需要连接两个以上的表,则应当两两进行连接。
(4)自然连接
在连接运算中,按照字段值对应相等为条件进行的连接操作称为“等值连接”,而自然连接是去掉重复属性的等值连接。自然连接是最常用的连接运算。
利用关系的投影、选择和连接运算可以在对关系数据库的查询中,方便地进行关系的分解或构造新的关系。