数据库上课 第三讲 关系代数_第1页
数据库上课 第三讲 关系代数_第2页
数据库上课 第三讲 关系代数_第3页
数据库上课 第三讲 关系代数_第4页
数据库上课 第三讲 关系代数_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机械自动化学院机械自动化学院20152015主讲:主讲: 顾顾 曦曦 电话:电话:1569718107915697181079EmailEmail:回顾*2关系(表)学生记录表*学 号姓 名年 龄性 别系 名年 级2011004张飞19男工业工程32011006郭靖20男机工32011008小乔18女机电3码元组(行)关系名属性(列)分量关系模式:学生记录表(学号,姓名,性别,系名,年级)模式数据1.1 关系代数(relation algebra)关系代数是通过关系代数运算构成的表达式来表达查询基本的关系代数运算有选择、投影、集合并、集合差、选择、投影、集合并、集合差、笛卡尔积和更名笛卡尔积和

2、更名等。 关系代数运算是以一个或两个关系关系作为输入(即运算对象)产生一个新的关系新的关系作为结果。 *51.2 标记方法设关系模式为r(A1,A2,An) 它的一个关系实例设为R tR表示t是R的一个元组tA表示元组t在属性列A上诸分量的集合。 tAi则表示元组t中相应于属性Ai的一个分量 *6 A,A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性集或属性组。A:表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。 *7示例:关系模式 r(A1,A2,An)14级学生记录表(一个关系实例R)*学 号姓 名年 龄性 别系 名年

3、级2011004张飞19男工业工程32011006郭靖20男机工32011008小乔18女机电3属性集AtAtRtAi属性集A tr ts R为n目关系,S为m目关系。 tr R,tsS, tr ts称为元组的连接元组的连接。 tr ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。 *9示例ABCa1b1c1a2b2c2*10DEd1e1d2e2R ( 3目关系 )S ( 2目关系 )tr ts ( 5列元组 )trtrtsa1b1c1d1e1关系代数的运算符 关系代数用到的运算符包括四类*11*122.1 并(并( )关系r和关系s具有相同的n个属性

4、,且相应的属性取自同一个域。t是元组变量,tr表示t是r的一个元组。 关系r与关系s的并记作 :rs = t trts 其结果关系仍为n目关系,由属于r或或属于s的所有元组组成。注:去掉重复元组注:去掉重复元组*13并( )示例*142.2 差(差(-)r和s具有相同的目n相应的属性取自同一个域关系r与关系s的差记作 :r-s = t trts 其结果关系仍为n目关系,由属于r且且不属于s的所有元组组成。*15示例示例*16An Introduction to Database System2.3 交(交( )r和s具有相同的目n相应的属性取自同一个域关系r与关系s的交记作:rs = t tr

5、ts 其结果关系仍为n目关系,由既既属于r又又属于s的所有元组组成。关系的交可以通过差来表达,即rs = r-(r-s) *17示例*182.4 笛卡尔积() 两个分别为n目和m目的关系r和s的笛卡尔积是一个n+m目元组的集合。 元组的前n列是关系r的一个元组,后m列是关系s的一个元组若关系r有kr个元组,关系s有ks个元组,则关系r和s的笛卡尔积有krks个元组。记作 : rs = trts trrtss *19例:成绩管理数据库(P56) 关系Course和Class可分别描述为:Course ( 课程号,课程名称,学时,学分)Class ( 班级号,班级名称,学院,年级,人数)求笛卡尔积

6、Class Course*20*21 Course关系关系CourseNo CourseName creditHour courseHour priorCourseAC001 基础会计基础会计 48 3 nullCN028 大学语文大学语文 48 3 nulCS012 操作系统操作系统 80 5 nullCS015 数据库系统数据库系统 64 4 CS012Class关系关系ClassNo ClassName instiute grade ClassNumAC0703 会计学会计学08(3)班班 会计学院会计学院 2008 46CS0701 计算机计算机07(1)班班 信息学院信息学院 200

7、7 48ISO802 信息系统信息系统08(2)班班 信息学院信息学院 2008 43笛卡尔积 Class Course*22*233.2 选择()运算选择操作是在关系关系r中查找满足给定谓词满足给定谓词P(即选择条件即选择条件)的所有元组,记作: P (r) = t t rP(t) P 是一个逻辑表达式,取值为“真”或“假”。 选择运算是从行行的角度的角度进行的运算。*24P (r) 示例l 例如,在数据库ScoreDB中,查找2007级的所有班级情况 grade=2007(Class) ClassNo ClassName instiute grade ClassNum AC0703 会计学

8、会计学08(3)班班 会计学院会计学院 2007 46 CS0701 计算机计算机07(1)班班 信息学院信息学院 2007 48l 例如,在数据库例如,在数据库ScoreDB中,查找所有中,查找所有1992年及以后出生年及以后出生 的女学生的女学生情况情况 : year(birthday)=1992sex=女女(Student)StudentNo StudentName sex birthday native nation classNo 0703010 李宏冰李宏冰 女女 1992-03-09 太原太原 蒙古族蒙古族 AC0703*25 3.3 投影()关系r上的投影是从r中选择出若干属性

9、列若干属性列组成新的关系。记作: A(r) = tA tr 其中:A为关系r的属性集合。注意:投影是从列的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行) *26投影(A(r) )示例在数据库ScoreDB中,查找所有学生的姓名和民族 。 studentName, nation(Student) 提问: nation(Student) 在数据库ScoreDB中,查找所有“蒙古族”学生的姓名和籍贯。StudentName nation 李小勇李小勇 汉族汉族 王红王红 汉族汉族 王宏冰王宏冰 蒙古族蒙古族 刘方晨刘方晨 傣族傣族 王红敏王红敏 蒙古族蒙古族

10、StudentName native 王宏冰王宏冰 太原太原 王红敏王红敏 上海上海studentName, native(nation=蒙古族(Student)*27l 连接也称为连接。记为A op B,其中A、B分别为关系r和s中的度数相等且可比度数相等且可比的连接属性集连接属性集,op为比较运算符。 l 连接是从两个关系的笛卡尔积两个关系的笛卡尔积中选取连接属性间满足谓词的所有元组。记作 : r s = trts trrtss(r.A op s.B) l连接运算就是从关系r和s的笛卡尔积rs中,选取r关系在A属性集上的值值与s关系在B属性集上的值值满足连接谓词的所有元组,即 r s =

11、3.4 连接())(sr)(sr*28 几种连接l一般连接一般连接:不是等值比较谓词的连接运算(较少用)。l等值连接等值连接(equijoin) :为等值比较谓词的连接运算。l自然连接自然连接(natural join):l一种特殊的等值连接l两个参与连接的关系具有公共的属性集具有公共的属性集,并在这个公共属性集上进行等值连接;l将连接结果中的重复属性列去除掉重复属性列去除掉,即在公共属性集中的列只保留一次。 )(sr*29一般的连接操作是从行的角度进行运算。 自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。 ABRS*30示例关系R和关系S 如下所示:*31公共属性:B*32一般

12、连接 R S的结果: CE *33 等值连接 R S 的结果:R.B=S.B *34 自然连接 R S的结果如下: 取消重复列外连接(参见教材B,p59例子)对于连接R S 外连接:把舍弃的元组也保存在结果关系中,在其他属性上填空值(null)。左外连接:保留左边关系R中要舍弃的元组。右外连接:保留右边关系S中要舍弃的元组。*35*36上例中关系R和关系S的外连接 上例中关系R和关系S的左外连接和右外连接 *37综合示例在数据库ScoreDB中,查找所有2008级的“蒙古族”学生的姓名 StudentName 王红敏王红敏 分析:分析: nation=蒙古族蒙古族(Student)可以找到所有

13、蒙古族学生的情况,但关系可以找到所有蒙古族学生的情况,但关系Student中中没有年级的信息,因此没有年级的信息,因此必须必须将关系将关系Student与关系与关系Class关联起来。关联起来。 根据模式导航图可知,根据模式导航图可知,关系关系Student与关系与关系Class可通过外码可通过外码classNo关联起来,关联起来,这种外码引用关系可通过自然连接表示这种外码引用关系可通过自然连接表示 Student Class =Student.classNo=Class.classNo(StudentClass) 最后的查询可表达为:最后的查询可表达为: studentName(nation

14、=蒙古族蒙古族(Student) grade=2008(Class) *38注意:在关系代数中,对同一个查询问题,可用多种方式来表达!*39studentName(nation=蒙古族(Student) grade=2008(Class) =studentName(Student.classNo=Class.classNo(nation=蒙古族(Student)grade=2008(Class) =studentName(Student.classNo=Class.classNo(nation=蒙古族grade=2008(StudentClass)=studentName(nation=蒙古族

15、grade=2008Student.classNo=Class.classNo(StudentClass) =studentName(nation=蒙古族grade=2008(Student.classNo=Class.classNo(StudentClass) =studentName(nation=蒙古族grade=2008(Student Class) *40主要的关系代数运算*41符号(名称)符号(名称)示例和要点示例和要点 (选择)nation=蒙古族(Student) 返回关系中符合选择条件P的行(投影)studentName, nation(Student)输出关系特定属性的所有

16、行,消除重复列 (自然连接)Student Class两个参与连接的关系具有公共的属性集;在这个公共属性集上进行等值连接;去掉连接结果中的重复属性列。(笛卡尔积)StudentClassrs = trts trrtss (并)studentN0(Student) studentN0(Score)两个关系具有相同的属性集,合并元组,去掉重复元组3.5 除()概念:象集概念:象集给定一个关系R(X,Z),X和Z为属性组 当tX=x时,x在R中的像集像集(Images Set)为: Zx= tZ | t R,tX=x 它表示R中属性组X上值为x的元组在Z上分量的集合。)(sr*42象集示例*43例:

17、R(A,B,C)如下 A B C a1 b1 c2 a2 b3 c7 a3 b4 c6 a1 b2 c3 a4 b6 c6 a2 b2 c3 a1 b2 c1 R上属性集A的值为a1的像集为:( b1, c2 ),( b2, c3),( b2, c1)除运算设关系r(R)和s(S),属性集S是R的子集子集,即SR,则关系rs是关系r中满足下列条件的元组在属性集R-S上的投影: trr,记 x= trR-S,则关系r中属性集R-S的取值的取值x的象集的象集Sx包含包含关系s。记作 rs = trR-S tr rs Sx *44除操作是同时从行行和列列角度进行运算 RS*45除法示例例1 Scor

18、e(courseNo(courseNo=AC001(Course) StudentNoterm score0701008 07081 760703010 07081 920703045 07081 520703045 08091 940802002 08091 980802005 09101 88Score关系关系StudentNo courseNoterm score0701001CN02807081850701001CS01207082880701001CS01508091920701008AC00107081760701008CN02807081860701008CS0120708293

19、0701008CS01508091960703010AC00107081920703010CN02807081830703010CS01207082730703045AC00107081520703045AC00108091940703045 CN028 07081 800703045 CS015 08091 820802002AC00108091980802002CN02808091720802002CS01509101850802005AC00109101880802005CS01208092900802005CS0150910187courseNoAC001courseNoCN028例2

20、Score(courseNo(courseNo=CN028(Course)StudentNoterm score0701001 07081 850701008 07081 860703010 07081 830703045 07081 800802002 08091 72Score关系关系StudentNo courseNoterm score0701001CN02807081850701001CS01207082880701001CS01508091920701008AC00107081760701008CN02807081860701008CS01207082930701008CS0150

21、8091960703010AC00107081920703010CN02807081830703010CS01207082730703045AC00107081520703045AC00108091940703045 CN028 07081 800703045 CS015 08091 820802002AC00108091980802002CN02808091720802002CS01509101850802005AC00109101880802005CS01208092900802005CS0150910187 需要查找修读过信息学院开设的所有课程的学生学号,如何表达查询? )(sr分析:查

22、找出修读过信息学院课程的所有学生 r1 = studentNo, courseNo(courseNo LIKE CS%(Score) 找出信息学院开设的所有课程 r2 = courseNo(courseNo LIKE CS%(Course) StudentNo courseNo0701001CS0120701001CS0150701008CS0120701008CS0150703010CS0120703045 CS015 0802002CS0150802005CS0120802005CS015CourseNo CS012 CS015例3*48)(sr 比较图2-20(a)和(b) ,修读过信息

23、学院开设的所有课程的学生 就是关系r1中满足“courseNo列包含关系r2的所有行”的那些学生 。*493.6 构造关系代数表达式的步骤 明确该查询涉及到哪些属性; 明确该查询涉及到哪些关系; 根据数据库模式导航图,通过多对一联系(或一对多联系)把所有涉及的关系连接起来,每一个多对一联系(或一对多联系)都可以表示为外码属性的自然连接。 *50小结:关系代数的运算符 集合运算符集合运算符比较运算符比较运算符逻辑运算符逻辑运算符专门的关系运算专门的关系运算符符 - *51*524.1 关系数据模型的完整性约束关系的完整性约束条件 包含三个方面:*531)实体完整性若属性集A是关系r的主码,则A不

24、能取空值null。 例如,关系Student,由于studentNo是关系Student的主码,因此它在任何时候的取值都不能为空值null其他属性如birthday、speciality等可以取空值,表示当时该属性的值未知或不存在。 如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性的值都不能取空值。 例如,学生成绩管理数据库ScoreDB中的关系Score,它的主码是studentNo, courseNo,因此这2个属性都不能取空值。 *542)参照完整性设F是关系r的一个属性(或属性集),Ks是关系s的主码。如果F与Ks相对应,则称F是关系r参照关系s的外码(foreign ke

25、y),简称F是关系r的外码。并称关系r为参照关系,关系s为被参照关系或目标关系。 若属性(或属性集)F是关系r的外码,它与关系s的主码Ks相对应,则对于关系r中的每一个元组在属性F上的取值要么为空值null,要么等于关系s中某个元组的主码值。 *55举例:u 多对一联系的属性引用 学生成绩管理数据库ScoreDB中,学生关系Student与班级关系Class之间存在多对一的“归属”联系。 u 多对多联系的联系关系及属性引用 学生成绩管理数据库ScoreDB中,假设每一个学生一个学期可以选修若干门课程,每一门课程同时有若干个学生选修,那么学生关系Student与课程关系Course之间存在多对多

26、的“选修”联系,且课程的开课学期term和修读成绩score为联系属性。 u 关系内部属性间的引用联系 学生成绩管理数据库ScoreDB中,假设一门课程可能存在先修课程,且关系Course中的priorCourse属性用来存放先修课程的课程编号。课程关系Course中的priorCourse属性需要引用课程关系Course的主码“课程编号”courseNo。 Class( classNo, className, institute, grade, classNum ) Student( studentNo, studentName, sex, birthday, native, nation,

27、 classNo )实现“多对一”联系的属性引用1n Student( studentNo, studentName, sex, birthday, native, nation, classNo ) Score( studentNo, courseNo, term, score ) Course( courseNo, courseName, creditHour, courseHour, priorCourse )实现“多对多”联系的联系关系及属性引用mnCourse( courseNo, courseName, creditHour, courseHour, priorCourse )实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论