1、第二章 关系模型和关系运算第 1 / 7 页数据库系统原理教案教学内容 第二章 关系模型和关系运算 教材章节 第二章 关系模型和关系运算教学周次 2 教学课时 4授课对象 教学环境 多媒体教室教学目标介绍关系模型的基本概念,即关系模型的数据结构、关系操作和关系完整性。结合第三章的数据定义介绍数据结构与数据完整性。关系操作主要介绍关系代数。教学重点1、 数据结构:笛卡儿积、关系、关系模式、关系数据库。2、 关系完整性:实体、参照、用户自定义。3、关系操作:关系代数,重点是投影、选择、连接、除法操作。教学难点 关系数据库的型和值;关系代数的除法运算。教学过程本章分 2 次讲述,每次 4 学时,每次
2、主要讲述以下内容介绍如下:第一次:介绍数据结构(笛卡儿积、关系、关系模式、关系数据库) 。关系完整性(实体、参照、用户自定义) (实际教学过程中将第三章的表定义及对数据库的插入操作部分提前到这里,相当于第三章有 2 学时多调整到了这里) 。第二次:介绍举例关系操作的语义(关系代数,重点是投影、选择、连接、除法操作) ,并介绍相应的 SQL 语句表达式(实际教学过程相当于将第三章的相关内容调整到了此处介绍) 。作业与要求 P64 第 2、3、4、5、7、8 六题。本章的习题要求熟练掌握。备注第二章 关系模型和关系运算第 2 / 7 页第二章 关系模型和关系运算21 关系数据库概述1、关系数据库系
3、统:支持关系模型的数据库系统。2、关系模型的组成:关系数据结构、关系操作集合、完整性约束条件三部分。3、关系数据结构表,特点:简单的数据结构表达丰富的语义,描述现实世界的实体以及实体间的联系(例)4、关系操作*采用集合操作:操作对象与操作结果为集合,*常用的操作*查询:选择、投影、连接、除、并、交、差等;更新:增、删、改*查询的表达能力是关系操作中的最主要部分*关系模型中关系操作能力的早期抽象表示(即抽象查询语言,领会语言的含义):1)关系代数语言:用代数方式表示,即用关系的运算来表达查询要求的方式。2)关系演算语言:用逻辑方式表示,即用谓词来表达查询要求的方式。元组关系演算:谓词变元的基本对
4、象是元组变量。域关系演算:谓词变元的基本对象为域变量。3) 关系代数、关系演算(元组关系演算、域关系演算)三种语言在表达能力上是等价的。*早期抽象查询语言(关系代数、关系演算语言)的作用作为评估实际系统中查询语言能力的标准。与具体 DBMS 实现的实际语言不完全一样(提供许多附加功能,如集函数、关系赋值、算术运算等)*关系数据库的标准语言(SQLstructured query language 结构化查询语言)是集数据查询、DDL 数据定义、 DML 数据操纵、DCL 数据控制于一体的语言。 具有关系代数与关系演算双重特点的语言。5、完整性约束*允许定义三类完整性:实体完整性、参照完整性、用
5、户自定义完整性。*关系系统自动支持的完整性:实体完整性、参照完整性。22 关系数据结构(关系、关系模式、关系数据库)1、关系例 1:有表结构(关系模式):学生(学号、性别)如果,学号为子界类型 D1=1100, 性别为枚举类型 D2=(男,女) ,学生表的最大取值(最大表 ):100*2=200 个元组例 2:有表结构:学生(学号、姓名、性别、系别、年龄、籍贯)每个列的类型:integer,char(8),bolean,char(8),integer,char(10)最大表元组数:实际应用中的具体表:最大表的有意义的子集1)域:是一组具有相同数据类型值的集合。第二章 关系模型和关系运算第 3
6、/ 7 页表中的每列都与一域(表的数据类型)相关连2)笛卡儿积(本质上为最大元组表)*定义:给定一组域 D1,D2,.,Dn,这些域可以完全不同,也可以部分或全部相同。D1,D2,.,Dn 的笛卡儿积为:D1D2. Dn=(d1,d2,dn )di Di,i=1,2,n其中每一个元素(d1,d2,dn)叫作一个 n 元组,或简称为元组。元素中的每一个值 di 叫作一个分量。*若 Di(i=1,2,n )为有限集,其基数为 mi(i=1,2,n),则D1D2. Dn 的基数为 m1*m2*mn3)关系*定义:D1D2. Dn 的子集叫作在域 D1,D2 ,. ,Dn 上的关系,用R(D1,D2,
7、.,Dn)表示。R 表示关系的名字,n 是关系的目或度n=1 单元关系n=2 二元关系关系为笛卡儿积的子集,表行元组,表列属性(n 目关系有 n个属性) 。*侯选码:若关系中某一属性组的值能唯一标识一个元组,则称该属性组为侯选码*主码:若一个关系中有多个侯选码,则选其中一个作为主码。*主属性:主码的诸属性*非码属性:不包含在任何侯选码中的属性*全码:侯选码为关系的所有属性组*关系的三种类型:基本表(实际存在表) 、查询表(查询结果) 、视图表(虚表由基本表与其他试图表导出)*基本关系具有 6 条性质:(见书 P40)2、关系模式*定义:关系的描述称为关系模式。它可形式化地表示为 R(U,D,D
8、OM ,F) 。R 为关系名U 组成该关系的属性名集合D 属性组所来自的域DOM 属性向域的映象集合F 属性间数据的依赖关系集合(第四章专门讨论)*关系模式通常简记为 R(U)或 R(A1,A2,An ) ,域名及属性向域的映象常常直接说明为属性的类型、长度*型与值:模式是型,关系(表)是模式的值3、关系数据库含义:在一个给定的现实世界的领域中,相应于所有实体及实体之间的联系的关系的集合构成一个关系数据库。关系数据库的型和值:型即关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系模式的值也称为关系数据库,是这些关系模式在某一时刻对应的关系的集合。关系
9、数据库模式与关系数据库通常称为关系数据库。23 关系完整性1、实体完整性第二章 关系模型和关系运算第 4 / 7 页要点:主属性不能取空值。现实世界的语义要求:一个基本关系通常对应现实世界的一个实体集,现实世界的实体是可以区分的,即它们具有某种唯一标识,在关系模型中以主码作为唯一标识。2、参照完整性*关系与关系之间存在着引用关系:因为现实世界的实体之间存在某种联系,而关系模型中实体及实体间的联系都是用关系来描述的。*举例:*要点:*外码基本关系 R 的非码属性(组) F 与基本关系 S 的主码 Ks 相对应,则属性(组)F 为 R 的外码。*参照关系R*被参照关系S*参照完整性规则基本关系 R
10、 的外码 F 与基本关系 S 的主码 Ks 相对应,则 R 上的每个元组在 F 上的取值要求:或者取空值;或者等于 S 中的某个元组的主码值。3、用户自定义完整性*反映某一具体应用所涉及的数据必须满足的语义要求。*通常有三类:非空约束(not null) 、唯一约束(unique) 、检查约束(check)*24 如何实现完整性约束规则(作问题处理)1、在表中定义完整性规则2、在对表中的数据进行更新操作时,数据库管理系统自动的检查完整性规则,将表中的数据约束在用户期望的范围中。*PB 提供了一定的前端约束检查功能*在前端定义约束规则(相当 check 功能) ,在前端进行合法性检查。即在输入数
11、据时一定程度上过滤了不合法的数据。相同的检查在数据库表中可以不需要再定义。*在前端一已经实现的完整性约束,在数据库表中是否可以不需要再定义?回答否,因为,如不通过应用程序直接通过工具操作数据库表时,就没有了相应的完整性检查。24 关系代数1、何为关系代数:是抽象的查询语言,它用关系运算来表达查询。主要研究关系(表)运算,运算对象是关系,运算结果也是关系。2、关系运算分两类:1)传统的集合运算:并、交、差、广义笛卡尔积。运算只涉及行,将关系看成是行(元组)的集合, 。2)专门的关系运算:选择、投影、连接、除。运算既涉及行也涉及列。3、传统的集合运算(着重掌握语义)设关系 R、SRA Ba1 b1
12、第二章 关系模型和关系运算第 5 / 7 页a1 b2SA Ba1 b2a2 b21)并(U)R S= t | t R t S 并由属于 R 或属于 S 的元组组成。两集合元组并在一起,去掉重复元组。关系 R、S 要求具有相同的目 n(都具有 n 个属性) ,相应的属性取自同一个域(同类型数据)2)差()R S= t | t R t S 差由属于 R 并不属于 S 的元组组成。关系 R、S 要求具有相同的目 n(都具有 n 个属性) ,相应的属性取自同一个域(同类型数据)3)交()R S= t | t R t S 由属于 R 且属于 S 的元组组成。关系 R、S 要求具有相同的目 n(都具有
13、n 个属性) ,相应的属性取自同一个域(同类型数据)4)广义笛卡尔积R S=trts | trR tsS*关系 R、S 分别为 m、n 目 k1、k2 个元组,结果为 m+n 目,元组个数为 k1*k2个。例:R学号 姓名1 A2 BS课 程数据库操作系统R S学号 姓名 课程1 A 数据库1 A 操作系统2 B 数据库2 B 操作系统(广义笛卡儿积与笛卡儿积的比较:)4、专门关系运算(运算结果着重掌握语义)1)选择 F(R)=t| tR F(t)=“T” 选择关系 R 中满足逻辑表达式 F 为真的元组。第二章 关系模型和关系运算第 6 / 7 页P48 例 1、查询信息系的全体学生 例 2、
14、查询年龄小于 20 的元组例 1: sdept=is(student) 例 2: sage20(student)逻辑表达式 F 的基本形式为:X1 Y1 X2 Y2 比较运算符, 逻辑运算符,Xi、Yi 属性名或常量名或简单函数。2)投影 A(R)=tA| tR A 为 R 中的属性列例 3:学生关系在姓名和系两个属性上的投影。例 4:在学生关系中有那些系表见 P48例 3: sname,sdept(student) 例 4: sdept(student)注:投影后的重复行应该消除 3)连接R S=trts | trR tsS trA tsB AB从广义笛卡尔积 R S 中选择满足比较运算表达
15、式 AB 的元组,A、B 分别为R、S 上度数相等且可比的属性组。例(P50):R Scd等值连接:上述连接的特例, 取=自然连接:书写格式在连接符下不加比较表达式,比较分量必须是相同的属性组,连接结果去掉重复列。4)除()例 6:设关系 R(A,B,C ) ,S (B ,C,D) ,求 RS,RS 为新关系 P(A) ,P 是 R 中满足下列条件的元组在 A 属性列上的投影:元组在 A 上分量值 a 的象集 BCa 包含 S 在 BC 上投影的集合。见书 P51*象集:关系 R(X,Z) ,X 和 Z 为属性组。我们定义,当 tX=x 时,x 在 R 中的象集为:Zx=tZ| tR ,tX=
16、x表示 R 中属性组 X 上值为 x 的诸元素在 Z 上分量的集合。*RS: R(X,Y) ,S (Y,Z) ,其中 X,Y ,Z 为属性组R(X,Y)X=A,Y=BCS(Y,Z)Y=BC,Z=DRS 的结果为新关系 P(X) , P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合。R S = trX| trR y(S) 包含于 trX的象集第二章 关系模型和关系运算第 7 / 7 页例:至少选修了课程表中所有课程的学生 sno,cno(student_course) cno(course)例:P51 例 7例 10假
17、设学生课程数据库中有表:(理解含义)Student(Sno 学号,sname 姓名,sex 性别,age 年龄, sdept 所在系) ,Course(Cno,Cname,Cpno,Ccredit) ,SC(Sno,Cno,Grade)例 8:(错误)例 9:查询至少选修了一门其直接先行课为 6 号课程的学生姓名1、先行课为 6 号的课程,涉及课程表。P1= cpno=6(coruse)2、选了上述课程的学生学号 P2:P1SC 或 sno(P1SC )3、根据学号求姓名:P2 Sno,Sname(Student),投影出 Sname例 10:查询选修了全部课程的学生号码和姓名1、所有课程的课
18、程号 P1: cno(Course )2、选修了所有课程的学生号 P2: Sno,Cno(SC)P13、学生姓名、学生号:P2 Sno,Sname(Student)2.6 关系数据库管理系统(简称关系系统)1、关系系统:为支持关系模型的系统,各种实际应用的关系系统对关系模型的支持程度不同(数据结构、数据操纵、完整性约束) 。2、各类关系系统的分类与定义:1)表式系统:仅支持关系数据结构,不支持集合级操作,实际上不能算关系系统。2)(最小)关系系统:支持关系数据结构和选择、投影、连接三种操作。(FoxBASE,FoxPro 等)3)关系完备系统:支持关系数据结构和支持关系代数操作(功能上与关系代数等价) 。 (DB2,ORACLE 等)4)全关系系统:支持关系模型的所有特征。到目前为止尚没有一个系统是全关系系统。DB2,ORACLE 接近全关系目标。3、关系系统的体系结构*不同关系系统的体系结构都符合三级模式结构。*三级模式:模式表,外模式视图,内模式物理存储文件*两级映象:模式与外模式,模式与内模式。映象由关系系统自动提供与维护。