收藏 分享(赏)

wxs-02关系DB.ppt

上传人:hwpkd79526 文档编号:10086770 上传时间:2019-10-08 格式:PPT 页数:119 大小:737.50KB
下载 相关 举报
wxs-02关系DB.ppt_第1页
第1页 / 共119页
wxs-02关系DB.ppt_第2页
第2页 / 共119页
wxs-02关系DB.ppt_第3页
第3页 / 共119页
wxs-02关系DB.ppt_第4页
第4页 / 共119页
wxs-02关系DB.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

1、封面,江苏大学计算机学院计算机科学系,数据库系统原理,主讲:王新胜 ,目录,第二章 关系数据库,2.1 关系模型概述,2.3 关系的完整性,2.4 关系代数,2.2 关系数据结构,第二章 关系数据库,1970年,IBM公司的E.F.Codd第一次提出了以关系的数学关系理论为基础的关系数据模型,奠定了关系数据库的理论基础。 90年代,关系模型数据库系统已成为商用主流数据库系统,广泛应用于各个领域 有名的关系DBMS:ORACLE、Informix、SYBASE等等,2.1 关系模型概述,单一的数据结构关系 关系操作 关系的三类完整性约束,一、单一的数据结构关系,关系表示:实体,实体之间的联系。关

2、系实质上是一张二维表,表的每一行为一个元组,每一列为一个属性。,二、关系操作,特点:操作对象和结果都是集合=关系=二维表。,关系代数用对关系的运算来表达查询要求的方式。包括选择、投影、连接、除、并、交、差、笛卡尔积。 关系演算用谓词来表达查询要求的方式。,关系操作表示:代数方式(关系代数)逻辑方式(关系演算),关系查询语言|关系数据语言,数据操纵语言DML分成查询和更新两大类。 关系查询语言是更新语言的基础,比更新语言复杂并有理论基础,是主要研究对象。 关系查询语言根据其理论基础不同分为: 1)关系代数语言 2)关系演算语言 3)具有关系代数和关系演算双重特点的语言。,关系查询语言的特点:,它

3、们均是抽象的查询语言 它们是设计各种高级关系数据语言的基础和指导思想 它们能用来评估实际系统中查询语言能力的标准和基础 高度非过程化存取路径的选择由DBMS完成,而不用用户完成。,实体完整性 参照完整性 用户定义完整性,三、关系的三类完整性约束,2.2 关系数据结构,关系 关系模式 关系数据库,2.2.1 关系的数学定义,“关系”“二维表”(非形式化) “关系”的理论是建立在集合代数理论的基础上,1. 域,定义2.1:域(Domain)是值的集合。(值域) 在关系中用域来表示属性的取值范围 域中所包含的值的个数称域的基数(用m表示)例:D1=李平,张红,王钢 M1=3 D2=男,女 M2=2D

4、3=17,18,19 M3=3,2. 笛卡儿积,定义2.2 给定一组任意集合D1,D2,Dn(它们可以包括相同的元素), 这n个集合的笛卡儿积为: D1D2Dn=(d1,d2,dn)| di Di,i=1,2,n,笛卡儿积也是一个集合,其中: Di称为域; 每一个元素(d1,d2,dn) 叫做一个n元组(简称元组); 元素中每一个值di叫做一个分量 Di的基数用mi(i=1,2,n)表示,则笛卡儿积的D1D2Dn的基数为所有域的基数的累乘乘积上例中,基数:32318,即D1D2D3共有32318个元组,2. 笛卡儿积,例:设有两个域, D1 =0,1和D2 =a,b,c 则 D1D2=(0,a

5、),(0,b),(0,c),(1,a),(1,b),(1,c)笛卡儿积也可以用二维表表示,其中表的框架由域构成,表的任意一行就是一个元组,每一列数据来则同一域。,3. 关系的数学定义,定义2.3:笛卡儿积 D1D2 Dn 的任一个子集称为定义在域D1,D2,Dn上的n元关系(Relation),可用R(D1,D2,Dn )表示。其中R为关系名,n称为关系的目或度(Degree);,3. 关系的数学定义,该子集元素是关系中的元组; 关系中的元组个数是关系的基数; 同样可以把关系看作是一个二维表,表的框架由Di(i=1,2,n)构成,每一行对应一个元组,表的每一列对应一个域,给每个域起一个名字,称

6、为属性; 具有相同关系框架的关系称为同类关系;,3. 关系的数学定义,例:设 D1=手机类型集合=摩托罗拉、NOKiA、三星D2 =配件集合=摩托罗拉充电器, NOKiA充电器、三星充电器 (1)求上面两个集合的笛卡儿积,(2)构造一个手机关系,可表示为:手机(手机类型,手机充电器) 手机手机类型 手机充电器 摩托罗拉 摩托罗拉充电器NOKiA NOKiA充电器三星 三星充电器,3. 关系的数学定义,由该例可知,关系是笛卡儿乘积的任意子集,但从实际应用中,只有取某个子集才有实际意义。 一般说来,关系是从笛卡儿积中选取的有意义的子集。,关系为什么是笛卡尔积的子集,而不是全集?笛卡尔积为什么不是关

7、系?,怎样选取笛卡尔积的子集才是关系?,笛卡尔积的全集无实际意义。,取出有实际意义的元组构造关系。,4. 码、候选码、主码,(1) 码:在给定的关系中,具有唯一标识元组的一个或一组属性,称为关系的码(关系键)码的性质:唯一性、最小性 (2) 候选码:如果在关系中,具有码特性的属性或属性组有多个,则把它们都称为关系的候选码(关系候选键),举例,SAP(导师,专业,研究生) Key=研究生如果研究生属性采用姓名,则必须增加一个假设研究生不会重名(在实际中这是不合适的),研究生属性才能作为SAP关系的候选码。如果研究生属性采用学号,则研究生属性直接就能作为SAP关系的候选码。,(3) 主码:当一个关

8、系中有多个候选码时,我们从候选码中选择一个作为关系的主码(主关系键) 每个关系都必定有且只有一个主码 对于一个关系,主码一经选定,通常是不能随意改变的,结论,任何关系必有码; 任何关系必有主码,且主码唯一; 任何关系必有候选码,候选码可能不唯一; 当关系只有一个候选码时,该关系的码就是其候选码,也是其主码。,5.关系的属性集、主属性、非主属性,主属性集所有码(候选码)中的属性构成的集合。 非主属性集其余属性构成的集合。,主属性主属性集包含的属性 。 非主属性非主属性集包含的属性 。,属性集,属性,6.全码 举例:音乐会(作品,演奏者,观众) Key= (作品,演奏者,观众),7.关系的性质,4

9、)行不全同两个元组不能完全相同,即任意元组在关系中都是唯一的。,5)行无序行的顺序可以交换。,1)列同质列值来自同一个域。,2)列不同名不同的属性要用不同的属性名。,6)原子属性每一分量必须是不可分的数据项。,3)列无序列的顺序可以交换。,反例,不满足性质(原子属性)的关系,改进,方案一,缺点:限定了最大人数是2人,对于研究生数量不够2人的元组就会浪费存储 空间。,方案二,优点:不限定研究生的最大人数。 缺点:当研究生数量多于1人时,就会产生冗余。,SUPERVISOR和SPECIALITY的值会重复。,2.2.2 关系模式,定义:关系的描述。 关系模式就是关系的框架(表框架) 它是对关系结构

10、的描述,2.2.2 关系模式,形式化表示:,2元组 R 或 R(U),5元组 R R 关系名U 组成该关系的属性名集合D 属性组U中属性所来自的域dom 属性向域的映象集合F 属性间的数据依赖关系集合,3元组 R,关系模式通常简记为R (U) 或 R (A1,A2,An),关系模式与关系,关系模式 对关系的描述 静态的、稳定的 关系 关系模式在某一时刻的状态或内容 动态的、随时间不断变化的 关系模式和关系往往统称为关系 通过上下文加以区别,2.2.3 关系数据库,关系数据库是指在一个给定的应用领域中,所有实体及实体之间联系的关系的集合 关系数据库有型和值的概念 关系数据库的型就是关系数据库模式

11、,它是相对固定 关系数据库的值就是数据库的内容,它是随时间而变化的,关系数据库模式即一组关系模式的集合,是对关系数据库结构的描述 与关系数据库模式对应的当前值就是关系数据库的内容(关系数据库实例),2.3 关系的完整性,实体完整性 参照完整性 用户定义的完整性,一、实体完整性(针对关系本身),规则:码不为空/主属性不为空。,空值“不知道”或“无意义”的值。空值等价于没有任何值。空值不是0,不是空字符串,不是空格。,举例:选修(学号,课程号,成绩),码(学号,课程号),在选修表中学号和课程号的取值都不能为空值,必须是确定的值。,二、参照完整性(针对关系间的联系),1.外码F是关系R的属性,但不是

12、R的码,是关系S的码,则F是R的外码。,举例: 选修(学号,课程号,成绩)学生(学号,姓名,性别,年龄)课程(课程号,课程名,学分),码(学号,课程号)码学号码课程号,由定义可知:找外码只需注意相互有联系的表所具有的相同属性。,举例: 选修(学号,课程号,成绩)学生(学号,姓名,性别,年龄)课程(课程号,课程名,学分),外码学号,课程号 2个外码 无 外码 无,2.参照完整性规则外码的值或取空值或取主码值。外部码与主码的对应提供了一种实现两个关系联系的方法。,举例: 选修(学号,课程号,成绩) 学生(学号,姓名,性别,年龄) 课程(课程号,课程名,学分),问题:选修表中的学号和课程号可以取主码

13、值,也可以取空值? 参照完整性规则,结论:选修表中的学号和课程号只能取主码值,不能取空值。 实体完整性规则 参照完整性规则,理由:选修表中的学号和课程号是主属性,所以不能取空值。 实体完整性规则,3.外码何时可以取空值,何时不可以取空值?,关系的外码又是该关系的主属性时,外码不能取空值。,关系的外码不是该关系的主属性时,外码能取空值。,三、用户定义的完整性(针对具体关系DB的约束条件),针对某个具体数据库的约束条件,由应用环境决定,它反映某一具体应用所涉及的数据必须满足的语义要求。 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们而不要由应用程序来承担这一功能。,2.4

14、 关系代数,关系代数,传统的集合运算:,专门的关系运算:,并、交、差、广义笛卡尔积,选择、投影、连接、除,关系代数的运算符有: 集合运算符:(并) (交) (差) (广义笛卡儿积) 专门的关系运算符:(选择) (投影) (连接) (除) 算术比较符=,=, 逻辑运算符:(AND) (OR) (NOT),2.4.1 传统集合运算,并 交 差 广义笛卡儿积,一、并 ,交 ,差 -,条件: 1)二目运算,即有2个关系参加运算R,S 2) R和S要求是同类关系(R,S具有相同的目/度,对应属性取自同一个域),结果:行变,列不变,1. 关系并运算:关系R和关系S的所有元组的合并,在删去重复的元组,组成一

15、个新关系,记作:RS 2. 关系交运算:在两个关系R与S中取相同的元组,组成一个新关系,记作:RS 3. 关系差运算:在关系R中删去与关系S中相同的元组,组成一个新关系,记作:RS,并,R,S,RS,交,R,S,R S,差,R,S,R-S,广义笛卡儿积:两个分别为n、m目关系R和S的广义笛卡儿积是一个(n+m)元组的集合,记作:RS 假设: R为n度,有k1个元组S为m度,有k2个元组,结果:R S为m+n度,有个k1*k2元组,二、广义笛卡尔积,广义笛卡尔积 (续),R,S,R S,R S的运算过程:,三、练习,已知关系R,S,T,R,S,T,1.R-S 2.RS 3.RS 4. R T,1

16、.R-S,2.RS,3.RS,4. R T,R T的运算过程:,总结,传统的集合运算,如并、交、差、广义笛卡儿积,这类运算将关系看成元组的集合,其运算是从关系的“水平”方向即行的角度来进行的。 它能实现关系数据库的许多基本操作 并运算实现数据记录的添加和插入 差运算实现数据记录的删除 数据记录的修改则是通过先删除,后插入这两步完成的,2.4.2 专门的关系运算,选择 投影 连接 除,一、选择/限制,运算式: F( R ) 规则:从关系R中选出满足条件F的元组,组成一个新的关系。 F为布尔函数,可由运算对象(属性名、常数、简单函数)、算术比较符合逻辑运算符连接起来的表达式组成,选择是单目运算 选

17、择是从关系的水平方向(行的角度)进行运算 结果:行变,列不变 例题:设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。,(a),Student,例1,例2,例4,例3,(b),Course,(c),SC,选择,例1 查询信息系(IS系)全体学生Sdept = IS (Student)或 5 =IS (Student) 结果:,选择,例2 查询年龄小于20岁的学生Sage 20(Student) 或 4 20(Student)结果:,二、投影,运算式: A( R ) 规则:从关系R中选出指定的属性A(1个或多个),删去结果中重复元组,组成一个关系。 A为选

18、取的属性集合,投影是单目运算 投影是从关系的垂直方向上(列的角度)取子集 结果:列变,行不变,投影,举例 例3 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影Sname,Sdept(Student)或 2,5(Student)结果:,投影,投影,例4 查询学生关系Student中都有哪些系 Sdept(Student)结果:,【例题】查询年龄小于20岁的学生姓名和所在系。,Sname,Sdept( ),Sage20(Student),Sage20( ),交换运算顺序:,Sname,Sdept(Student),结论:错误,三、连接,1. 连接,假设: R为m度,

19、有k1个元组;S为n度,有k2个元组,R S,A B,运算式:,表示比较运算符:, ,=, A,B:R和S上度数相同且可比的属性组,规则:是从两个关系R、S的笛卡儿积中选取满足连接条件的那些元组。 AB为连接条件 当为“=”,称为等值连接 连接运算是二目运算 结果:m+n列,k1*k2个元组中满足条件A B的行,步骤:间接方法 R S A B(R S )直接方法 取m+n列 从R,S中选出满足条件A B的元组合并,连接,举例例5,R,S,连接,R S,2. 等值连接为“”的连接,运算式: R S,A = B,结果:m+n列,k1*k2个元组中满足条件A=B的行,步骤:间接方法 R S A=B(

20、R S )直接方法 取m+n列 从R,S中选出满足条件A=B的元组合并,连接,举例例5,R,S,连接,等值连接 R S,3. 自然连接特殊的等值连接,运算式:,条件:R,S要有相同的列,设相同的列为B 结果:m+n-1列(去掉重复列),k1*k2个元组中满足条件R.B=S.B的行,R S,步骤:间接方法1 间接方法2 R S R.B=S.B(R S )去掉重复列 去掉重复列,R S,R.B=S.B,步骤:直接方法 取m+n列,去掉重复列 从R,S中选出满足条件R.B=S.B的元组合并,连接,举例例5,R,S,连接,自然连接 R S,R S 的运算过程:,4. 自然连接与等值连接的区别,自然连接

21、要求2个关系中进行比较的分量必须是相同的属性组,等值连接不必; 自然连接在结果中去掉重复的属性列,等值连接不必。,在自然连接构成的结果关系中,相同的属性名不必重复。 自然连接是组装关系的有效方法,四、除,运算式: R S,关系R能被S除的充分必要条件是: (1)R中的属性包含S中的所有属性 (2)R中有一些属性不出现在S中,规则:使用除数关系S(Y)在被除数关系R(X,Y)中取商关系 商关系的属性由R中不出现在S中的属性组成,其元组则由S中出现的所有元组在R中所对应的相同值所组成。 如果我们认为笛卡尔积运算是乘运算的话,该运算就是它的逆运算,因此称为除运算。,R S,例6 已知关系R、S,求R

22、 S,R S,R S,例题: 已知关系R、S,求R S,R S,总结,专门的关系运算,如选择、投影、连接、除,这类运算不仅涉及行,而且涉及列。 关系代数的代数表达式的运算结果是一个关系 关系数据库的DML语言至少支持选取、投影和连接三种运算,关系代数的运用技巧,对于否定的操作,一般要用差操作,例如“检索不学C2课的学生姓名” 对于检索具有“全部”特征的操作,一般要用除法操作,例如“检索学习全部课程的学生姓名”,五、基本运算(5种),剩余运算(3种),都可用基本运算表示,并 、差 、笛卡尔积 、选择 、投影,交 、连接 、除, - , ,交运算 RS=R-(R-S) 连接运算 除运算 R(X,Y

23、)S(Y)= X( R )- X(X( R ) Y( S ) -R ),R S = ( R S),A B,A B,其中X(X( R ) Y( S ) -R ):寻找X,该X还有对应的Y值不在R中,即该X没有包含全部的Y值。,六、练习,已知关系R,S,T,R,S,T,1.A=1(S) 2. B,C(S) 3. 4.R T,R T,R.C=T.C,1. A=1(S),2. B,C(S),R T,3.,R T,R.C=T.C,4.R T,R T 的运算过程:,七、多种运算综合运用 (运算表达式和结果关系),以学生课程数据库为例。,1.查询已选修了课程的学生的学号。,Cno=2(SC),2.查询选修了

24、2号课程的学生的学号。,Sno ( SC ),Sno ( ),3.查询已选修了课程的学生的姓名。,Sname ( ),SC Student,4.查询选修了先行课为5号课程的学生的学号。,Cpno=5(Course),SC ( ),Sno ( ), 5.查询至少选修了1号和3号课程的学生的学号。,分析:查询到的学生,他所选修的课程包含了1号和3号课程。,1号和3号课程号组成除关系S,被除关系R要有课程号和学号,要反映选课情况,所以用SC关系。,S,R,95001的象集,1,2,3,95002的象集,2,3,S在Cno上的投影:,1,3,只有95001的象集包含了S在Cno上的投影。,Sno,Cno ( SC ) S,RS,【总结】,总结,关系模型三要素,一、 数据结构关系,数学定义和性质,二、关系操作关系代数,三、 关系的完整性约束(3),1 实体完整性 2 参照完整性 3 用户定义的完整性,关系的两个不变性,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报