| 当前位置:洪恩在线
-> 继续教育 ->
计算机考级 -> 二级FOXBASE+语言 |
|
|||||||||||
|
对关系数据库进行查询时,需要找到用户感兴趣的数据,这就需要对关系进行一定的关系运算。关系的基本运算有两类:一类是传统的集合运算(并、差、交等);另一类是专门的关系运算 (选择、投影、联接)。有些查询需要几个基本运算的组合,经过若干个步骤才能完成。
一、传统的集合运算 进行并、差、交集合运算的两个关系必须具有相同的关系模式,即相同结构。 1.并 两个相同结构的关系的并是由属于这两个关系的元组组成的集合。 2.差 设有两个相同结构的关系R和S,R差S的结果是由属于R但不属于S的元组组成的集合,即差运算的结果是从R中去掉S中也有的元组。 3.交 两个具有相同结构的关系R和S,它们的交是由既属于R又属于S的元组组成的集合。交运算的结果是R和S的共同元组。 在FoxBASE中没有直接提供传统的集合运算,可以通过其他操作或编写程序来实现。 二、专门的关系运算 1.选择 从关系中找出满足给定条件的元组的操作称为选择。选择的条件以逻辑表达式给出,使得逻辑表达式的值为真的元组将被选取。 选择是从行的角度进行的运算,即从水平方向抽取记录。经过选择运算得到的结果元组可以形成的新关系,其关系模式不变,但其中的元组是原关系的一个子集。 不同数据库管理系统所用语言的语法格式各不相同,FoxBASE命令中的任选短语FOR<条件>、WHILE<条件>和设置记录过滤器来筛选记录相当于选择运算。 2.投影 从关系模式中指定若干个属性组成新的关系称为投影。 投影是从列的角度进行的运算,相当于对关系进行垂直分解。经过投影运算可以得到一个新关系,其关系模式所包含的属性个数往往比原关系少,或者属性的排列顺序不同。投影运算提供了垂直调整关系的手段,体现出关系中列的次序无关紧要这一特点。 在FoxBASE命令中,可选短语FIELDS<字段1,字段2,···>和设置字段过滤器进行字段筛选,相当于投影运算。 3.联接 联接是关系的横向结合。联接运算将两个关系模式的属性名拼接成一个更宽的关系模式,生成的新关系中包含满足联接条件的元组。 联接过程是通过联接条件来控制的,联接条件中将出现两个关系中的公共属性名,或者具有相同语义、可比的属性。 选择和投影运算都属于一目运算,它们的操作对象只是一个关系,相当于对一个二维表进行切割。联接运算是二目运算,需要两个关系作为操作对象,相当于对两个二维表进行拼接。如果需要联接两个以上的关系,应当两两进行联接。 在FoxBASE中有单独一条命令JOIN实现两个关系的联接运算。FoxBASE的关联操作属于逻辑上的联接运算。 4.自然联接和优化 (1)自然联接 自然联接是去掉重复属性的等值联接,它属于联接运算中按照属性值对应相等为条件进行的联接操作。自然联接是最常用的联接运算,前面的例子均属于自然联接。 利用关系的投影、选择和联接运算可以方便地分解或构造新的关系。 (2)联接优化 系统在执行联接运算时要进行大量的比较操作,因此执行起来比较费时间。尤其是在包括许多元组的关系之间进行联接时,矛盾更加突出。 设关系R和S分别有m和n个元组。联接运算先从R关系中的第一个元组开始,依次与S关系的各个元组按照联结条件进行比较,符合条件的两元组首尾相连纳入新关系,一轮共需要进行n次比较;再用R关系中的第二个元组对S关系的各个元组进行第二次扫描。由于R中有m个元组,共需要进行m轮扫描,因此,R与S的联接过程共需要访问m*n个元组。如果m=500,n=50,联接过程需要进行25000次访问。由此可见,涉及到联接的查询应当考虑优化,以便提高操作效率。 优化的一般方法是,考虑缩小参与联接运算关系的尺寸,要减少访问记录的次数。首先应进行选择运算,尽量减少关系中元组的个数,能投影的再投影,使关系中属性个数较少。在投影时必须注意保留联接两个关系所需要的公共属性或具有相同语义的属性,否则关系之间就失去了联系。然后再进行联接操作。
课堂提问: |
|
|
|||||||||