数据库原理第二章关系数据库.ppt

上传人:本田雅阁 文档编号:3184863 上传时间:2019-07-22 格式:PPT 页数:63 大小:503.51KB
返回 下载 相关 举报
数据库原理第二章关系数据库.ppt_第1页
第1页 / 共63页
数据库原理第二章关系数据库.ppt_第2页
第2页 / 共63页
数据库原理第二章关系数据库.ppt_第3页
第3页 / 共63页
数据库原理第二章关系数据库.ppt_第4页
第4页 / 共63页
数据库原理第二章关系数据库.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《数据库原理第二章关系数据库.ppt》由会员分享,可在线阅读,更多相关《数据库原理第二章关系数据库.ppt(63页珍藏版)》请在三一文库上搜索。

1、数据库原理 第二章:关系数据库,授课教师:王哲,本次课学习内容,关系代数 关系运算(选择、投影、连接,除运算) * 关系演算是以数理逻辑中的谓词演算为基础的。可分为: 元组关系演算语言(get,put等6条语句) 域关系演算语言QBE,一、关系代数,1、除运算 2、除运算示例 3、除运算练习,1、除运算(Division,亦称商),用途:除法运算同时从行和列的角度进行运算,在表达某些查询时有用,适合于包含“全部”之类的短语的查询,例如“查询已注册选修了所有课程的学生名字”。 定义:给定关系 R(X,Y),S(Y,Z),X,Y,Z为属性列,关系R和关系S中的Y出自相同域集,则: RS=trX|t

2、rRy(S)Yx 其中,Yx为x在R中的象集,x= trX。,象集Zx 给定一个X和关系R(X,Z), Z为属性组。 当tX=x时,x在R中的象集(Images Set)为: Zx=tZ|t R,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合,x1在R中的象集 Zx1 =Z1,Z2,Z3, x2在R中的象集 Zx2 =Z2,Z3, x3在R中的象集 Zx3=Z1,Z3,例1:设关系R、S分别为下图的(a)和(b),RS的结果为图(c),2、除运算示例,分析,在关系R中,A可以取四个值a1,a2,a3,a4 a1的象集为 (b1,c2),(b2,c3),(b2,c1) a2的象集为

3、 (b3,c7),(b2,c3) a3的象集为 (b4,c6) a4的象集为 (b6,c6) S在(B,C)上的投影为 (b1,c2),(b2,c1),(b2,c3) 只有a1的象集包含了S在(B,C)属性组上的投影 所以RS =a1,写出RS=,R,S,RS,例2:有关系A、B1、B2和B3,请分别计算A/B1、 A/B2及A/B3。 分析:在关系中,sno可以取四个值s1,s2,s3,s4 s1的象集为p1,p2,p3,p4 s2的象集为p1,p2 s3的象集为p2 s4的象集为p2,p4,例3:有关系R、S1、S2和S3,请分别计算R/S1、R/S2及R/S3。 分析:在R关系中,sid

4、可以取四个值s1,s2,s3,s4 s1的象集为p1,p2,p3,p4,s2的象集为p1,p2 s3的象集为p2,s4的象集为p2,p4,例4:查询至少选修1号课程和3号课程的学生号码 解题思路:首先建立一个临时关系K, 然后求Sno,Cno(SC)K 200215121象集1,2,3 200215122象集2,3 K=1,3 于是:Sno,Cno(SC)K=200215121,关系除法运算的步骤: 将被除关系属性分为象集属性和结果属性 对象集属性进行投影目标数据集 将被除关系分组:结果属性值一样的元组分为一组 找出结果集,3、除运算练习,1、已知关系r、s、w如图所示,计算T= (r s)w

5、) S,r关系 s关系 w关系,解:T=,2、检索学习全部课程的学生学号 3、检索学习全部课程的学生学号和姓名 4、检索所学课程包含学生S3所学课程的学生学号,Sno,Cno(SC)Cno(Course),Sno,Cno(SC)Cno(Course) Sno,Sname(Student) 或:Sno,Sname(Student Sno,Cno(SC)Cno(Course),Sno,Cno(SC) Cno( sno=S3(SC),关系代数小结,传统的集合运算 并、差、交、笛卡尔积 专门的关系运算 选择、投影、连接、除 5种基本运算 并、差、笛卡尔积、投影、选择,二、关系演算,关系演算是以数理逻辑

6、中的谓词演算为基础的,通过谓词形式来表示查询表达式。 根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。前者以元组为变量,简称元组演算;后者以域为变量,简称域演算。,元组关系演算 Tuple Relational Calculus ,简称TRC 元组关系演算语言ALPHA 元组关系表达式 域关系运算 Domain Relational Calculus ,简称DRC 域关系演算语言QUE,1、元组关系演算,元组关系演算是以元组变量作为谓词变元的基本对象。 元组关系演算语言的典型代表是E.F.Codd提出的ALPHA语言,这种语言虽然没有实际实现,但较有名气,INGRES关系数据库上

7、使用的QUEL语言,就是在ALPHA语言的基础上研制的。 这里主要介绍ALPHA语言。,ALPHA语言,基本格式是: (): 操作符有GET、PUT、HOLD、UPDATE、DELETE,DROP等6条语句。 工作空间是指内存空间,通常用W表示,也可以用别的字母表示。工作空间是用户与系统的通信区。 目标表用于指定操作(如查询、更新等)出来的结果,它可以是关系名或属性名,一条语句可以同时对多个关系或多个属性进行操作。 只有满足操作条件的元组才能进行,操作操作条件可以为空。 除此之外,还可以在基本格式上加上排序要求,定额要求等。,1)简单查询,下面以学生课程数据库(P56)为例,说明ALPHA语言

8、的使用。 例1:查询所有学生的数据 GET W (Student) GET语句的作用是把数据库中的数据读入内存空间W,目标表为学生关系S,代表查询出来的结果,即所有的学生。 冒号后面的操作条件缺省,表示无条件查询。 例2:查询所有被选修的课程号码。 GET W (SC.Cno) 目标表为选课关系SC中的属性CNO,代表所有被选修的课程号码,查询结果自动消去重复行。,由冒号后面的逻辑表达式给出查询条件,在表达式中可以使用如下三类运算符: 比较运算符:,=等于,; 逻辑运算符:(与),(或),(非) 表示执行次序的括号:() 其中,比较运算符的优先级高于逻辑运算符,可以使用()改变它们的优先级。,

9、2)条件查询,例1:查询所有男学生的姓名。 GET W (Student.Sname) : Student. Ssex = 男 例2:查询信息系(IS)中年龄小于20岁的学生的学号和年龄 GET W (Student.Sno,Student.Sage): Student.Sdept=IS Student.Sage20 例3:查询信息系(IS)或计算机系(CS)的男学生,GET W (Student): (Student.Sdept=IS V Student.Sdept=CS) Student. Ssex = 男,3)排序检索,例1:查询S3同学所选课程号及成绩,并按成绩降序排列。 GET W

10、(SC.CNO,SC.SCORE):SC.SNO=S3 DOWN SC.SCORE 例2:查询计算机科学系(CS)学生,按年龄升序排序 GET W (Student):Student.Sdept=CS up Student.Sage DOWN表示降序,后面紧跟排序的属性名。 升序排列时使用UP。,4)限额检索,例1:查询查询一名男同学。 GET W (1) (Student) : Student. Ssex = 男 例2:查询一名男同学的教师号和姓名,并使他的年龄最小。 GET W (1) (Student) : Student. Ssex = 男 up Student.Sage 所谓的定额查

11、询就是通过在W后面的括号中加上定额数量,限定查询出元组的个数。 这里(1)表示查询结果中男同学的个数,取出学生表中第一个男同学的学号和姓名。,5)带元组变量的查询,元组关系演算就是以元组变量作为谓词变元的基本对象,元组变量是在所定义的关系范围内变化,所以也称作范围变量Range Variable,一个关系可以设多个元组变量。 例1:查询S3同学所选课程号。 RANGE SC X GET W (X.CNO):X.SNO=S3 使用RANGE来说明元组变量,X为关系SC上的元组变量。 如果关系的名字很长,使用起来不方便,这时可以设一个名字较短的元组变量来代替关系名,简化关系名,使操作更加方便。,例

12、2:查询所有男学生的姓名。 RANGE Student X GET W (X.Sname) : X. Ssex = 男 例3:查询信息系(IS)中年龄小于20岁的学生的学号和年龄 RANGE Student X GET W (X.Sno,X.Sage): X.Sdept=ISX.Sage20,6)带存在量词及多个关系的查询,操作条件中使用量词时必须用元组变量 例1:查询S3同学所选课程号 RANGE SC X GET W (X.CNO): X(X.SNO=S3) 例2:查询S3同学所选课程名。 RANGE SC X GET W (Course.Cname):X(Course.Cno=X.Cno

13、X.Sno=S3),例3:查询S3同学所选课程名 RANGE SC X Course CX GET W (CX.Cname):X CX (CX.Cno=X.CnoX.Sno=S3) 此查询涉及两个关系,对两个关系(Course和SC)作用存在量词,所以用了两个元组变量。,例4:查询至少选修一门其先行课为6号课程的学生名字 RANGE Course CX SC SCX GET W (Student.Sname): SCX (SCX.Sno=Student.Sno CX (CX.Cno=SCX.CnoCX.Pcno=6),例5:查询选修全部课程的学生姓名。,RANGE SC X Course CX

14、 GET W (Student.SN) : CXSCX (SCX.SNO=Student.SNOCX.CNO=SCX.CNO),7)用蕴涵(Implication)的检索,例1:查询最少选修了200215122学生所选课程的学生学号 RANGE Couse CX SC SCX SC SCY GET W (Student.Sno): CX(SCX (SCX.Sno=200215122SCX.Cno=CX.Cno) SCY(SCY.Sno=Student.Sno SCY.Cno= CX.Cno),8)使用聚集函数,用户在使用查询语言时,经常要作一些简单的运算。 例如要统计某个关系中符合某一条件的元

15、组数,或某些元组在某个属性上分量的和、平均值等等。 在关系数据库语言中提供了有关这类运算的标准函数,增强了基本检索能力。 常用的库函数右表所示:,例1:求学号为S1学生的平均分。 GET W (AVG(SC.SCORE):S.SNO=S1 例2:求学校共有多少个系 GET W (COUNT(Student.Sdept) 例3:求学生的最大年龄 GET W (max(Student.Sage) COUNT函数自动消去重复行,可计算字段“DEPT“不同值的数目。,数据更新,更新操作包括修改、插入和删除。 1)修改操作 修改操作使用UPDATE语句实现,具体操作分为以下三步: 读数据:使用HOLD语

16、句将要修改的元组从数据库中读到工作空间中; 修改:利用宿主语言修改工作空间中元组的属性; 送回:使用UPDATE语句将修改后的元组送回数据库中。 这里HOLD语句是带上并发控制的GET语句。,例1:把刘伟同学转到信息(IS)系。 HOLD W(Student.Sname ,Student.Sdept):Student.Sname=刘伟 MOVE IS TO W.DEPT UPDATE W 在ALPHA语言中,不允许修改关系的主码,例如不能使用UPDATE语句修改学生表中的学生学号。 如果要修改主码,应该先使用删除操作删除该元组,再插入一条具有新主码值的元组。,2)插入操作,插入操作使用PUT语

17、句实现,具体操作分为以下两步: 建立新元组:利用宿主语言在工作空间中建立新元组; 写数据:使用PUT语句将元组写入到指定的关系中。,例1:在SC表中插入一条选课记录(S6,C1,85)。 MOVE S6 TO SC.SNO MOVE C1 TO SC.CNO MOVE 85 TO SC.Grade PUT W(SC) PUT语句的作用是把工作空间W中的数据写到数据库中,此例即把已经在工作空间建立的一条选课记录写入到选课关系SC中。 注意:PUT语句只能对一个关系进行操作,在插入操作时,拒绝接受主码相同的元组。,例2: 学校新开设了一门2学分的课程“计算机组织与结构”,其课程号为8,直接先行课为

18、6号课程。插入该课程元组 MOVE 8 TO W.Cno MOVE 计算机组织与结构 TO W.Cname MOVE 6 TO W.Cpno MOVE 2 TO W.Ccredit PUT W (Course),3)删除操作,ALPHA语言中的删除操作不但可以删除关系中的一些元组,还可以删除一个关系。 删除操作使用DELETE语句实现,具体操作分为以下两步: 读数据:使用HOLD语句将要删除的元组从数据库中读到工作空间中; 删除:使用DELETE语句删除该元组。,例1: 删除学号为S6的学生的信息 HOLD W(Student): Student.Sno=S6 DELETE W 例2:删除全部

19、学生的信息 HOLD W(Student) DELETE W 为保证参照完整性,删除Student中元组时相应地要删除SC中的元组 HOLD W (SC) DELETE W,例3:将学号200215121改为200215126 HOLD W (Student): Student.Sno=200215121 DELETE W MOVE 200215126 TO W.Sno MOVE 李勇 TO W.Sname MOVE 男 TO W.Ssex MOVE 20 TO W.Sage MOVE CS TO W.Sdept PUT W (Student),2、域关系演算语言QBE,QBE是Query B

20、y Example的缩写,也称为示例查询,它是一种很有特色的屏幕编辑语言。 域关系演算是关系演算的另一种形式。 域关系演算是以元组变量的分量即域变量作为谓词变元的基本对象。 域关系演算语言的典型代表是1975年由IBM公司约克城高级研究试验室的M.M.Zloof提出的QBE语言,该语言于1978年在IBM370上实现。,QBE特点,(1)以表格形式进行操作 每一个操作都由一个或几个表格组成,每一个表格都显示在终端的屏幕上,用户通过终端屏幕编辑程序以填写表格的方式构造查询要求,查询结果也以表格的形式显示出来,所以它具有直观和可对话的特点。 (2)通过例子进行查询 通过使用一些实例,使该语言更易于

21、为用户接受和掌握。 (3)查询顺序自由 当有多个查询条件时,不要求使用者按照固定的思路和方式进行查询,使用更加方便。,(1)用户根据要求向系统申请一张或几张表格,显示在终端上; (2)用户在空白表格的左上角的一栏内输入关系名; (3)系统根据用户输入的关系名,将在第一行从左至右自动填写各个属性名; (4)用户在关系名或属性名下方的一格内填写相应的操作命令,操作命令包括:P.(打印或显示)、U.(修改)、I.(插入)、D.(删除)。如果要打印或显示整个元组时,应将“P”填在关系名的下方,如果只需打印或显示某一属性,应将“P”填在相应属性名的下方。,使用QBE语言的步骤(P69),QBE操作框架表

22、,1)简单查询,例1:显示全部学生的信息 方法一:将P.填在关系名的下方 方法二:将“P.”填在各个属性名的下方,P. 是操作符,表示打印(print),实际上是显示。 T 是示例元素,即域变量,示例元素是这个域中可能的一个值,它不必是查询结果中的元素。QBE要求示例元素下面加下划线。 只有目标属性包括所有的属性时,将P.填在关系名的下方。,2)条件查询,例1:查询所有女学生的姓名 目标属性只有姓名,所以将P.填在关系名的下方。 查询条件中可以使用比较运算符,=和,其中=可以省略。本例的查询条件是SEX=女,“=”被省略。,例2:查询年龄大于18岁的女学生的姓名 方法1:把两个条件写在同一行上

23、: 方法2:把两个条件写在不同行上,但必须使用相同的示例元素。,例3:查询年龄大于18岁或者女学生的姓名。 在QBE中,表示两个条件的“或”,要把两个条件写在不同行上,且必须使用不同的示例元素。,例4:查询选修C1号课程学生的姓名。 本查询涉及两个关系:Student和SC,这两个关系具有公共的属性Sno,Sno作为连接属性,把具有相同的SNO值的两个关系连接起来,Sno在两个表中的值要相同。,例5:查询未选修C1号课程学生的姓名。 查询条件中的“未选修”需使用逻辑非来表示。QBE中的逻辑非运算符为,填写在关系名下方。 如果S1同学选修C1号课程的情况为假,则符合查询的条件,显示S1同学的学号

24、,然后再查询其他同学。,3)排序查询,例1:查询全体女同学的学号和姓名,要求查询结果按年龄降序排列。 对查询结果按照某个属性值升序排列时,则在相应的属性下方填入“AO”,降序排列时,填入“DO”。 如果按照多个属性值同时排序,则用“AO(i)”或“DO(i)”表示,其中I为排序的优先级,I值越小,优先级越高。,例2:查全体男生的姓名,要求查询结果按所在系升序排序,对相同系的学生按年龄降序排序。,4)使用聚集函数,同ALPHA语言类似,QBE语言也提供了一些有关运算的标准函数,以方便用户。,QBE常用的库函数及其功能,例1:求学号为S1学生的平均分。 例2:求信息(IS)系学生的平均年龄。,数据

25、更新,修改:修改的命令为 U. 插入:插入的命令为 I. 删除:删除的命令为 D.,1)修改操作,例1:把刘伟同学转到信息系。 例2:把刘伟同学年龄改为18岁。,例3:把200215121学生的年龄增加1岁 例4:将所有学生年龄增加1岁,2)插入操作,例1:在SC表中插入一条选课记录(S6,C1) 注意:新插入的元组必须具有主码值,其他属性值可以为空,如本例中的Grade为空。,3)删除操作,例1:删除S1同学选修C1课程的信息。 例2:删除删除学生200215089同学的信息。,第二章 关系数据库小结,关系数据结构 关系(域,笛卡尔积,关系) 关系,属性,元组,候选码,主码,主属性,基本关系

26、的性质 关系模式, 关系数据库 关系操作 查询(选择、投影、连接、除、并、交、差) 数据更新(插入、删除、修改),关系的完整性约束 实体完整性 参照完整性(外码) 用户定义的完整性 关系数据语言 关系代数语言 关系演算语言 元组关系演算语言ALPHA 域关系演算语言QBE,练习题,例:数据库中有三个关系 S(S#,SNAME,AGE,SEX) C(C#,CNAME,TEACHER) SC(S#,C#,GRADE) 请用ALPHA语言、QBE语言完成如下操作 检索学习课程号为C2的学生学号与成绩 检索学习课程号为C2的学生学号与姓名 检索选修课程名为Maths的学生学号与姓名 检索选修课程号为C2或C4的学生学号 检索至少选修课程号C2和C4的学生学号 检索不学C2课的学生姓名与年龄,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1