数据库管理系统-从基本原理到系统构建 课件 02 关系模型_第1页
数据库管理系统-从基本原理到系统构建 课件 02 关系模型_第2页
数据库管理系统-从基本原理到系统构建 课件 02 关系模型_第3页
数据库管理系统-从基本原理到系统构建 课件 02 关系模型_第4页
数据库管理系统-从基本原理到系统构建 课件 02 关系模型_第5页
已阅读5页,还剩83页未读, 继续免费阅读

下载本文档

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

文档简介

第2章关系模型数据库系统—关系模型1清华大学计算机系李国良本章知识框架数据库系统—关系模型2关系模型关系数据库数据组织方式数据模型数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑数据定义数据查询数据操纵数据定义目录数据库系统—关系模型3关系模型关系数据库数据组织方式数据模型数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑数据定义数据查询数据操纵数据定义关系数据库基本概念学生选课关系数据库示例包含三个Student、Course、SC三个表(关系)。Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MACno(课程号)Cname(课程名)Cpno(先修课)Ccredit(学分)1数据库242数据结构与算法643操作系统234高等数学

45软件工程626程序设计

37数值分析42Sno(学号)Cno(课程号)Grade(成绩)202131072159820213107221872021310723192202131072357620213107247842021310725495Student表Course表SC表数据库系统—关系模型4关系数据库基本概念(续)关系数据库关系数据库是表的集合:每个表有唯一的名字每个表可以有多个列每个列有唯一的名字表中的一行代表的是一系列值之间的联系,即表是关系的集合表的概念和数学上关系的概念密切相关,这正是关系数据库名称的由来常见的关系数据库Oracle

、MicrosoftSQLServer、IBMDB2、GaussDB、MySQL、SQLite关系数据库采用关系模型作为数据的组织方式Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MAStudent表数据库系统—关系模型5关系模型1970年,IBM公司的埃德加·科德(EdgarF.Codd)首次提出了关系模型的概念。随后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式1974年提出了关系的巴斯科德范式1981年,ACM授予埃德加·科德图灵奖,以表彰他在关系数据库研究方面的杰出贡献。埃德加·科德数据库系统—关系模型6关系数据库基本概念(续)数据库系统—关系模型7关系模型的形象化类比程序设计语言数据类型变量值关系模型关系模式关系关系实例关系数据库基本概念(续)数据库系统—关系模型8关系模型术语一般表格的术语关系模式表头(表格列名的集合)关系名表名关系二维表元组行/记录属性列属性名列名属性值列值分量一条记录中的一个列值关系模型术语与日常生活术语对比关系数据库基本概念(续)数据库系统—关系模型9基本概念关系数据库是由表的集合构成,表在关系理论里面又称为关系每个表都有唯一的名字,称之为关系名表中的每一列则被称为属性表格中的每一行则被称为元组,即关系是元组的集合元组中一个属性值,在关系中称为分量

一个有n个属性的关系称为n元关系关系实际上就是一个二维表表格的每一行是一个元组表格的每一列是一个属性Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MAStudent表属性元组分量关系数据库基本概念(续)数据库系统—关系模型10

SnoSnameSgenderSageSdept2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MA关系数据库基本概念(续)数据库系统—关系模型11基本概念关系中每个属性都存在一个合法的取值集合,是该属性的域

例如,Student关系中的Sage属性,其每一个取值通常是大于或等于0的关系中每一个属性中的值都应该来自同一个域例如,Sage属性值应该是整数或者空值,不能出现日期数据或者其它类型的数据。Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MA关系数据库基本概念(续)数据库系统—关系模型12超键:如果某一属性或者某属性集合可以唯一地标识不同的元组,则称这样的属性或者属性集为超键。候选键:不含有多余属性的超键:一个超键去除任意一个属性就不再是超键了。Student关系的5个属性中,(Sno,

Sname)是一个超键,但不是候选键;Sno是候选键;如果Sname属性的取值是唯一的,则它也是候选键。候选键的各个属性称为主属性,不包含在任何侯选键中的属性称为非主属性。Student关系主属性是Sno。Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MA关系数据库基本概念(续)数据库系统—关系模型13在某些情况,需要同时使用两个或者两个以上的属性才能唯一标识不同的元组,这种由多个属性所构成的键称为复合键。例如,在SC关系中,如果只用Sno或者Cno属性都不能唯一地标识不同的元组,但如果同时使用Sno和Cno属性,则可以唯一地标识不同的元组,即可唯一地区分不同学生在不同课程上的成绩。SC关系中的Sno和Cno属性的组合是其复合键。Sno(学号)Cno(课程号)Grade(成绩)202131072159820213107221872021310723192202131072357620213107247842021310725495SC表复合键关系数据库基本概念(续)数据库系统—关系模型14一个关关系可能有一个或多个候选键,在定义关系数据库关系表的时候,一般选择一个最合适的候选键作为主键,主键的不同取值必须唯一标识不同的元组。例如,Student关系的5个属性中,Sno属性可以唯一地标识不同的学生,可以选择Sno作为Student关系的主键。Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MAStudent表关系数据库基本概念(续)数据库系统—关系模型15SC关系的Sno和Cno属性分别是Student和Course关系的主键,这种一个关系模式R1中的属性是另一个关系模式R2的主键,这样的属性在R1上称作参照R2的外键,即外键。Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MACno(课程号)Cname(课程名)Cpno(先修课)Ccredit(学分)1数据库242数据结构与算法643操作系统23Sno(学号)Cno(课程号)Grade(成绩)2021310721598202131072218720213107231922021310723576Student表Course表SC表16目录数据库系统—关系模型关系模型关系数据库数据组织方式数据模型数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑数据定义数据查询数据操纵数据定义关系操作基于关系模型,常见的关系操作主要包括了:查询操作(Query)和数据更新操作。数据更新包括了删除(Delete)、插入(Insert)和修改(Update)查询操作是关系操作的核心部分。关系操作可以通过关系运算进行表示。关系运算是埃德加·科德博士所提出的关系模型的一部分,本质上是一种形式化的关系查询语言,可以用于从数据库中查询数据。数据库系统—关系模型17关系数据库语言关系数据库语言包括了关系运算和SQL关系运算包含关系代数(relationalalgebra)关系代数是一种过程化查询语言,通过描述对关系的运算来表达查询、获取数据;关系演算则是非过程化查询语言,通过描述想要获取的数据的信息来获取数据(不需要给出运算过程)关系演算可以分为元组关系演算和域关系演算两种语言。为了方便用户查询处理关系数据,定义了结构化查询语言SQL

来操作处理关系数据数据库系统—关系模型18关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑SQL、关系代数和关系演算都是在关系模型基础上用于表达数据操作的语言SQL是用户与关系数据库直接交互的途径SQL是一种介于关系代数和关系演算之间的语言,它和关系演算一样是非过程化语言关系代数是过程化的,是SQL的理论基础执行SQL需要通过关系代数

理论进行优化数据库系统—关系模型19关系运算和SQL的关系关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑目录数据库系统—关系模型20关系模型关系数据库数据组织方式数据模型数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑数据定义数据查询数据操纵数据定义关系完整性约束现实世界中仍然有许多事物很难用现有的方法进行建模。因此,我们在信息世界中建模这些事物的时候,通常需要附加一定的约束。在关系模型中,有三类完整性约束:实体完整性约束(entityintegrityconstraint)参照完整性约束(referentialintegrityconstraint)用户定义完整性约束(user-definedintegrityconstraint)数据库系统—关系模型21常见的约束类型完整性约束实体完整性约束(主键约束)参照完整性约束(外键约束)用户定义完整性约束其它约束非空约束唯一约束域约束数据库系统—关系模型22常见的约束类型(续)三类完整性约束实体完整性和参照完整性关系模型必须满足的实体和参照完整性约束条件称为关系的两个不变性,应该由关系系统自动支持用户定义的完整性应用领域需要遵循的约束条件,体现了具体领域中的语义约束数据库系统—关系模型23实体完整性约束实体完整性约束规范设计的关系数据库中的每个元组都应该是唯一且可区分的。例如,在学生关系数据库中,不应该出现两个表示学生实体的相同元组,并且在学生关系数据库中的学生实体之间是可以相互区分的。实体完整性约束可以保证关系数据库的上述特性,实体完整性约束主要是通过在关系表中实施主键取值约束,来保证关系中的每个元组可以被唯一识别。数据库系统—关系模型24实体完整性约束(续)

数据库系统—关系模型25实体完整性约束(续)实体完整性约束示例违反实体完整性约束规则(2)的SC关系表违反实体完整性约束规则(3)的SC关系表符合实体完整性约束的SC关系表

数据库系统—关系模型26参照完整性约束实体完整性约束可以看做是实体集内部之间的约束,参照完整性约束更多地指代实体集之间关系的约束。例如,考虑下图中学校与学生之间一对多的“录取”关系一所学校可以录取多名学生,如果某一学生被某所学校录取,那么录取该学生的学校必须出现在学校实体集中。一个实体集中的属性取值参照另一个相关实体集。即,实体集之间存在相互引用、相互约束的情况。数据库系统—关系模型27参照完整性约束(续)参照完整性约束规则:(1)删除规则:如果一个实体E被另一个实体F引用,可以禁止删除该实体E。例如,某所学校录取了1000名学生,则不能将该学校删除;如果要删除该学校,则必须同时把隶属于该学校的1000名学生的信息也删除。(被参照实体后删除)(2)插入规则:如果一个实体F引用了另一个实体E,那么实体E必须存在数据库中。例如,某位学生被某所学校录取,那么该学校必须已经存在学校实体集中;否则,需要先将学校实体集中的信息存到数据库后,才能将该学生的信息插入到数据库中。(被参照实体先插入)数据库系统—关系模型28用户定义完整性约束用户定义完整性约束:用户定义完整性约束则是用户根据具体的数据库应用场景,设置的具体的约束条件,用户定义完整性约束可以反映数据的特殊语义要求。例如,在Student关系中,假设学校在录取学生的时候明确表明每位学生都必要有姓名和年龄信息,则Student关系中的Sname和Sage属性均不能取空值。Student表数据库系统—关系模型29Sno(学号)Sname(姓名)Sgender(性别)Sage(年龄)Sdept(所在系)2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MA其它约束非空约束(notnullconstraint)指关系中某一属性的取值不能为空值。例如,如果对Student关系中的Sage属性增加了非空约束,则在增加一个新的学生元组的时候,其Sage属性必须要有一个非空的取值,否则数据库系统将会报错。唯一约束(uniqueconstraint)指关系中某一属性的取值不能重复的约束。例如给Student关系中的Sdept属性加上唯一约束后,则表明学生的系别不能重复出现。唯一约束与主键约束都可以保证关系中某一属性的取值不会重复出现。不同的是,主键约束只能作用于一个关系中的一个属性且该属性的取值不能为空值,而唯一约束可以作用于一个关系中的多个属性,且该属性的取值可以为空值但不能重复。数据库系统—关系模型30其它约束(续)自增长约束(auto_incrementconstraint)指一个关系中的属性的取值自增长,例如一个元组的ID一般用于自增列数据库系统—关系模型31默认值约束(defaultconstraint)指一个关系中的属性的取值为默认值,例如默认值为NULL或者0检查约束(checkconstraint)指一个关系中的属性的取值必须满足一个指定条件的约束例如,在Student关系中,Sage属性的取值范围是大于等于0

目录数据库系统—关系模型32关系模型关系数据库数据组织方式数据模型数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑数据定义数据查询数据操纵数据定义关系运算关系运算是埃德加·科德博士所提出的关系模型的一部分,本质上是一种形式化的关系查询语言,可以用于从数据库中查询数据。

数据库系统—关系模型33关系运算关系运算是埃德加·科德博士所提出的关系模型的一部分,本质上是一种形式化的关系查询语言,可以用于从数据库中查询数据。查询计算机系的学生信息:

数据库系统—关系模型34关系代数关系代数定义了一个关系数据的运算的集合关系运算以一个或者两个关系为输入;输出一个新的关系作为运算结果。关系是一个以元组为元素的多重集合(multiset)-

可能包含重复元素关系代数运算本质上是对多重集合的运算数据库系统—关系模型35基本关系代数运算基本关系代数运算包括选择、投影、并、差、笛卡尔积和重命名。选择、投影、重命名为一元运算;并、差、笛卡尔积为二元运算。基本关系代数运算可以用来表达任何传统关系代数运算。数据库系统—关系模型36选择运算

数据库系统—关系模型37选择运算【例2.1】查询计算机系所有学生的信息。查询结果为:

SnoSnameSgenderSageSdept2021310721李博男17CS2021310722赵宇男19CS2021310723张敏女18CS数据库系统—关系模型38选择运算【例2.2】查询计算机系年龄大于等于18的学生的信息,以及所有数学系的学生信息。查询结果为:

SnoSnameSgenderSageSdept2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MA数据库系统—关系模型39投影运算

数据库系统—关系模型40投影运算【例2.3】查询计算机系所有学生的学号、姓名。查询结果为:

SnoSname2021310721李博2021310722赵宇2021310723张敏数据库系统—关系模型41并运算

数据库系统—关系模型42并运算【例2.4】查询所有17或18岁学生的信息。查询结果为:

SnoSnameSgenderSageSdept2021310721李博男17CS2021310723张敏女18CS2021310724王勇男18MA2021310725刘佳女17MA数据库系统—关系模型43差运算

数据库系统—关系模型44差运算【例2.5】查询计算机系中的未成年同学的信息。查询结果为:

SnoSnameSgenderSageSdept2021310721李博男17CS数据库系统—关系模型45

数据库系统—关系模型46笛卡尔积运算笛卡尔积运算

AB

CD

ABCDa1

x4

a1x4a2

y2

a1y2b3

a2x4

a2y2

b3x4

b3y2

数据库系统—关系模型47重命名运算

数据库系统—关系模型48【例2.7】将学生选课表重命名为StudentCourse表,同时将Grade属性重命名为Score属性查询结果为:

SnoCnoScore202131072159820213107221872021310723192202131072357620213107247842021310725495数据库系统—关系模型49重命名运算附加关系代数运算基本关系代数运算写出来的表达式比较冗长,因此定义了附加关系代数运算附加关系代数运算是由基本关系代数运算导出的运算,可以简化表达式附加关系代数运算和基本关系代数运算的表达能力相同数据库系统—关系模型50交运算

数据库系统—关系模型51

交运算【例2.8】查询计算机系年龄大于等于18的学生的信息:

查询结果为:

SnoSnameSgenderSageSdept2021310722赵宇男19CS2021310723张敏女18CS数据库系统—关系模型52连接运算

数据库系统—关系模型53连接运算

Student.SnoStudent.SnameStudent.SgenderStudent.SageStudent.SdeptSC.SnoSC.CnoSC.Grade2021310721李博男17CS20213107215982021310722赵宇男19CS20213107221872021310723张敏女18CS20213107231922021310723张敏女18CS20213107235762021310724王勇男18MA20213107247842021310725刘佳女17MA2021310725495数据库系统—关系模型54连接运算

SnoSnameSgenderSageSdeptCnoGrade2021310721李博男17CS5982021310722赵宇男19CS1872021310723张敏女18CS1922021310723张敏女18CS5762021310724王勇男18MA7842021310725刘佳女17MA495数据库系统—关系模型55连接运算

数据库系统—关系模型56赋值运算

数据库系统—关系模型57除运算

数据库系统—关系模型58

除运算【例2.13】除运算示例AB

a1

a2

B

a3

1b1

2

Ab23a数据库系统—关系模型59扩展关系代数运算基本关系代数运算代数和附加关系代数运算不能表达SQL中的某些运算扩展关系代数运算定义了使用基本关系代数运算和附加关系代数运算无法实现的运算数据库系统—关系模型60去重运算

SdeptCSMA数据库系统—关系模型61广义投影运算

数据库系统—关系模型62广义投影运算【例2.15】查询所有学生的学号,姓名,出生年份。查询结果为:

SnoSname2021-Sage2021310721李博20042021310722赵宇20022021310723张敏20032021310724王勇20032021310725刘佳2004数据库系统—关系模型63聚集运算

数据库系统—关系模型64聚集运算

数据库系统—关系模型65聚集运算【例2.17】查询学生总人数,以及学生平均年龄。查询结果为:

count(Sno)avg(Sage)517.8数据库系统—关系模型66分组运算

数据库系统—关系模型67分组运算

数据库系统—关系模型68分组运算【例2.19】查询所有选课学生的学号及平均分。查询结果为:

Snoavg(Grade)202131072198202131072287202131072384202131072484202131072595数据库系统—关系模型69分组运算【例2.20】查询各个系的男生和女生人数。查询结果为:

SdeptSgendercount(Sno)CS男2CS女1MA男1MA女1数据库系统—关系模型70排序运算

数据库系统—关系模型71排序运算【例2.21】将学生表按照年龄排序,对于年龄相同的元组,按照学号排序查询结果为:

SnoSnameSgenderSageSdept2021310721李博男17CS2021310725刘佳女17MA2021310723张敏女18CS2021310724王勇男18MA2021310722赵宇男19CS数据库系统—关系模型72关系代数表达式

数据库系统—关系模型73关系代数表达式

SnoGrade202131072287202131072392数据库系统—关系模型74关系代数表达式【例2.23】查询选修了1号课程的学生学号、姓名及成绩该表达式的执行步骤为:

数据库系统—关系模型75关系代数表达式【例2.23】查询选修了1号课程的学生学号、姓名及成绩该表达式的执行步骤为:

数据库系统—关系模型76关系代数表达式

等价数据库系统—关系模型77【例2.23】查询选修了1号课程的学生学号、姓名及成绩。上述两个表达式是等价的,但是运算的执行顺序不同在连接前先执行选择运算可以减少参与连接的元组数,因此执行效率会提高。如何将一个关系代数表达式重写为等价的更高效的关系代数表达式是一个重要的问题,常见的操作包括选择下推、投影下推等(详见第11章)

目录数据库系统—关系模型78关系模型关系数据库数据组织方式数据模型数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言SQL理论支撑数据定义数据查询数据操纵数据定义元组关系演算

数据库系统—关系模型79元组关系演算【例2.28】查询年龄大于等于18的学生的学号、姓名、性别、年龄、所在系查询结果为:

SnoSnameSgenderSageSdept2021310722赵宇男19CS2021310723张敏女18CS2021310724王勇男18MA数据库系统—

温馨提示

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

最新文档

评论

0/150

提交评论