2020年1月20日星期一攀枝花学院计算机学院第3章关系数据库(二)数据库原理2020年1月20日星期一攀枝花学院计算机学院例:E_R图在商店管理系统中,商店有商店编号、商店名、地址、电话等属性,顾客有顾客编号、姓名、地址、年龄、性别等属性,商品有商品编号、商品名、生产厂家等属性。管理方式是:一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次。一个商店销售多种商品,一种商品可以多个商店销售,每个商店对每种商品有一个销售价格。(1)画出E-R图,并注明属性和联系类型。(2)将该E-R图转换成关系模型。数据库原理2020年1月20日星期一攀枝花学院计算机学院数据库原理2020年1月20日星期一攀枝花学院计算机学院关系模型(用“”表示主码,用“”表示外码。):商店(商店编号、商店名、地址、电话)顾客(顾客编号、姓名、地址、年龄、性别)商品(商品编号、商品名、生产厂家)消费(商店编号,顾客编号,消费金额,日期)销售(商店编号,商品编号,价格)数据库原理2020年1月20日星期一攀枝花学院计算机学院3.4关系代数关系代数是关系操作及SQL语言的基础。关系代数的运算对象是一个或两个关系,运算的结果产生一个新关系。关系代数包括:•传统的集合运算:并、交、差和广义笛卡尔积。•专门的关系运算:选择、投影、连接和除等。关系运算符:P60数据库原理2020年1月20日星期一攀枝花学院计算机学院(1)设有关系模式R(A1,A2…,An):r∈R:表示r是R的一个元组;r.Ai或r[Ai]:表示r这个元组中相应于属性Ai的一个分量。3.4.1几个专门的符号表示数据库原理2020年1月20日星期一攀枝花学院计算机学院(2)设R为m元关系,S为n元关系,并且r=(r1,r2,….rm)∈R,s=(s1,s2,….sn)∈S,则rs=(r1,r2,….rm,s1,s2,….sn)称元组的连串,它是一个(m+n)元组,其中前m个分量为R中的一个m元组,后n分量为S中的一个n元组。(3)设有关系模式R(X,Y),其中X、Y可以是单个属性,也可以是属性集,定义当X取值为x时,x在R中的映象集为:Yx={r.Y|r∈R∧r.X=x}数据库原理2020年1月20日星期一攀枝花学院计算机学院如图把成绩关系命名为R,X为属性学号,Y属性集{课程号,成绩},当X值为s0201109时:Yx={(c140,76),(c150,80),(c160,90)}学号课程号成绩s0201101c11090s0201101c12087s0201102c11080s0201102c15066s0201103c13094s0201103c14050s0201104c11076s0201105c12082s0201105c14070s0201106c11086s0201106c15080s0201107c13090s0201108c11060s0201108c14086s0201109c14076s0201109c15080s0201109c16090s0201110c12078s0201110c14072s0201110c16090数据库原理2020年1月20日星期一攀枝花学院计算机学院传统的集合运算是二目运算,包括并、交、差和集合的广义笛卡尔积四种运算。1、并、交、差、广义的笛卡尔积四种运算设关系R和关系S均是n元关系,且相应的属性取自同一个域,则并、交、差、笛卡尔积四种运算定义如下:并运算:由属于R或属于S的元组组成,记作R∪S。交运算:由既属于R又属于S的元组组成,记作R∩S。差运算:属于R而不属于S的所有元组组成,记作R-S。并、交、差运算的结果仍为n元关系笛卡尔积:如果R是m元关系,有k个元组,S是n元关系,有L个元组,则广义的笛卡尔积是一个m+n元关系,有k*L个元组,记作R*S3.4.2传统的集合运算数据库原理2020年1月20日星期一攀枝花学院计算机学院例:有关系R和S如下表,求R∪S、R∩S、R-SRSabcabc123123456101112789789(a)(b)数据库原理2020年1月20日星期一攀枝花学院计算机学院R∪SR∩Sabcabc123123456789789101112R-Sabc456数据库原理2020年1月20日星期一攀枝花学院计算机学院ABA1B1A2B2CDEC1D1E1C2D2E2E1D1C1B2A2E2D2C2B1A1E2D2C2B2A2E1D1C1B1A1EDCBAR×SRS2、集合的广义笛卡尔积:设关系R是M元关系并有K个元组、关系S是N元关系并有L个元组,则广义笛卡尔积R×S是一个(M+N)元关系,有K×L个元组。记作:R×S={rs|r∈R,s∈S}数据库原理2020年1月20日星期一攀枝花学院计算机学院1、选择运算是对关系的水平分解,即从关系R中选择满足某些逻辑条件的元组形成一个新的关系。记作:σF(R)={r|r∈R∧F}R是关系名,r是元组,σ是选择运算符,F是逻辑表达式其基本形式为:X1qY1[Φx2qy2]…其中:q可以是、=、、=、=或等比较运算符。X1、Y1等可以是属性名(序号)、常量或简单函数。Φ可以是┐、∧或∨等逻辑运算符。选择运算是从行的角度,选择使F为真的记录组成新的关系3.4.3专门的关系运算数据库原理2020年1月20日星期一攀枝花学院计算机学院例:设有一个学生关系S如下表所示。学号姓名性别年龄所在系000101李晨男18信息系000102王博女19数学系010101刘思思女18信息系010102王国美女20物理系020101范伟男19数学系数据库原理2020年1月20日星期一攀枝花学院计算机学院【例1】查询数学系学生的基本信息。σ所在系=‘数学系’(S)或σ5=‘数学系’(S)所得新关系如下表所示:学号姓名性别年龄所在系000102王博女19数学系020101范伟男19数学系属性所在的序号数据库原理2020年1月20日星期一攀枝花学院计算机学院【例2】查询年龄20的数学系的学生的信息。σ(年龄20)∧(所在系=‘数学系’)(S)所得新关系如下表所示:学号姓名性别年龄所在系020101范伟男19数学系000102王博女19数学系数据库原理2020年1月20日星期一攀枝花学院计算机学院2、投影运算是对关系的垂直分解,关系R上的投影是从R中选择出若干属性列组成新的关系。是从列的角度进行的运算。记作:πA(R)={r.A|r∈R}投影操作应取消重复行。因此,投影运算要进行以下两步工作:(1)选择所指定的属性列形成一个新表格(2)去掉重复行形成新关系。数据库原理2020年1月20日星期一攀枝花学院计算机学院【例3】查询学生的学号和姓名。π学号,姓名(S)或π1,2(S)结果如下表所示:引用列号学号姓名000101李晨000102王博010101刘思思010102王国美020101范伟数据库原理2020年1月20日星期一攀枝花学院计算机学院选择和投影的综合应用例:查询年龄20的学生的学号和姓名。π学号,姓名(σ年龄20(S))结果如下表所示:学号姓名000101李晨000102王博010101刘思思020101范伟数据库原理2020年1月20日星期一攀枝花学院计算机学院在两个关系的广义笛卡尔积中取满足一定条件的元组形成新的关系。(1)不相等连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。一般表示为:={rs|AiR∧BjS∧AiBj}连接后的所有元组满足RaiSbj,:比较运算符Ai、Bj:分别是R和S中的属性组。参与连接的属性通常也称作连接属性。3、连接AiBjS数据库原理2020年1月20日星期一攀枝花学院计算机学院(2)等值连接:θ为“=”的连接运算,选择RA=SB的所有元组(3)自然连接:等值连接中,如果A、B是相同的属性组,就可以在结果中把重复的属性去掉。这种去掉了重复属性的等值连接称为自然连接。自然连接所完成的工作(三件事情):计算R×S;选择满足条件r[Ai]=s[Bj]的所有元组;去掉重复的属性。数据库原理2020年1月20日星期一攀枝花学院计算机学院例:已知有关系R和S如下表所示,其各种连接运算如下图所示数据库原理2020年1月20日星期一攀枝花学院计算机学院10b38b3a210b36b2a17b26b2a110b35b1a17b25b1a1ES.BCR.BA不相等连接SR.CS.E数据库原理2020年1月20日星期一攀枝花学院计算机学院等值连接2b38b3a210b38b3a27b26b2a13b15b1a1ES.BCR.BAR.B=S.BS数据库原理2020年1月20日星期一攀枝花学院计算机学院例:自然连接(Naturaljoin)ABCa1b1c1a2b2c2a3b3c3RBEb13b25SABCEa1b1c13a2b2c25S数据库原理2020年1月20日星期一攀枝花学院计算机学院除运算给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X属性列上分量值x的象集YX包含S在Y上投影的集合。记作:RS={tr[X]trRy(S)Yx}其中Yx为x在R中的象集,x=tr[X]。数据库原理2020年1月20日星期一攀枝花学院计算机学院象集(ImageSet)关系R(X,Y),X,Y是属性组,x是X上的一个取值,定义x在R中的象集为:Yx={t[Y]|tRt[X]=x}即:从R中选出在X上取值为x的元组,去掉X上的分量,只留Y上的分量,得到x在关系R中的象集Yx。x=张立XY化学张立数学王红物理张立课程姓名张立同学所选修的全部课程可以得到每个学生的选修课程Yx物理化学课程数据库原理2020年1月20日星期一攀枝花学院计算机学院除运算SNOSNAMECNOCNAMES1BAOC1DBS1BAOC2OSS1BAOC3DSS1BAOC4MISS2GUC1DBS2GUC2OSS3ANC2OSS4LIC2OSS4LIC4MIS关系R(r元)关系S(s元)CNOCNAMEC2OSSNOSNAMES1BAOS2GUS3ANS4LIR÷S(r-s元)数据库原理2020年1月20日星期一攀枝花学院计算机学院除法的直观计算:SNOSNAMECNOCNAMES1BAOC1DBS1BAOC2OSS1BAOC3DSS1BAOC4MISS2GUC1DBS2GUC2OSS3ANC2OSS4LIC2OSS4LIC4MIS关系R(r元)关系S(s元)CNOCNAMEC2OSC4MISSNOSNAMES1BAOS4LIR÷S(r-s元)在R中选出同时包含S所有分量的元组,R中去掉与S相同的分量,只留剩下的分量数据库原理2020年1月20日星期一攀枝花学院计算机学院应用实例例:教学数据库的关系模式学生关系:S(S#,SNAME,AGE,SEX)学习关系:SC(S#,C#,GRADE)课程关系:C(C#,CNAME,TEACHER)①检索学习课程号为C2课程的学生学号和成绩πS#,GRADE(σC#=‘C2’(SC))或写序号:π1,3(σ2=‘C2’(SC))②检索学习课程号为C2课程的学生学号与姓名πS#,SNAME(σC#=‘C2’(SSC))因为涉及到两个关系S和SC,需对这两个关系进行自然联接操作(并掉相同字段S#)数据库原理2020年1月20日星期一攀枝花学院计算机学院应用实例例:教学数据库的关系模式学生关系:S(S#,SNAME,AGE,SEX)学习关系:SC(S#,C#,GRADE)课程关系:C(C#,CNAME,TEACHER)③检索选修课程名为MATHS的学生学号与姓名πS#,SNAME(σCNAME=‘MATHS’(SSCC))④检