数据库应用第2章RelationalAlgebra.ppt_第1页
数据库应用第2章RelationalAlgebra.ppt_第2页
数据库应用第2章RelationalAlgebra.ppt_第3页
数据库应用第2章RelationalAlgebra.ppt_第4页
数据库应用第2章RelationalAlgebra.ppt_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

第2章 关系模型,Relational Model,2.1 关系数据模型 2.2 关系运算,2,主要内容,2.1 关系数据模型 数据结构 完整性约束规则,3,关系数据模型,1970年E.F.Codd在美国计算机学会会刊Communication of the ACM上发表的题为“A Relational Model of Data for Shared Data Banks”的论文,开创了数据库系统的新纪元。从此,人们开始了关系数据库系统的研究。,4,关系数据模型由来,单一的数据结构 简单的二维表 以关系的形式来描述现实世界 实体(学生、课程) 实体间的联系(学生选课表),5,关系数据模型,关系数据库,是建立在关系数据模型基础上的数据库系统。 关系系统基于关系模型,关系模型又是基于数学方面的数据抽象理论。 关系是一个数学概念。 当把关系的概念引入到数据库系统作为数据模型的数据结构时,既有所限定和也有所扩充。 关系数据结构的定义,6,关系数据模型基本概念,域(Domain) 域是一组具有相同数据类型的值的集合,又称为值域。 域可直接用D表示。 关系模型要求域必须是原子数据的集合。 例如整数、实数、字符串的集合。 域中所包含的值的个数称为域的基数(用m表示)。 关系中用域表示属性的取值范围。例如: D1 = 李力,王平,刘伟 m1 = 3 D2 = 男,女 m2 = 2 D3 = 47, 28, 30 m3 = 3 其中,D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合。 域的值无排列次序,如D2 = 男,女 = 女,男,7,关系数据结构的定义,笛卡儿积 (Cartesian Product ) 给定一组域 D1 , D2 , , Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1 , D2 , , Dn的笛卡尔积为: D1D2Dn = (d1, d2 , , dn) | diDi , i = 1, 2, , n,8,关系数据结构的定义,笛卡尔积的性质: 每一个元素(d1, d2, d3, , dn)叫做一个n元组(n tuple),简称元组(Tuple)。 元组不是di的集合,元组的每个分量(di)是存在顺序的。如: (1,2,3)(2,3,1)(1,3,2) 而集合中的元素无顺序的。 (1,2,3)=(2,3,1)=(1,3,2),9,关系数据结构的定义,笛卡尔积的性质: 元组中的每一个di叫做一个分量(Component),来自相应的域(diDi) 其中:李力、王平、刘伟、男、女都是分量 (李力,男),(李力,女)等是元组,10,关系数据结构的定义,笛卡尔积的性质: 若Di (i = 1, 2, , n)为有限集,Di中的集合元素个数称为Di的基数,用mi (i = 1, 2, , n)表示,则笛卡尔积D1D2Dn的基数M(即元素(d1, d2, , dn)的个数)为所有域的基数的累积,即,11,关系数据结构的定义,例 给出三个域: D1 = SUPERVISOR = 张清玫,刘逸 D2 = SPECIALITY = 计算机专业,交通专业 D3 = POSTGRADUATE = 李勇,刘晨,王敏 D1,D2,D3的笛卡尔积为的基数为:223 = 12 D1D2D3 (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏),(张清玫,交通专业,李勇), (张清玫,交通专业,刘晨),(张清玫,交通专业,王敏), (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨), (刘逸,计算机专业,王敏),(刘逸,交通专业,李勇), (刘逸,交通专业,刘晨),(刘逸,交通专业,王敏) ,12,笛卡尔积,笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。 在上例中,12个元组可列成一张二维表,13,笛卡尔积的表示方法,14,笛卡尔积的表示方法,关系 D1D2Dn的子集叫作在域D1, D2, , Dn上的关系,表示为 R(D1, D2, , Dn) 关系是笛卡儿积的子集,是一张二维表。 表的每行对应一个元组。 列对应一个域。,15,关系数据结构的定义,例:在上表的笛卡尔积中取出有实际意义的元组来构造关系 关系:SAP(SUPERVISOR, SPECIALITY, OSTGRADUATE) 关系名(属性名1, 属性名2, , 属性名n) 假设:导师与专业:11,导师与研究生:1n 于是:SAP关系可以包含三个元组,16,关系,关系的表示 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。,17,关系,关系数据模型对数学定义的限定和扩充 限定:无限关系在数据库系统中是无意义的。因此限定关系数据模型中的关系必须是有限集合。 扩充:通过为关系的每个域附加一个属性名的方法取消关系元组的有序性 数学上:(交通流理论, 张三) (张三, 交通流理论) 数据库上:(交通流理论, 张三) = (张三, 交通流理论),18,关系,基本关系具有以下六条性质: 列是同质的,即每一列中的分量是同一类型的数据; 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性必须给不同的属性名; 列的顺序可任意交换; 任意两个元组不能完全相同; 行的顺序可任意交换; 分量必须取原子值,即每一个分量都必须是不可分的数据项。,19,关系,关系的属性(attribute)是为关系的域附加的名字,是表示现实世界中实体性质的抽象信息。通常,用A表示关系的属性。 给定A1 、A2 、.、An是值域为D1、D2、.、Dn 的n个属性,具有属性A1 、A2 、.、An的关系R是一个元组集合,其中,每个元组(tuple)是一个映射集合A1D1, A2D2, ., AnDn 。 一个具有n个属性的关系称为n元关系。,20,关系的数据结构,关系模式是一个系统R(U, D, DOM, I, F),其中, R是关系名,U是R的属性集合A1、A2、.、An, D是U中属性的域集合D1、D2、.、Dn,DOM是U到D的映射, I是完整性约束集合,F是属性间的函数依赖关系。 把属性集合为U = A1, A2, ., An的关系模式R记作R(A1, A2, ., An)。,21,关系的数据结构,例: Student(姓名, 学生编号, 年级, 专业, 系) Course(课程名, 课程编号, 学分, 系) Course_teaching(年级,系,专业,课程编号,学期,年,教师) Prerequist(课程编号, 前序课程编号) Grade(学生编号, 课程编号, 成绩),22,关系的数据结构,23,关系的数据结构,关系与关系模式是关系数据库中密切相关又有所不同的概念。 关系模式 关系模式是采用关系数据模型对数据的描述 是“型” 关系 是相应关系模式的值(实例) 是相应实体集在某一时刻的快照,24,关系的数据结构,关系模式描述了关系的数据结构和语义约束,不是集合;而关系是一个数据集合。 关系模式是相对稳定的;而关系是随时间而变化的,是关系模式在某一时刻的“当前值”。 有时等价地使用“关系”和“关系模式”这两个词。,25,关系的数据结构,2.1 关系数据模型 数据结构 完整性约束规则,26,关系数据模型,基本概念 码(键) 若关系中的某一组属性的值能唯一地标识该关系中的一个元组,则称该属性组为候选码。 候选码之一可被选作主码(Primary Key, PK),或称为主键、关键字。 主码是关系模型中的一个重要概念。每个关系必需选择一个主码,选定以后,不能随意改变。关系的元组不能重复,因此,每个关系必须有且仅有一个主码。至少关系的所有属性的组合可作为主码。 极端情况下,关系的所有属性组是这个关系的候选码,称为全码(All-key)。,27,完整性约束规则,完整性约束规则:,28,关系数据模型,基本概念 外部键:设X是关系模式R(U)的一个属性集合。如果X是另一个关系模式R(U)的主键,则称X是R(U)关于R(U)的外部键,或简称外键。,29,关系数据模型,实体完整性约束: 如果A是关系模式R(U)的主属性,则A不能接受空值。 保证主属性不空与关系模式用主键唯一识别元组是统一的。 关联完整性约束 设X是关系模式R(U)关于关系模式R(U)的外部键。如果K是R(U)的关系实例的一个元组的外部键值,则R(U)实例中必存在一个元组T,T在X上的值为K。 关联完整性约束说明,任何关系的一个元组只能通过外部键与另一个关系中存在的元组相关联。,30,完整性约束规则,特殊的约束条件 与特定的应用相关 例: 课程(课程号,课程名,学分) 非主属性“课程名”也不能取空值 “学分”属性只能取值1,2,3,4 NULL 不知道、未提供、短缺 不能简单地认为没有,31,用户定义的完整性,2.1 关系数据模型 2.2 关系运算,第2章 关系模型,属于关系操作的一种 关系代数是一种抽象的查询语言 通过对关系的运算来表达查询操作 运算对象、结果均为关系 运算 集合运算、专门的关系运算、比较运算、逻辑运算,33,关系运算,基于代数的定义:关系代数 基本操作(5个):并、差、笛卡尔积、投影、选择 附加操作:交、连接、商、 附加操作可由基本操作的组合表示 基于逻辑的定义:关系演算 由于使用变量的不同,关系演算又分为元组关系演算和域关系演算。,34,关系运算,R和S的并,RS,是在R或S或两者中的元素的集合 一个元素在并集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),35,集合运算并Union (),RS,R,S,36,集合运算并Union (),R(教师),S(系主任),RS,R和S的差,R - S,是在R中而不在S中的元素的集合 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),37,集合运算差Minus (-),R - S,S,R,38,集合运算差Minus (-),R(教师),S(系主任),RS,关系R、S的笛卡儿积是两个关系的元组对的集合所组成的新关系 RS: 属性是R和S的组合(有重复) 元组是R和S所有元组的可能组合 是R、S的无条件连接,使任意两个关系的信息能组合在一起,39,集合运算笛卡儿积(),40,集合运算笛卡儿积(),R(教师),S(系主任),RS,从关系R中选择若干属性组成新的关系 A1, A2, , An(R),表示从R中选择属性集A1, A2, , An组成新的关系 列的运算 投影运算的结果中,要去除重复元组。,41,关系运算投影(),例: ssex,sage(student),42,关系运算投影(),从关系R中选择符合条件的元组构成新的关系 F(R),表示从R中选择满足条件(使逻辑表达式F为真)的元组 行的运算,43,关系运算选择(),例: ssex = 男 AND sdept = IS(Student),44,关系运算选择(),R和S的交,RS,是在R和S中都存在的元素的集合 一个元素在交集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),45,集合运算交Intersect (),RS,S,R,46,集合运算交Intersect (),R(教师),S(系主任),RS,从RS的结果集中,选取在指定的属性集上满足条件的元组,组成新的关系 是一个关于属性集的逻辑表达式,47,关系运算条件连接(),48,关系运算条件连接(),R,S,49,关系运算条件连接(),R,S,从RS的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系 R、S的公共属性 属性集的交集(名称及类型相同) 公共属性在结果中只出现一次,50,关系运算自然连接( ),51,关系运算条件连接(),R,S,52,关系运算除(),在关系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,53,分析:,例 查询至少选修1号课程和3号课程的学生号码 首先建立一个临时关系K: 然后求:Sno,Cno(SC)K,54,以学生课程数据库为例,例 续 Sno,Cno(SC) 95001象集1, 2, 3 95002象集2, 3 Cno(K)=1, 3 于是:Sno,Cno(SC)K = 95001,55,以学生课程数据库为例,56,关系代数实例,查询选修了2号课程的学生的学号。 课程号、学号SC表 2号课程的选课情况: cno = 2(SC),57,关系代数实例1,选修2号课程的学号。 sno(cno = 2(SC),58,关系代数实例1,列出选修数学课的学生的学号、姓名以及成绩。 学号、姓名Student表 课程名称Course表 成绩SC表 Student SCCourse,59,关系代数实例2,Cname = 数学 (Course),60,关系代数实例2,选修数学课的学习记录 SC (Cname = 数学(Course) 选修数学的学生记录 Student (SC (Cname = 数学(Course) 选修数学的学生的学号、姓名、成绩 Sno,Sname,gradeStudent (SC (Cname = 数学(Course),61,关系代数实例2,62,关系代数实例2,查询至少选修了一门其直接先行课为5号课程的学生 姓名。 Sname(Cpno=5(Course SC Student) 或 Sname(Cpno=5(Course) SC Sno, Sname(Student) 或 Sname (Sno(Cpno=5(Course) SC) Sno, Sname(Student),63,关系代数实例3,查询选修了全部课程的学生号码和姓名。 Sno, Cno(SC)Cno(Course) Sno, Sname(Student),64,关系代数实例4,R S,65,练习,在以下的四个关系代数表达式中有一个与其他三个是不等价的。这些表达式都是基于关系R(A, B)和S(B, C)的。请指出其中的哪一个与其他的不等价。 A,B(R S) R B(S) R (A(R) x B(S) A, R.B(R x S),66,练习,基于代数的定义:关系代数 基本操作(5个):并、差、笛卡尔积、投影、选择 附加操作:交、连接、商、 附加操作可由基本操作的组合表示 基于逻辑的定义:关系演算 由于使用变量的不同,关系演算又分为元组关系演算和域关系演算。,67,关系运算,关系演算是以数理逻辑中的谓词演算为基础的,通过谓词形式来表示查询表达式。 根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。,68,关系演算,元组关系演算语言 元组关系演算是以元组变量作为谓词变元的基本对象。 元组关系演算语言的典型代表是E.F.Codd提出的ALPHA语言和INGRES关系数据库上使用的QUEL语言。 ALPHA没有实际实现,但较有名气。 QUEL是在ALPHA语言的基础上研制的。,69,关系演算,ALPHA语言 ALPHA语言是以谓词公式来定义查询要求的。在谓词公式中存在客体变元,这里称为元组变量。 元组变量是一个变量,其变化范围为某一个命名的关系。 ALPHA语言的基本格式是: (): 操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等几种。 工作空间是指内存空间,可以用一个字母表示,通常用W表示,也可以用别的字母表示。工作空间是用户与系统的通信区。 目标表用于指定操作(如查询、更新等)出来的结果,它可以是关系名或属性名,一答操作语句可以同时对多个关系或多个属性进行操作。,70,关系演算ALPHA,操作条件是用谓词公式表示的逻辑表达式,只有满足此条件的元组才能进行操作,这是一个可选项,缺省时表示无条件执行操作符规定的操作。除此之外,还可以在基本格式上加上排序要求,定额要求等。 下面以教学数据库为例,说明ALPHA语言的使用。,71,关系演算ALPHA,数据查询 简单查询 例 查询所有学生的数据。 GET W (S) GET语句的作用是把数据库中的数据读入内存空间W,目标表为学生关系S,代表查询出来的结果,即所有的学生。 冒号后面的操作条件缺省,表示无条件查询。,72,关系演算ALPHA,例 查询所有被选修的课程号码。 GET W (SC.CNO) 目标表为选课关系SC中的属性CNO,代表所有被选修的课程号码,查询结果自动消去重复行。,73,关系演算-ALPHA,条件查询 由冒号后面的逻辑表达式给出查询条件,在表达式中可以使用如下三类运算符: 比较运算符:,=,; 逻辑运算符:(与),(或), (非) 表示执行次序的括号:( ) 其中,比较运算符的优先级高于逻辑运算符,可以使用( )改变它们的优先级。,74,关系演算-ALPHA,例 查询计算机系工资高于1000元的教师的姓名和工资。 GET W (T.TN,T.SAL):T.DEPT = 计算机T.SAL1000 目标表为教师关系T中的两个属性SN和SAL组成的属性列表。,75,关系演算ALPHA,排序查询 例 查询S3同学所选课程号及成绩,并按成绩降序排列。 GET W (SC.CNO,SC.SCORE):SC.SNO = S3 DOWN SC.SCORE DOWN表示降序,后面紧跟排序的属性名。 升序排列时使用UP。,76,关系演算ALPHA,定额查询 所谓的定额查询就是通过在W后面的括号中加上定额数量,限定查询出元组的个数。,77,关系演算ALPHA,定额查询 所谓的定额查询就是通过在W后面的括号中加上定额数量,限定查询出元组的个数。 例 查询一名男教师的教师号和姓名。 GET W (1) (T.TNO,T.TN):T.SEX = 男 这里(1)表示查询结果中男教师的个数,取出教师表中第一个男教师的教师号和姓名。,78,关系演算ALPHA,排序和定额查询可以一起使用。 例 查询一名男教师的教师号和姓名,并使他的年龄最小。 GET W (1) (T.TNO,T.TN):T.SEX = 男 UP T.AGE 此语句的执行过程为:先查询所有男教师的教师号和姓名,再按照年龄由小到大排序,然后找出第一位,也就是年龄最小的男教师。,79,关系演算ALPHA,带元组变量的查询 所谓的元组关系演算就是以元组变量作为谓词变元的基本对象,在关系演算的查询操作时,可以在相应的关系上定义元组变量。 元组变量代表关系中的元组,其取值是在所定义的关系范围内变化,所以也称作范围变量Range Variable,一个关系可以设多个元组变量。,80,关系演算ALPHA,例 查询S3同学所选课程号。 RANGE SC X GET W (X.CNO):X.SNO = S3 使用RANGE来说明元组变量,X为关系SC上的元组变量。 如果关系的名字很长,使用起来不方便,这时可以设一个名字较短的元组变量来代替关系名,简化关系名,使操作更加方便。,81,关系演算ALPHA,带存在量词的查询 例 查询S3同学所选课程名。 RANGE SC X GET W (C.CN): X(C.CNO = X.CNOX.SNO = S3) 注意:操作条件中使用量词时必须用元组变量。,82,关系演算ALPHA,例 查询至少选修一门其课时数为80的课程的学生的姓名。 RANGE C CX SC SCX GET W (S.SN): SCX(SCX.SNO = S.SNO CX(CX.CNO = SCX.CNOCX.CT =80),83,关系演算ALPHA,此查询涉及三个关系,需要对两个关系(C和SC)作用存在量词,所以用了两个元组变量。 此语句的执行过程为:先查询课时数为80的课程号,再根据找到的课程号在关系SC中查询其对应的学号,然后根据为些学号在关系S中找到对应的学生姓名。 例 查询选修全部课程的学生姓名。 RANGE C CX SC SCX GET W (S.SN): CX SCX(XSC.SNO = S.SNOCX.CNO = SCX.CNO),84,关系演算ALPHA,库函数查询 库函数也称集函数。用户在使用查询语言时,经常要作一些简单的运算。 例如要统计某个关系中符合某一条件的元组数,或某些元组在某个属性上分量的和、平均值等等。 在关系数据库语言中提供了有关这类运算的标准函数,增强了基本检索能力。 常用的库函数下表所示,85,关系演算ALPHA,例 求学号为S1学生的平均分。 GET W (AVG(SC.SCORE): S.SNO = S1,86,关系演算ALPHA,例 求学校共有多少个系 GET W (COUNT(S.DEPT) COUNT函数自动消去重复行,可计算字段”DEPT”不同值的数目。,87,关系演算ALPHA,数据更新 修改:UPDATE 读数据:使用HOLD语句将要修改的元组从数据库中读到工作空间中; 修改:利用宿主语言修改工作空间中元组的属性; 送回:使用UPDATE语句将修改后的元组送回数据库中。 这里HOLD语句是带上并发控制的GET语句。 例 把刘伟教师转到信息系。 HOLD W(T.DEPT):T.TN = 刘伟 MOVE 信息 TO W.DEPT UPDATE W,88,关系演算ALPHA,在ALPHA语言中,不允许修改关系的主码,例如不能使用UPDATE语句修改教师表T中的教师号。 如果要修改主码,应该先使用删除操作删除该元组,再插入一条具有新主码值的元组。,89,关系演算ALPHA,插入 插入操作使用PUT语句实现,具体操作分为以下两步: 建立新元组:利用宿主语言在工作空间中建立新元组; 写数据:使用PUT语句将元组写入到指定的关系中。,90,关系演算ALPHA,例 在SC表中插入一条选课记录(S6,C1,85)。 MOVE S6 TO W.SNO MOVE C1 TO W.CNO MOVE 85 TO W.SCORE PUT W(SC) PUT语句的作用是把工作空间W中的数据写到数据库中,此例即把已经在工作空间建立的一条选课记录写入到选课关系SC中。 注意:PUT语句只能对一个关系进行操作,在插入操作时,拒绝接受主码相同的元组。,91,关系演算ALPHA,删除 ALPHA语言中的删除操作不但可以删除关系中的一些元组,还可以删除一个关系。 删除操作使用DELETE语句实现,具体操作分为以下两步: 读数据:使用HOLD语句将要删除的元组从数据库中读到工作空间中; 删除:使用DELET

温馨提示

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

评论

0/150

提交评论