《数据库设计与开发北邮软件学院研究生讲义.pptx》由会员分享,可在线阅读,更多相关《数据库设计与开发北邮软件学院研究生讲义.pptx(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义1.21.2关系代数关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类;集合运算符、专门的关系运算符、算术比较符和逻辑运算符。关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。其中传统的集合运算将关系看成元组的集合,其运算是从关系的“水平”方向即行的角度来进行。而专门的关系运算不仅涉及行而且涉及列。比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的。第1页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义关系代数运算符运算符 符号 含义 键盘格式 示例 集合运算符
2、并 UNION RS,或 R UNION S 交 INTERSECTRS,或 R INTERSECT S -差 MINUS R-S,或 R MINUS S 乘 TIMES RS,或 R TIMES S 专门 关系运算符 选择 R where C 姓名=“张三”(S)或S where 姓名=张三 投影 R 考号,姓名(S)或S考号,姓名 连接 JOIN RS,或R JOIN S 除 DIVIDEBY RS,或R DIVIDEBY S 关系代数中,这些运算经有限次复合后形成的式子称为关系代数表达式。第2页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义传统的集合运算传统的集合
3、运算是二目运算,包括并、差、交、广义笛卡尔积。定义设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则可以定义并、差、交运算如下:并(Union)(Union):关 系 R与 关 系 S的 并 记 作:RS=t|tRtS 其结果仍为n目关系,由属于R或属于S的元组组成。差(Difference)(Difference):关系R与关系S的差记作:RS=t|tRt!S 其结果仍为n目关系,由属于R而不属于S的所有元组组成。第3页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义传统的集合运算交(Intersection)(Intersectio
4、n):关系R与关系S的交记作:RS=t|tRtS 其结果仍为n目关系,由既属于R又属于S的元组组成。关系的交可以用差来表示,即RS=R-(R-S)。广 义 笛 卡 尔 积(Extended(Extended Cartesian Cartesian Product)Product):两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1k2个元组。记作:RS=trts|trRtsS 第4页/共33页北京邮电大学软件学院郭文明2003.06数据库设
5、计与开发讲义传统集合运算举例 R A B C a1 b1 c1 a1 b2 c2 a2 b2 c1 RS A B C a1 b1 c1 a1 b2 c2 a2 b2 c1 a1 b3 c2 S A B C a1 b2 c2 a1 b3 c2 a2 b2 c1 RS A B C a1 b2 c2 a2 b2 c1 第5页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义传统集合运算举例 R A B C a1 b1 c1 a1 b2 c2 a2 b2 c1 R-S A B C a1 b1 c1 RS A B C A B C a1 b2 c1 a1 b2 c2 a1 b2 c1
6、a1 b3 c2 a1 b2 c1 a2 b2 c1 a1 b2 c2 a1 b2 c2 a1 b2 c2 a1 b3 c2 a1 b2 c2 a2 b2 c1 a2 b2 c1 a1 b2 c2 a2 b2 c1 a1 b3 c2 a2 b2 c1 a2 b2 c1 S A B C a1 b2 c2 a1 b3 c2 a2 b2 c1第6页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义专门的关系运算专门的关系运算包括选择、投影、连接、除等。为了叙述上的方便,先引入几个常用记号。设关系模式为R(Al,A2,An)。它的一个关系设为R。tR表示t是R的一个元组。tAi则表
7、示元组t中相应于属性Ai的一个分量。若A=Ai1,Ai2,Aik,其中Ail,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列。第7页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义专门的关系运算R为n目关系,S为m目关系。trR,tsS,trts称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。给定一个关系R(X,Z),X和Z为属性组。定义tX=x时,x在R中的象集(Images Set)为:Zx=tZtR,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合。第8页/共33页北京邮电大学软件学院
8、郭文明2003.06数据库设计与开发讲义学生-课程数据库S 学生表 学号 姓名 性别 年龄 所在系 Sno Sname Ssex Sage Sdept 2000101 张明 男 19 CS 2000102 李华 女 20 IS 2000103 王强 男 18 MA 2000104 秦永 男 19 CSC 课程表 课程号 课程名 学分 Cno Cname Ccredit 1 数据库 3 2 数学 4 3 信息系统 3 4 操作系统 3SC 学生选课表 学号课 程号 成绩 Sno Cno Grade 200101 1 92 200101 2 85 200101 3 88 200102 2 90 2
9、00102 3 80第9页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义选择(Selection)(Selection)定义选择 选择又称为限制(Restriction),它是在关系R中选择满足给定条件的诸元组,记作:F(R)=ttRF(t)=真 其中F表示选择条件,它是一个逻辑表达式,取逻辑值真或假。逻辑表达式F由逻辑运算符,连接各算术表达式组成。算术表达式的基本形式为:X1Y1,其中表示比较运算符,它可以是、=19 and Sage=20 第11页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义投影(Projection)(Projection
10、)定义投影 关系R上的投影是从R中选择出若干属性列组成新的关系,是对关系的垂直分解。记作:A(R)=tA|tR 其中A为R中的属性列集合。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。第12页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义投影(Projection)(Projection)例3 3 查询学生的姓名和所在系。Sname,Sdept(S)或 2,5(S)或 SSname,Sdept例4 4 查询学生关系Student中都有哪些系。Sdept(S)或 SSdept第13页/共33页
11、北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义连接(Join)(Join)定义连接 连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:RS=trts|trRtsStrAtsB AB 其中A和B分别为R和S上度数相等且可比的属性组。是比较运算符。连接运算的结果是从R和S的广义笛卡尔积RS中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系的元组。第14页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义连接(Join)(Join)连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equijoin),另一种是自然连接(
12、Naturaljoin)。另外还有外连接、左连接、右连接等。为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组.自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。第15页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义外连接定 义 外 连 接 表 R(A1,A2,An,B1,B2,Bk)和 S(B1,B2,Bk,C1,C2,Cm)的外连接RoS,行t属于表RoS,如果下列情况之一发生:1)可连接的行u,v分别在R和S中,有uBi=vBi(0
13、=iB2 S o 外连接 OUTER JOIN R o S Lo 左连接 LOUTER JOIN R Lo S Ro 右连接 ROUTER JOIN R Ro S 第18页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义连接运算举例RA B C a1 b1 5 a1 b2 6a2 b3 8a2 b4 12 S B E b1 3 b2 7 b3 10 b3 2 b5 2 连接R CE S A R.B C S.B Ea1 b1 5 b2 7a1 b1 5 b3 10a1 b2 6 b2 7a1 b2 6 b3 10a2 b3 8 b3 10 等值连接R R.B=S.B S A
14、 R.B C S.B E a1 b1 5 b1 3a1 b2 6 b2 7a2 b3 8 b3 10a2 b3 8 b3 2 自然连接RSA B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2第19页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义连接运算举例RA B C a1 b1 5 a1 b2 6a2 b3 8a2 b4 12 S B E b1 3 b2 7 b3 10 b3 2 b5 2 外连接R o SA B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2a2 b4 12 nullnull b5
15、 null 2 左连接R Lo S A B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2a2 b4 12 null右连接R Ro SA B C Ea1 b1 5 3a1 b2 6 7a2 b3 8 10a2 b3 8 2null b5 null 2第20页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义除(Division)(Division)定义除给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R 中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在
16、X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:RS=trX|trRy(S)Yx 其中Yx为x在R中的象集,x=trX。第21页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义除(Division)(Division)除操作是同时从行和列角度进行运算。除运算是乘运算的逆运算,给定两个表T和S,如果表R是通过R=TS定义的,那么有T=RS成立。在这个意义上可解释为什么称作除运算。第22页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义除运算举例 RA B Ca1 b1 c2a2 b3 c7a3 b4 c6a1 b2 c3a4
17、 b6 c6a2 b2 c3a1 b2 c1SB C Db1 c2 d1b2 c1 d1b2 c3 d2RSAa1第23页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义除运算举例 在关系R中,A可以取四个值a1,a2,a3,a4。其中:a1的象集为(b1,c2),(b2,c3,),(b2,c1)a2的象集为(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.第24页/共33页北京邮电大学软件学院郭文明200
18、3.06数据库设计与开发讲义除运算举例 R1)给出S,求得 T=RS。注意:TS都在R中。S T 2)给出S,求得 T=RS。注意:TS都在R中。S T3)给出S,求得 T=RS。注意:TS都在R中。S T4)给出S,求得 T=RS。注意:TS都在R中。S TABCa1b1c1a2b1c1a1b2c1a1b2c2a2b1c2a1b2c3a1b2c4a1b1c5Cc1ABa1b1a2b1a1b2Cc1c2ABa1b2a2b1Cc1c2c3c4ABa1b2BCb1c1Aa1a2第25页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义关系代数综合例子以下例子建立在下面CAP数据
19、库上。C顾客 cid cname city discnt c001 李广 天津 10.00 c002 王开基 北京 12.00 c003 安利德 北京 8.00 c004 曹士雄 天津 8.00 c006 曹士雄 广州 0.00P商品pid pname city quantity price p01 梳子 天津 111400 0.50 p02 刷子 成都 203000 0.50 p03 刀片 西安 150600 1.00 p04 钢笔 西安 125300 1.00 p05 铅笔 天津 221400 1.00 p06 文件夹 天津 123100 2.00 p07 盒子 成都 100500 1.0
20、0 A代理 aid aname city percent a01 史可然 北京 6 a02 韩利利 上海 6 a03 杜不朗 成都 7 a04 甘瑞 北京 6 a05 敖斯群 武汉 5 a06 史可然 天津 5O订单ordno month cid aid pid qty dollars 1011 01 c001 a01 p01 1000 450.00 1012 01 c001 a01 p01 1000 450.00 1019 02 c001 a02 p02 400 180.00 1017 02 c001 a06 p03 600 540.00 1018 02 c001 a03 p04 600 5
21、40.00 1023 03 c001 a04 p05 500 450.00 1022 03 c001 a05 p06 400 720.00 1025 04 c001 a05 p07 800 720.00 1013 01 c002 a03 p03 1000 880.00 1026 05 c002 a05 p03 800 704.00第26页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义关系代数综合例子例1查询所有定购了至少一个价值为0.50的商品的顾客的名字。cname(pid(price=0.50(P)O)C)例2找出全部没有在代理商a03处订购商品的顾客cid值。ci
22、d(O)cid(aid=a03(O)或 cid(C)cid(aid=a03(O)例3找出只在代理商a03处订购商品的顾客。cid(O)cid(aida03(O)第27页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义关系代数综合例子例4找出没有被任何一个在北京的顾客通过在上海的代理商订购的所有商品。在北京的顾客通过在上海的代理商订购的商品:pid(cid(city=北京(C)O)city=上海(A)从所有商品中剔除以上商品:pid(P)pid(cid(city=北 京(C)O)city=上海(A)例5找出订购了所有价格为0.50的商品的顾客名字。cname(cid,pid
23、(O)pid(price=0.50(P)C)例6找出订购所有被任何人订购过一次的商品的顾客cid。cid,pid(O)pid(O)例7找出所有接到至少顾客c004订购的商品集合的订单的代理商的aid。aid,pid(O)pid(cid=c004(O)第28页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义关系代数综合例子例8找出订购了p01和p07这两种商品的顾客的cid。错误cid(pid=p01andpid=p07(O)错误cid(pid=p01orpid=p07(O)正 确 cid(pid=p01(O)cid(pid=p07(O)例9找出从至少一个接受订购商品p03
24、订单的代理商处订购过商品的顾客cid。解题思路:cid(aid(pid=p03(O)O)订购商品p03的代理商从这些代理商处订购商品的顾客p03第29页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义关系代数综合例子例10 找出所有具有和在北京和天津的顾客相同的折扣率的顾客的cid。本题可理解为:找出那些具有和在北京和天津的顾客相同的折扣率的顾客的cid。在北京和天津的顾客的所有折扣率:discnt(city=北京 or city=天津(C)所以有:cid(discnt(city=北京 or city=天津(C)C)第30页/共33页北京邮电大学软件学院郭文明2003.0
25、6数据库设计与开发讲义例11列出通过以下代理商订购的商品的pid:代理商从以下的顾客处接受订单,而这些顾客从一个接受过顾客c001订单的代理商处订购了至少一个商品。接受顾客c001订单的代理商:aid(cid=c001(O)从这些代理商处订购过商品的顾客:cid(aid(cid=c001(O)O)从这些顾客处接受过订单的代理商:aid(cid(aid(cid=c001(O)O)O)通过上述代理商订购的商品pid:pid(aid(cid(aid(cid=c001(O)O)O)O)关系代数综合例子第31页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义作业:1.如果关系R和S没有共同的列属性,根据定义说明表RS等于表RS。2.对CAP数据库,用关系代数完成下列查询。1)找出顾客、代理商和商品都在同一个城市的三元组(cid,aid,pid)。2)找出顾客、代理商和商品两两不在同一个城市的三元组(cid,aid,pid)。3)列出所有在同一个城市代理商的aid对。4)找出折扣率最大和最小的顾客cid。5)取出销售过所有曾被顾客c002订购过的商品的代理商的 名字。6)找出只从一家代理商处订购过商品的顾客cid。第32页/共33页北京邮电大学软件学院郭文明2003.06数据库设计与开发讲义感谢您的观看!第33页/共33页
限制150内