关于关系代数运算与SQL语句的等价实现的分析与研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关于关系代数运算与SQL语句的等价实现的分析与研究谢英辉1邓子云2(1.长沙民政职业技术学院,湖南长沙410004;2.湖南现代物流职业技术学院,湖南长沙410131)[摘要]关系代数运算是关系型数据库原理课中的重点内容,也是学者在学习过程中最抽象而最难掌握的内容,关系数据库是以二维表形式组织数据,它是目前数据库管理系统的主导,而关系代数运算是一种抽象数学语言,是关系型数据库操纵语言的一种传统表达方式,SQL语言是国际化标准组织(ISO)批准的关系数据库标准语言,它包括定义(Definition),查询(Query),操纵(Manipulation)和控制(Control)四方面功能。本文主要讨论如何用SQL语句来实现关系代数运算中的各种等价运算,从实践应用的基础上来加深学者关系代数运算原理的理解。[关键词]关系型数据库;SQL语言;关系代数运算;数据库原理计算机专业的一门非常重要的专业课,关系代数运算是该课程的重点和难点,SQL语言是对在实际的数据库中数据进行管理和维护的唯一语言,在实际的应用中非常灵活,而关系代数运算是对SQL语言实践操作应用的理论升华,为其提供理论基础,因此,对于学者来说,需要理论与实践结合来学习,而在目前一般的数据库原理书本中,总体上是先介绍理论知识,然后用一个结果数据图表示相关关系运算的结果,没有一个相关的SQL语句的实现来说明这个结果的产生过程,这给初学者带来了学习上的极大困难,因此用SQL语句来实现关系代数运算显得尤为重要,能够帮助学者掌握SQL语句用法的同时来理解和掌握关系代数的运算理论知识,更好地掌握数据库的设计和数据管理。一、传统的集合运算与SQL语句实现传统的集合运算包括四种运算:并(∪)、交(∩)、差(—)、广义笛卡尔积(X)。(一)并运算(Union)(1)概述设关系R和关系S具有相同的目n,且相应的属性取自同一个域。则关系R和关系S的并记为R∪S,其结果仍为n目关系,由属于R或属于S的元组组成。如R和S的元组分别用两个圆表示(去掉了重复的记录),则R∪S的集合如图1.1所示虚影部分元组。图1.1集合R∪S集合(2)SQL语句Select*fromRUnionSelect*fromS(3)数据示例关系R:商品代码子公司代码品名数量单价1Comp1钢笔5010.002Comp1圆珠笔2006.00关系S:商品代码子公司代码品名数量单价1Comp1钢笔5010.005Comp2练习本2003.006comp2信笺10003.00R∪S运算结果商品代码子公司代码品名数量单价1Comp1钢笔5010.002Comp1圆珠笔2006.005Comp2练习本2003.006comp2信笺10003.00(二)交运算(Intersection)(1)概述设关系R和关系S具有相同的目n,且相应的属性取自同一个域。关系R和关系S的交记为R∩S,结果仍为n目关系,由既属于R又属于S的元组组成。如R和S的元组分别用两个圆表示,则R∩S集合运算结果可用图1.2示意,则两圆相交部分元组表示R与S的交,即由属于R同时又属于S的记录构成的集合。图1.2集合R∩S(2)SQL语句SelectR.学号fromR,SwhereR.学号=S.学号andR.课程名=S.课程名andR.分数=S.分数或SelectR.学号,R.课程名,R.分数fromRINTERSECTSelectS.学号,S.课程名,S.分数fromS(3)数据示例关系R:学号课程名分数1数学801英语851政治902数学852英语802政治90关系S:学号课名分数1数学801英语851政治922数学852英语802政治90R∩S结果:学号课名分数1数学801英语852数学852英语802政治90(三)差运算(Difference)(1)概述设关系R和关系S具有相同的目n,且相应的属性取自同一个域。定义关系R和关系S的差记为R-S,其结果仍为n目关系,由属于R而不属于S的元组组成。如R和S的元组分别用两个圆表示,则R-S的集合如图1.3所示。比较图1.2和图1.3,显然R=(R∩S)∪(R-S)或R-S=R-(R∩S),即由属于R但不属于S的记录构成的集合,去掉重复的记录。图1.3集合R-S(2)SQL语句SelectR.学号,R.课程名,R.分数fromREXCEPTSelectS.学号,S.课程名,S.分数fromS或select学号,课程名,分数FromRCWHERE学号NOTIN(SelectR.学号fromR,SwhereR.学号=S.学号andR.课程名=S.课程名andR.分数=S.分数)(3)数据示例R-S运算结果:学号课名分数1政治90(四)笛卡尔积R×S(ExtendedCartesianProduct)(1)概述两个分别为n元和m元的关系R和S的广义笛卡尔积R×S是一个(n×m)元组的集合。元组的前n个分量是R的一个元组,后m个分量是S的一个元组,若R有K1个元组,S有K2个元组,则R×S有K1×K2个元组。记为R×S(2)对应的SQL语句Select*fromR,S(3)数据示例关系R:姓名年龄张三20李四19关系S:地址邮编长沙410004娄底417119R×S结果:姓名年龄地址邮编张三20长沙410004张三20娄底417119李四19长沙410004李四19娄底417119二、专门的关系运算专门的关系运算包括四种运算即选择(σ)、投影(Π)、连接(∞)和除法(÷),是关系数据库数据维护、查询、统计等操作的基础。(一)选择(Selection)(1)概述设有关系R,在关系R中求取满足给定条件F的元组组成新的关系的运算称为选择。记作σF(R)。其中F是一个条件表达式,其值为“真”或“假”。σF(R)是从关系R中选取使条件表达式F为真的元组。这是以行为处理单位进行的运算。F是由常量、变量及算术比较符{,≥,,≤,=,≠}和逻辑运算符(∧,∨,┓)等构成。(2)SQL语句SELECTR.学号,R.课程名,R.分数fromRWHERE分数85(3)数据示例选择运算结果如下:学号课程名分数1政治902政治90(二)投影(Projection)(1)概述设有关系R,在关系R中求指定的若干个属性列组成新的关系的运算称作投影,记作ΠA(R)。其中A为欲选取的属性列列名的列表,R叫关系名(或叫表名)。这是以列作为处理单位进行的运算,示意图如图2.2所示的粗体部分,a∈{A},c∈{A},d∈{A}。abcda∈{A}c∈{A}d∈{A}图2.2ПΑ(R)示意图(2)SQL语句若关系运算式为:П品名,数量(R)或П[3],[4](R)对应的SQL语句为:SELECT品名,数量FROMR(3)数据示例关系R:商品代码子公司代码品名数量单价1Comp1钢笔5010.002Comp1圆珠笔2006.00投影运算结果如下:品名数量钢笔50圆珠笔200(三)连接(Join)(1)概述从两个分别为n,m目的关系R和S的广义笛卡尔积中选取满足给定条件F的元组组成新的关系称为R和S的连接,记作R∞FS(F=AθB)。其中A和B分别为R和S上度数相等且可比的属性列,θ是算术比较符(,≥,,≤,=,≠)。即连接运算就是从两个关系的笛卡尔积中选取满足一定连接条件的元组的集合,连接的结果是一个(k1+k2)元的关系。(2)SQL语句Select*fromR,SwhereR.A=S.C(3)数据示例关系R:ABA1101A2201关系S:CDEA18185A28270A38390R与S的连接运算结果ABCDEA1101A18185A2201A28270(四)除(Division)(1)概述给定关系R(x,y)与S(y)其中x,y为属性集(也可为单属性),R中的y和S中的y是同名的属性(集)也可以有不同的属性名,但必须出自相同的域集。在求解R÷S时,对R按x的值的分组,然后检查每一组,如某一组中的y包含S中全部的y,则取该组中的x的值作为关系P中的一个元组,否则不取。R÷S的商等于关系P。(2)SQL语句SELECTDISTINCTA.NameFROMRASAWHERENOTEXISTS(SELECT*FROMSASBWHERENOTEXISTS(SELECT*FROMRASCwhereC.Name=A.NameandB.City=C.City))GROUPBYA.Name(3)数据示例关系R:NameCity张三长沙张三娄底李四长沙李四邵阳关系S:Address长沙娄底R除S的运算结果:Name张三三、结束语关系代数运算是数据库原理课中较为抽象的内容,如果以纯理论来讲解,学者不能真正理解关系代数运算,通过在SQLSEVER环境下利用SQL语句来实现关系代数的各种运算,引导学者去分析运算结果,使学者在感性上进一步认识关系代数运算在数据库中的应用,从而更深刻的理解了关系代数运算和更熟练地掌握了SQL语句的用法。[参考文献][1]张莉.SQLSERVER数据库原理及应用教程.北京:清华大学出版社.2003.01[2]李春葆,曾慧.数据库原理习题与解析.北京:清华大学出版社.2004.03[3]邵鹏鸣.数据库原理与应用:基础、设计、实现与程序开发.北京:清华大学出版社.2007.3[4]李春葆,曾平.数据库原理与应用:基于SQLServer2000(计算机与信息技术专业应.北京:清华大学出版社.2006.1[5](美)DavidM.kroenke,DavidJ.Auer.数据库原理(第3版).北京:清华大学出版社.2008-9-1[6]钱雪忠,甸海驰,陈国俊.数据库原理及技术课程设计.北京:清华大学出版社.2009.2第一作者简介:谢英辉(1977-),男,湖南涟源人,长沙民政职业技术学院软件学院教师,中级讲师,硕士,研究方向:软件项目管理、软件工程,E-mail:xie-ying-hui@163.com。第二作者简介:邓子云(1979-),男,湖南双峰人,湖南现代物流职业技术学院老师,副教授,高级工程师,硕士,中国系统分析员协会专业顾问,研究方向:软件项目管理、软件工程,E-mail:dengziyun@126.com。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功