关系数据库系统是支持关系模型的数据库系统关系模型的组成关系数据结构关系操作集合关系完整性约束2.3关系操作关系操作集合①常用的关系操作②关系操作的特点③关系数据语言的分类④关系数据语言的特点①常用的关系操作关系模型中常用的关系操作的分类数据查询操作(DataQuery)选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。数据更新操作(DataChange)插入(Insert)、删除(Delete)、修改(Update)基本操作:选择、投影、并、差、笛卡尔积是5种基本操作,其他操作是可以用基本操作来定义和导出的。②关系操作的特点集合操作方式,即操作的对象和结果都是集合“以集合为中心”,“一个集合,施加一个操作得到另一个集合,依次施加关系代数操作,进而得到所需结果”非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式:按文件名访问,按记录进行存取③关系数据语言的分类关系代数语言(relationalalgebra)用对关系的运算来表达查询要求典型代表:ISBL关系演算语言(relationalcalculus)用谓词来表达查询要求元组关系演算语言谓词变元的基本对象是元组变量典型代表:APLHA、QUEL域关系演算语言谓词变元的基本对象是域变量典型代表:QBE具有关系代数和关系演算双重特点的语言典型代表:SQL(StructuredQueryLanguage)关系数据语言的分类关系数据语言关系代数语言ISBL关系演算语言具关系代数与关系演算双重特点的语言SQL域演算语言QBE元组演算语言ALPHA关系数据语言的简介ISBL语言(InformationSystemBaseLanguage)IBM公司英格兰底特律科学中心1979年研制的用在一个实验系统PRTV(PeterleeRelationalTestVehicle)上ISBL语言与关系代数非常接近,每个查询语言都近似于一个关系代数表达式QUEL语言(QueryLanguage)是美国伯克利加州大学研制的关系数据库系统INGRES的查询语言1975年投入运行,并由美国关系技术公司研制成商品推向市场QUEL语言是一种基于元组关系演算的并具有完整性的数据定义、检索、更新等功能的数据语言关系数据语言的简介(续)QBE语言(QueryByExample,按例查询)QBE语言是一种特殊的屏幕编辑语言QBE语言是M.M.Zloof提出的,在约克镇IBM高级研究实验室为图形显示终端用户设计的一种域演算语言1978年在IBM370上实现QBE使用起来很方便,属于人机交互语言,用户可以是缺乏计算机知识和数学基础的非程序用户QBE的思想已经渗入到许多DBMS中SQL语言(StructuredQueryLanguage)SQL语言是介于关系代数和元组演算之间的一种查询语言现已成为关系数据库的标准语言④关系数据语言的特点关系语言是一种高度非过程化的语言存取路径的选择由RDBMS的优化机制来完成用户不必用循环结构就可以完成数据操作能够嵌入高级语言中使用关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价概述关系代数是一种抽象的查询语言用对关系的运算来表达查询关系代数运算的三个要素运算对象:关系运算结果:关系运算符:四类关系代数运算符2.4关系代数四类关系代数运算符集合运算符将关系看成元组的集合运算是从关系的“水平”方向即行的角度来进行专门的关系运算符不仅涉及行而且涉及列比较运算符辅助专门的关系运算符进行操作的逻辑运算符辅助专门的关系运算符进行操作的关系代数(续)四类关系代数运算符(续)集合运算符:∪(并)、-(差)、∩(交)、×(广义笛卡尔积)专门的关系运算符:σ(选择)、∏(投影)、(连接)、÷(除)比较运算符:(大于)、≥(大于等于)、(小于)、≤(小于等于)、=(等于)、≠(不等于)逻辑运算符:∧(与)、∨(或)、┐(非)关系代数(续)关系运算的分类:分为传统的集合运算和专门的关系运算传统的集合运算是二目运算,是在两个关系中进行的。但是并不是任意的两个关系都能进行这种集合运算,而是要在两个满足一定条件的关系中进行运算。那么,对关系有什么要求呢?设给定两个关系R、S,若满足:(1)具有相同的目n(即两个关系都有n个属性);(2)R中第i个属性和S中第i个属性必须来自同一个域。则说关系R、S是相容的。除笛卡尔积外,要求参与集合运算的关系必须满足上述的相容性定义。传统的集合运算1.并(Union)—基本运算R∪S仍为n目关系,由属于R或属于S的元组组成记作:R∪S={t|tR∨tS}传统的集合运算(续)关系中元组的插入2.差(Difference)—基本运算R-S仍为n目关系,由属于R而不属于S的元组组成记作:R-S={t|tR∧tS}传统的集合运算(续)关系中元组的删除3.交(Intersection)—非基本运算R∩S仍为n目关系,由既属于R又属于S的元组组成记作:R∩S={t|tR∧tS}交运算可以用差运算来表示R∩S=R-(R-S)=S-(S-R)传统的集合运算(续)分别求出关系R与关系S的并、差、交运算。ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSABCa1b1c1a1b2c2a1b3c2a2b2c1R∪SABCa1b1c1R-SABCa1b2c2a2b2c1R∩S4.广义笛卡尔积(ExtendedCartesianProduct)—基本运算两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组。记作:R×S={|trR∧tsS}广义笛卡尔积可用于两关系的连接操作。传统的集合运算(续)trts两个关系的归并ABCa1b1c1a1b2c2a2b2c1R.AR.BR.Ca1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR×SS.AS.BS.Ca1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1求出关系R与关系S的广义笛卡尔积。广义笛卡尔积实例讲解表示记号(1)R,tR,t[Ai]设关系模式为R(A1,A2,…,An),它的一个关系设为R。tR表示t是R的一个元组;t[Ai]则表示元组t中相应于属性Ai的一个分量。专门的关系运算表示记号(续)(2)A,t[A],A若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或域列。t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。专门的关系运算(续)表示记号(续)(3)trtsR为n目关系,S为m目关系。trR,tsS,trts称为元组的连接或元组的串接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。专门的关系运算(续)学号姓名年龄9801黄林199802李红209803张英21…………….9830王刚20例:t[学号]--R中学号上的值t[学号,姓名]--R中学号,姓名上的值t表示记号(续)(4)象集Zx给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(ImagesSet)定义为:Zx={t[Z]|tR,t[X]=x}它表示R中属性组X上值为x的诸元组在Z上分量的集合。专门的关系运算(续)XZx1z1x1z2x1z3x2z2x2z3x3z1x3z3Rx1在R中的象集Zx1={z1,z2,z3},x2在R中的象集Zx2={z2,z3},x3在R中的象集Zx3={z1,z3}象集举例专门的关系运算(续)像集具体求解过程:从R中选出在X上取值为x的元组;然后再在Z上投影形成的结果集合。1.选择(Selection)—基本运算①是行上的选择,即水平方向抽取元组,产生同类关系。②选择运算符的含义在关系R中选择满足给定条件F的诸元组,记作:σF(R)={t|tR∧F(t)='真'}F:选择条件,由属性名(值)、比较运算符、逻辑运算符组成。专门的关系运算(续)σ【举例】设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept95001李勇男20CS95002刘晨女19IS95003王敏女18MA95004张立男19IS(a)学生关系Student例1例2例4例3例9例10(b)课程关系Course例9例10课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64(c)选修关系SC例7例9例8例10学号Sno课程号Cno成绩Grade9500119295001285950013889500229095002380σSdept='IS'(Student)或σ5='IS'(Student)SnoSnameSsexSageSdept95002刘晨女19IS95004张立男19IS[例1]查询信息系(IS系)全体学生。σSage20(Student)或σ420(Student)SnoSnameSsexSageSdept95002刘晨女19IS95003王敏女18MA95004张立男19IS[例2]查询年龄小于20岁的学生。2.投影(Projection)—基本运算①是列上的选择,相当于对关系进行垂直分解,产生不同类关系。②投影运算符的含义从R中选择出若干属性列组成新的关系。记作:πA(R)={t[A]|tR}其中A为R中的一组属性名或属性序号组,并要消除重复元组。专门的关系运算(续)ππSname,Sdept(Student)或π2,5(Student)[例3]查询学生的姓名和所在系。SnameSdept李勇CS刘晨IS王敏MA张立ISπSdept(Student)SdeptCSISMA[例4]查询学生关系中都有哪些系。3.连接(Join)—非基本运算①连接也称为θ连接,涉及多个表之间的操作时使用②连接运算的含义从两个关系的笛卡尔积中选取属性间满足一定连接条件的元组。记作:RS={|trR∧tsS∧tr[A]θts[B]}A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符从R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。AθBtrts专门的关系运算(续)是笛卡尔积、选择和投影操作的组合③两类常用连接运算等值连接(Equijoin)θ为“=”的连接运算称为等值连接等值连接的含义从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:RS={|trR∧tsS∧tr[A]=ts[B]}A=Btrts专门的关系运算(续)自然连接(Naturaljoin)是一种特殊的等值连接,连接条件默认为两个关系的同名属性的值相等,并且在结果中去掉同名属性。自然连接的含义R和S具有相同的属性组B,则自然连接记作:RS={|trR∧tsS∧tr[B]=ts[B]}trts专门的关系运算(续)AθBRS专门的关系运算(续)④一般的连接操作是从行的角度进行运算。但自然连接还需要去掉重复列,所