数据库系统原理及应用教程2_第1页
数据库系统原理及应用教程2_第2页
数据库系统原理及应用教程2_第3页
数据库系统原理及应用教程2_第4页
数据库系统原理及应用教程2_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

1、1关系模型关系模型2 上一章介绍了主要的数据模型: 层次模型 网状模型 关系模型 其中简单灵活,并有着坚实的理论基础,已成为当前的数据模型。 本章主要讲述本章主要讲述: 关系模型的数据结构 关系的定义和性质 关系数据库的基本概念 关系运算32.1 关系模型关系模型 关系模型就是用关系模型就是用二维表格二维表格结构来表示实体及实体之间结构来表示实体及实体之间联系的模型。联系的模型。 关系模型是各个关系的框架的集合,即关系模型是一关系模型是各个关系的框架的集合,即关系模型是一些些表格的格式表格的格式,其中包括关系名、属性名、关键字等。,其中包括关系名、属性名、关键字等。 教师关系 课程关系C 授课

2、关系SC教师课程数据库的关系模型TNO教师号TN姓名SEX性别AGE年龄PROF职称SAL工资COMM岗位津贴DEPT系别CNO课程号CN课程名CT课时TNO教师号CNO课程号4 从各个关系的框架中,我们可以很容易看出哪两个关从各个关系的框架中,我们可以很容易看出哪两个关系之间有系之间有联系联系。例如:。例如: 教师关系和授课关系有公共的属性“教师号”,则表明这两个关系有联系。 而课程关系和授课关系有公共的属性“课程号”,则表明这两个关系也有联系。 至于元组之间的联系,则与具体的数据有关。只有在公共属性上具有相同属性值的元组之间才有联系。 5 由上例可以看出,在一个关系中可以存放两类信息:由上

3、例可以看出,在一个关系中可以存放两类信息: 一类是描述实体本身的信息 一类是描述实体(关系)之间的联系的信息 在层次模型和网状模型中,把有联系的实体(元组)用在层次模型和网状模型中,把有联系的实体(元组)用指针链接起来,实体之间的联系是通过指针链接起来,实体之间的联系是通过指针指针来实现的。来实现的。 而关系模型则采用不同的思想,即用而关系模型则采用不同的思想,即用二维表二维表来表示实体来表示实体与实体之间的联系,这就是关系模型的本质所在。与实体之间的联系,这就是关系模型的本质所在。 所以,在建立所以,在建立关系模型关系模型时,只要把的所有的实体及其属时,只要把的所有的实体及其属性用关系框架来

4、表示,同时把实体之间的关系也用关系性用关系框架来表示,同时把实体之间的关系也用关系框架来表示,就可以得到一个关系模型。框架来表示,就可以得到一个关系模型。 如上例中的教师课程数据库的关系模型就是这样建立的。62.2 关系的定义关系的定义 在关系模型中,数据是以二维表的形式存在的,这个在关系模型中,数据是以二维表的形式存在的,这个二维表二维表就叫做就叫做关系关系。 关系理论关系理论是以是以集合代数集合代数理论为基础的,因此,我们可理论为基础的,因此,我们可以用集合代数给出二维表的以用集合代数给出二维表的“关系关系”定义。定义。 为了从集合论的角度给出关系的定义,我们先引入为了从集合论的角度给出关

5、系的定义,我们先引入域域和和笛卡尔积笛卡尔积的概念。的概念。72.2.1 域(域(Domain) 域是一组具有相同数据类型的值的集合,又称为域是一组具有相同数据类型的值的集合,又称为值域值域。(用(用D表示)表示) 例如整数、实数、字符串的集合。 域中所包含的值的个数称为域的域中所包含的值的个数称为域的基数基数(用(用m表示)。表示)。 关系中用域表示属性的取值范围。例如:关系中用域表示属性的取值范围。例如:D1=李力,王平,刘伟 m1=3D2=男,女 m2=2D3=47,28,30 m3=3 其中,D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合。 域名无排列次序,如域名无排

6、列次序,如D2=男,女男,女=女,男女,男8笛卡尔积笛卡尔积(Cartesian Product ) 给定一组域给定一组域D1,D2,Dn(它们可以包含相同的(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。元素,即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡尔积为的笛卡尔积为D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。由定义可以看出,笛卡尔积也是一个由定义可以看出,笛卡尔积也是一个集合集合。例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为:D1=李力,王平,刘伟D2=男,女D1D2=(李力,男),(李力,女),(王平,男), (王平,女)

7、,(刘伟,男),(刘伟,女)9笛卡尔积笛卡尔积(Cartesian Product ) 给定一组域给定一组域D1,D2,Dn(它们可以包含相同的元素,(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡尔积为的笛卡尔积为D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。 其中:其中:1. 元素中的每一个di叫做一个分量(Component),来自相应的域(diDi)2. 每一个元素(d1,d2,d3,dn)叫做一个n元组(n-tuple),简称元组(Tuple)。但元组不是di的集合,元组的每个分量(di)

8、是按序排列的。如:(1,2,3)(2,3,1)(1,3,2)而集合中的元素是没有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。其中:李力、王平、刘伟、男、女都是分量 (李力,男),(李力,女)等是元组103. 若Di(i=1,2,n)为有限集,Di中的集合元素个数称为Di的 基 数 , 用 m i ( i = 1 , 2 , n ) 表 示 , 则 笛 卡 尔 积D1D2Dn的基数M(即元素(d1,d2,dn)的个数)为所有域的基数的累积,即 M= 例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为:D1D2=(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男

9、),(刘伟,女)其中:其基数M=m1m2=3*2=6元组的个数为6niim1114. 笛卡尔积可用二维表的形式表示。例如,上述的6个元组可表示成表2.1。D1和和D2的笛卡尔积的笛卡尔积 由上例可以看出,笛卡尔积实际是一个二维表,表的框架由域构成,表的任意一行就是一个元组,表中的每一列来自同一域,如第一个分量来自D1,第二个分量来自D2。姓名性别李力男李力女王平男王平女刘伟男刘伟女122.2.3 关系(关系(Relation) 笛卡尔积笛卡尔积D1D2Dn的任一子集称为定义在域的任一子集称为定义在域D1,D2,Dn上的上的n元关系(元关系(Relation),可用),可用R(D1,D2Dn)表

10、示)表示如上例D1D2笛卡尔积的子集可以构成教师关系T1,姓名性别李力男王平女刘伟男几点说明:几点说明:1. R为关系名,为关系名,n称为关系的目或称为关系的目或度(度(Degree)。)。当n=1时,称为单元关系。当n=2时,称为二元关系。当n=n时,称为n元关系。如上例为二元关系,关系名为如上例为二元关系,关系名为T。132. 关系中元组个数是关系的基数。如(李力,男),(王平,女),关系中元组个数是关系的基数。如(李力,男),(王平,女),(刘伟,男)为三个元组,关系的基数为(刘伟,男)为三个元组,关系的基数为3。 如果一个关系的元组个数是无限的,则称为无限关系; 如果一个关系的元组个数

11、是有限的,则称为有限关系。 由于计算机存储系统的限制,我们一般不去处理无限关系,而只考虑有限关系。3. 同样可以把关系看成一个二维表。其中,同样可以把关系看成一个二维表。其中,(1)表的框架由域Di(i=1,2,n)构成;(2)表的任意一行对应一个元组;(3)表的每一列来自同一域;(4)域可以相同,为了加以区别,每列起一个名字,称为属性,n目关系有n个属性,属性的名字唯一,属性的取值范围Di(i=1,2,n)称为值域(5)具有相同关系框架的关系成为同类关系,例如,有另一个关系T2,如表2.3所示:T1和T2是同类关系。姓名性别张雪女张兰女14 4. 数学上关系是笛卡尔积的任意子集,但在实际应用

12、中数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的有意义的子集。例如在表关系是笛卡尔积中所取的有意义的子集。例如在表2.1中中选取一个子集构成如下关系,显然不符合实际情况选取一个子集构成如下关系,显然不符合实际情况姓名性别李力男李力女152.3 关系的性质关系的性质 尽管关系与二维表格、传统的数据文件是非常类似的,尽管关系与二维表格、传统的数据文件是非常类似的,但它们之间又有重要的区别。但它们之间又有重要的区别。 严格地说,关系是种规范化了的二维表中行的集合,严格地说,关系是种规范化了的二维表中行的集合,为了使相应的数据操作简化,在关系模型中,对关系为了使相应的数据操作简化

13、,在关系模型中,对关系作了种种限制,关系具有如下特性:作了种种限制,关系具有如下特性:1. 关系中不允许出现相同的元组关系中不允许出现相同的元组。2. 关系中元组的顺序(即行序)是无关紧要的关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序。根据关系的这个性质,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。163. 关系中属性的顺序是无关紧要的关系中属性的顺序是无关紧要的:即列的顺序可以任意交换。交换时,应连同属性名一起交换,否则将得到不同的关系。例如:关系例如:关系T1作如下交换时,无任何影响作如下交换时,无任何影响性别姓名男李力女王平男

14、刘伟17 而作如下交换时,不交换属性名,只交换属性列中的而作如下交换时,不交换属性名,只交换属性列中的值,则得到不同的关系,如下表值,则得到不同的关系,如下表: 姓名性别男李力女王平男刘伟184. 同一属性名下的各个属性值必须来自同一个域同一属性名下的各个属性值必须来自同一个域:是同一类型的数据。5. 关系中各个属性必须有不同的名字:关系中各个属性必须有不同的名字:不同的属性可来自同一个域,即它们的分量可以取自同一个域。例如,有如下表中关系,职业与兼职是两个不同的属性,但它们例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域职业教师,工人,辅导员。取自同一个域职业教师,工人,

15、辅导员。 姓名职业兼职张强教师辅导员王丽工人教师刘宁教师辅导员196. 关系中每一分量必须是不可分的数据项关系中每一分量必须是不可分的数据项,或者说所有属性值都是原子的,即是一个确定的值,而不是值的集合。属性值可以为空值,表示“未知”或“不可使用”,即不可“表中有表”。满足此条件的关系称为规范化关系,否则称为非规范化关系。例如,在表例如,在表1中,籍贯含有省、市县两项,出现了中,籍贯含有省、市县两项,出现了“表中有表表中有表”的现象,则为非规范化关系,而把籍贯分成省、市县两列,将其的现象,则为非规范化关系,而把籍贯分成省、市县两列,将其规范化,如表规范化,如表2所示。所示。 表表1 表表2姓名

16、籍贯姓名省市县省市县张强吉林长春张强吉林长春王丽山西大同王丽山西大同202.4 关系的码关系的码 2.4.1 候选码与主码候选码与主码 能唯一标识关系中元组的属性或属性集,则称该属性能唯一标识关系中元组的属性或属性集,则称该属性或属性集为或属性集为候选码候选码(Candidate Key),也称候选键。如,也称候选键。如 “学生关系”中的学号能唯一标识每一个学生,则属性学号是学生关系的候选码。 在“选课关系”中,只有属性的组合“学号+课程号”才能唯一地区分每一条选课记录,则属性集“学号+课程号”是选课关系的候选键。21下面给出候选码的形式化定义:下面给出候选码的形式化定义: 设关系设关系R有属

17、性有属性A1,A2,An,其属性集,其属性集K=(Ai,Aj,Ak),当且仅当满足下列条件时,),当且仅当满足下列条件时,K被称为被称为候选码:候选码:1. 唯一性(唯一性(Uniqueness):):关系R的任意两个不同元组,其属性集K的值是不同的。2.最小性(最小性(Minimally):组成关系键的属性集(Ai,Aj,Ak)中,任一属性都不能从属性集K中删掉,否则将破坏唯一性的性质 例如:“学生关系”中的每个学生的学号是唯一的,“选课关系”中“学号+课程号” 的组合也是唯一的。对于属性集“学号+课程号” 去掉任一属性,都无法唯一标识选课记录。 22 如果一个关系中有多个候选码,可以从中选

18、择一个作为如果一个关系中有多个候选码,可以从中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称查询、插入或删除元组的操作变量,被选用的候选键称为为主码主码(Primary Key),或称为,或称为主键主键、关键字关键字。 例如,假设在学生关系中没有重名的学生,则“学号”和“姓名”都可作为学生关系的候选键。如果选定“学号”作为数据操作的依据,则“学号”为主关系键。 主码是关系模型中的一个重要概念。每个关系必需选择主码是关系模型中的一个重要概念。每个关系必需选择一个主码,选定以后,不能随意改变。每个关系必定有一个主码,选定以后,不能随意改变。每个关系必定有且仅有一个主码,因为关系的元组

19、无重复,至少关系的且仅有一个主码,因为关系的元组无重复,至少关系的所有属性的组合可作为主码。所有属性的组合可作为主码。232.4.2 主属性与非主属性主属性与非主属性 主属性主属性(Prime Attribute):包含在主码中的的各属):包含在主码中的的各属性称为主属性。性称为主属性。 非主属性非主属性(Non-Prime Attribute):不包含在任何候):不包含在任何候选码中的属性称为非码属性。选码中的属性称为非码属性。 在最简单的情况下,一个候选码只包含一个属性,如在最简单的情况下,一个候选码只包含一个属性,如学生关系中的学生关系中的“学号学号”,教师关系中的,教师关系中的“教师号

20、教师号”。 在最极终端的情况下,所有属性的组合是关系的候选在最极终端的情况下,所有属性的组合是关系的候选码,这时称为码,这时称为全码全码(all-key)。)。24 下面是一个全码的例子:下面是一个全码的例子: 假设图书馆有借书关系TCS,分别有三个属性读者编号(T)、图书编号(C)和借阅时间(S)。 在这种情况下,T,C,S三者之间是多对多关系,(T,C,S)三个属性的组合是关系TCS的候选码,称为全码,T,C,S都是主属性。TCST1C12005-4-1252.4.3 外码外码(Foreign key) 如果关系如果关系R2的一个或一组属性的一个或一组属性X不是不是R2的主码,而是另一的主

21、码,而是另一关系关系R1的主码,则该属性或属性组的主码,则该属性或属性组X称为关系称为关系R2的的外码外码或或外部关系键外部关系键。并称关系。并称关系R2为为参照关系参照关系(referencing relation),关系,关系R1为为被参照关系被参照关系(referenced relation)。因此,因此,“学号学号” 属性是选课关系的属性是选课关系的外码外码。学生关系为。学生关系为被被参照关系参照关系,选课关系为,选课关系为参照关系参照关系。26 由外部关系键的定义可知,被参照关系的主码和参照由外部关系键的定义可知,被参照关系的主码和参照关系的外码必须定义在同一个域上。关系的外码必须定

22、义在同一个域上。 如选课关系中的“学号”与学生关系的主码“学号”定义在同一个域上。27关系模型及其定义关系模型及其定义 5)关系模式(关系模式(Relation Schema):关系的描述称作关):关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等映象、属性间的数据依赖关系等,其形式化描述为其形式化描述为R(U,D,dom,F),简记作简记作R(U)或或R(A1 , A2 , An ) 。R(U, D, DOM, F)关系名关系名属性名集合属性名集合域的集合域的集合属性向域属性向域的映象的映象属性间数据属性间

23、数据的依赖关系的依赖关系28 属性向域的映象一般直接说明为属性的类型、长度等。属性向域的映象一般直接说明为属性的类型、长度等。 某一时刻对应某个关系模式的内容(元组的集合)称某一时刻对应某个关系模式的内容(元组的集合)称作关系。作关系。 关系模式是型,是稳定的,静态的。关系是某一时刻关系模式是型,是稳定的,静态的。关系是某一时刻的值,是随时间不断变化的,是动态的。的值,是随时间不断变化的,是动态的。R(U, D, DOM, F)关系名关系名属性名集合属性名集合域的集合域的集合属性向域属性向域的映象的映象属性间数据属性间数据的依赖关系的依赖关系29 关系数据库(关系数据库(Relation Da

24、tabase)其型是关系模式的集合,即数据库描述其值是某一时刻关系的集合 例如教学数据库中,共有五个关系,其关系模式分别例如教学数据库中,共有五个关系,其关系模式分别学生(学号,姓名,性别,年龄,系别)教师(教师号,姓名,性别,年龄,系别)课程(课程号,课程名,课时)选课(学号,课程号,成绩)授课(教师号,课程号)30 在每个关系中,又有其相应的数据库的实例在每个关系中,又有其相应的数据库的实例 例如:与学生关系模式对应的数据库中的实例有如下6个元组: S1赵亦女17计算机S2钱尔男18信息S3孙珊女20信息S4李思男21自动化S5周武男19计算机S6吴丽女20自动化312.4.4 关系模型的

25、完整性关系模型的完整性 为了维护数据库中数据与现实世界的一致性,对关系为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性:件,这就是关系模型的三类完整性: 实体完整性 参照完整性 用户定义的完整性1. 实体完整性实体完整性(Entity Integrity) 实体完整性实体完整性是指主码的值不能为空或部分为空。是指主码的值不能为空或部分为空。 关系模型中的一个元组对应一个实体,一个关系则对关系模型中的一个元组对应一个实体,一个关系则对应一个实体集。应一个实体集。 例如,一条学生

26、记录对应着一个学生,学生关系对应着学生的集合。32 现实世界中的实体是可区分的,即它们具有某种唯一性现实世界中的实体是可区分的,即它们具有某种唯一性标识。与此相对应,关系模型中以主码来唯一标识元组。标识。与此相对应,关系模型中以主码来唯一标识元组。 例如,学生关系中的属性“学号”可以唯一标识一个元组,也可以唯一标识学生实体。 如果主码的值为空或部分为空,即主属性为空,则不符如果主码的值为空或部分为空,即主属性为空,则不符合主码的定义条件,不能唯一标识元组及与其相对应的合主码的定义条件,不能唯一标识元组及与其相对应的实体。这就说明存在不可区分的实体,从而与现实世界实体。这就说明存在不可区分的实体

27、,从而与现实世界中的实体是可以区分的事实相矛盾。因此中的实体是可以区分的事实相矛盾。因此主关系键的值主关系键的值不能为空或部分为空不能为空或部分为空。 例如,学生关系中的主关系键“学号”不能为空;选课关系中的主关系键“学号+课程号”不能部分为空,即“学号”和“课程号”两个属性都不能为空。332. 参照完整性参照完整性(Referential integrity) 如果关系如果关系R2的外码的外码X与关系与关系R1的主码相符的主码相符,则则X的每个的每个值或者等于值或者等于R1中主码的某一个值,或者取空值。中主码的某一个值,或者取空值。SNO学号SN姓名SEX性别AGE年龄DEPT所在系S1赵亦

28、女17计算机S2钱尔男18信息 S11王威男19 DEPT所在系ADDR地址计算机1号楼信息1号楼自动化2号楼 S(学生关系)(学生关系) D(系别关系)(系别关系)34 在例中,如果按照参照完整性规则,选课关系中的外在例中,如果按照参照完整性规则,选课关系中的外码码“学号学号” 可以取空值或者取被参照关系中已经存在可以取空值或者取被参照关系中已经存在的值。但由于的值。但由于“学号学号” 是选课关系中主属性,根据实是选课关系中主属性,根据实体完整性规则,两个属性都不能为空。体完整性规则,两个属性都不能为空。所以所以选课关系选课关系中的外码中的外码“学号学号” 中只能取被参照关系中已经存在的中只

29、能取被参照关系中已经存在的值。值。35 实体完整性实体完整性和和参照完整性参照完整性是关系模型必须满足的完整是关系模型必须满足的完整性约束条件,系统都应该支持这两类完整性。性约束条件,系统都应该支持这两类完整性。 除此之外,不同的关系数据库系统由于应用环境的不除此之外,不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是同,往往还需要一些特殊的约束条件,这就是用户定用户定义完整性义完整性。363. 用户定义完整性(用户定义完整性(User-defined Integrity) 用户定义完整性用户定义完整性是针对某一具体关系数据库的约束条是针对某一具体关系数据库的约束条件

30、。件。 它反映某一具体应用所涉及的数据必须满足的语义要它反映某一具体应用所涉及的数据必须满足的语义要求。求。 例如,属性值根据实际需要,要具备一些约束条件,例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数;某些数据的输入格式如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制等。关系模型应该提供定义和检验这类要有一些限制等。关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。而不要由应用程序承担这一功能。37关系模型及其定义关系模型及其定义 关系操作关系操作 关

31、系操作是集合操作,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的方式。而非关系型的数据操作方式是一次一记录(Record-at-a-time)。 关系操作语言的种类关系操作语言的种类关系数关系数据语言据语言关系代关系代数语言数语言关系演关系演算语言算语言具有关系代数和关系具有关系代数和关系演算双重特点的语言演算双重特点的语言元组关系演算语言元组关系演算语言域关系演算语言域关系演算语言ISBL(Information System Base Language)APLHAQBESQL38 关系模型与其他模型相比,最有特色的是它的关系模型与其他模型相比,最有特色的是它的数据库

32、数据库语言语言。 这种语言灵活方便、表达能力和功能都很强。这种语言灵活方便、表达能力和功能都很强。 目前关系数据库所使用的语言一般都具有目前关系数据库所使用的语言一般都具有定义定义、查询查询、更新更新和和控制控制一体化的特点,而一体化的特点,而查询查询是最主要的部分。是最主要的部分。 所以说,关系数据库的核心部分是所以说,关系数据库的核心部分是查询查询,故又称为,故又称为查查询语言询语言,而查询的条件要使用,而查询的条件要使用关系运算表达式关系运算表达式来表示。来表示。 因此,关系运算是设计关系数据语言的基础。因此,关系运算是设计关系数据语言的基础。 按表达查询的方法不同,关系运算可分为按表达

33、查询的方法不同,关系运算可分为关系代数关系代数和和关系演算关系演算两大类。两大类。 2.6 关系代数关系代数392.6.1 关系代数的分类及其运算符关系代数的分类及其运算符 关系代数是对关系进行集合代数运算,是基于关系代关系代数是对关系进行集合代数运算,是基于关系代数的操作语言,称为数的操作语言,称为关系代数语言,简称关系代数关系代数语言,简称关系代数。 它 是 由 I B M 在 一 个 实 验 性 的 系 统 上 实 现 的 , 称 为ISBL(Information System Base Language)语言。 ISBL的每个语句都类似于一个关系代数表达式。 关系代数的关系代数的运算

34、对象运算对象是是关系关系,运算结果运算结果也是也是关系关系,关,关系代数用到的运算符主要包括四类:系代数用到的运算符主要包括四类: 集合运算符:(并),-(差),(交),X(广义笛卡尔积); 专门的关系运算符:(选择),(投影),(连接),*(自然连接),(除); 算术比较运算符:(大于),(大于等于), ,=,)和逻辑运算符()和逻辑运算符( )连)连接起来的逻辑表达式,结果为逻辑值接起来的逻辑表达式,结果为逻辑值“真真”或或“假假”。 选取运算实际上是从关系选取运算实际上是从关系R中选取使逻辑表达式为真中选取使逻辑表达式为真的元组,是从行的角度进行的运算。的元组,是从行的角度进行的运算。5

35、2 设学生课程数据库,其关系模式为: 学生(学生,姓名,年龄,所在系); 课程(课程号,课程名,学分); 选课(学号,课程号,成绩).【例【例4-1】用关系代数表示在学生课程数据库中查询计算机】用关系代数表示在学生课程数据库中查询计算机系的全体学生的操作。系的全体学生的操作。 所在系所在系= 计算机系计算机系 (学生)(学生)【例【例4-2】用关系代数表示在学生课程数据库中查询年龄小】用关系代数表示在学生课程数据库中查询年龄小于于20岁的学生的操作。岁的学生的操作。 年龄年龄20(学生)(学生)53542. 投影(投影(Projection) 投影运算也是单目运算,关系投影运算也是单目运算,关

36、系R上的投影是从上的投影是从R中选择出中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,运算,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。记作:删去重复元组。记作:A(R)=tA|tR 其中其中A为为R中的属性列,中的属性列,为投影运算符。为投影运算符。 从其定义可看出,投影运算是从列的角度进行的运算,这从其定义可看出,投影运算是从列的角度进行的运算,这正是选取运算和投影运算的区别所在。选取运算是从关系正是选取运算和投影运算的区别所在。选取运算是从关系的水平方向上进行运算的

37、,而投影运算则是从关系的垂直的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的。方向上进行的。 55 投影运算可以改变关系的属性次序投影运算可以改变关系的属性次序 56例例4 查询教师关系中有哪些系。查询教师关系中有哪些系。SNO(SC) 结果如右图所示结果如右图所示 由例由例4可以看出,投影后取消了某些属性列后,就可能可以看出,投影后取消了某些属性列后,就可能出现重复行,应该取消这些完全相同的行。所以投影出现重复行,应该取消这些完全相同的行。所以投影之后,不但减少了属性,元组也可能减少,新关系与之后,不但减少了属性,元组也可能减少,新关系与原关系不相容。原关系不相容。 SNO95

38、001950019500157例例2.8 查询选项了查询选项了1课程的学生号。课程的学生号。SNO(CNO=1(SC) 结果如右图所示。结果如右图所示。 本例中选取运算和投影运算相结合,先在选课表中选本例中选取运算和投影运算相结合,先在选课表中选取满足条件的元组,再于取满足条件的元组,再于SNO属性上进行投影。属性上进行投影。 SNO95001583. 连接(连接(Join) 连接运算是二目运算,是从两个关系的笛卡尔积中选连接运算是二目运算,是从两个关系的笛卡尔积中选取满足连接条件的元组,组成新的关系。取满足连接条件的元组,组成新的关系。 设关系设关系R(A1,A2,An)及)及S(B1,B2

39、,Bm),连接连接属性集属性集X包含于包含于A1,A2,An,及及Y包含于包含于B1,B2,Bm,X与与Y中属性列数目相等,且相对应中属性列数目相等,且相对应属性有共同的域。属性有共同的域。若若Z=A1,A2An/X (/X:去掉去掉X之之外的属性外的属性) 及及W=B1,B2Bm/Y,则则 R及及S可表示为可表示为R(Z,X),S(W,Y) 关系关系R和和S在连接属性在连接属性X和和Y上的连接,就是以上的连接,就是以RS笛笛卡尔积中,选取卡尔积中,选取X属性列上的分量与属性列上的分量与Y属性列上的分量属性列上的分量满足给定满足给定比较条件的那些元组,也就是在比较条件的那些元组,也就是在RS上

40、选上选取在连接属性取在连接属性X,Y上满足上满足条件的子集,组成新的关系。条件的子集,组成新的关系。新关系的度为新关系的度为n+m。 59记作:记作: RS=t rts |trRtsStrXtsY为真为真 XY 其中,其中,是连接运算符,是连接运算符,为算术比较运算符,也称为算术比较运算符,也称连连接;接; XY为连接条件;为连接条件; 为“=”时,称为等值连接; 为“”时,称为大于连接。 连接运算为非基本运算,可以用选取运算和广义笛卡尔连接运算为非基本运算,可以用选取运算和广义笛卡尔积运算来表示:积运算来表示:RS=xy(RS)60 在连接运算中,一种最常用的连接是自然连接。在连接运算中,一

41、种最常用的连接是自然连接。 所谓自然连接就是在等值连接的情况下,当连接属性所谓自然连接就是在等值连接的情况下,当连接属性X与与Y具有相同属性组时,把在连接结果中重复的属性具有相同属性组时,把在连接结果中重复的属性列去掉。即如果列去掉。即如果R与与S具有相同的属性组具有相同的属性组Y,则自然连,则自然连接可记作:接可记作:R*S=t rts |trRtsStrY=tsY 自然连接是在广义笛卡尔积自然连接是在广义笛卡尔积RS中选出同名属性上符中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。组成新的关系。 61例例2.9

42、 如图如图2.9(a)、(b)所示的两个关系所示的两个关系R与与S,(c)为为R和和S的的大于连接(大于连接(CD),),(d)为为R和和S的等值连接(的等值连接(C=D),),(e)为为R和和S的等值连接(的等值连接(R.B=S.B),),(f)为为R和和S的自然的自然连接。连接。 R S (a) (b) ABC BDa1b12 b15a1b24 b26a2b36 b37a2b48 b3862大于连接(大于连接(CD) 等值连接(等值连接(C=D) (c) (d) AR.BCS.BD AR.BCS.BDa2b36b15 a2b36b26a2b48b15 a2b48b38a2b48b26 a2

43、b48b37 63等值连接等值连接(R.B=S.B) 自然连接自然连接 (e) (f) 图图2.9 连接运算举例连接运算举例 AR.BCS.BD ABCDa1b12b15 a1b125a1b24b26 a1b246a2b36b37 a2b367a2b36b38 a2b36864【例【例4-4】设学生和选课关系中的数据如下,学生与选课之间的笛卡儿积、等值连】设学生和选课关系中的数据如下,学生与选课之间的笛卡儿积、等值连接和自然连接的结果如表所示。接和自然连接的结果如表所示。 学号学号姓名姓名年龄年龄所在系所在系 学号学号课程名课程名成绩成绩98001张三张三20计算机系计算机系98001数据库数

44、据库6298005李四李四21数学系数学系98001数据结构数据结构73 98005微积分微积分80学生学生.学号学号姓名姓名年龄年龄所在系所在系选课选课.学号学号课名课名成绩成绩980019800198001980059800598005张三张三张三张三张三张三李四李四李四李四李四李四202020212121计算机系计算机系计算机系计算机系计算机系计算机系数学系数学系数学系数学系数学系数学系980019800198005980019800198005数据库数据库数据结构数据结构微积分微积分数据库数据库数据结构数据结构微积分微积分627380627380学生 选课 学生选课 65学生学生.学号

45、学号姓名姓名年龄年龄所在系所在系选课选课.学号学号课名课名成绩成绩980019800198005张三张三张三张三李四李四202021计算机系计算机系计算机系计算机系数学系数学系980019800198005数据库数据库数据结构数据结构微积分微积分627380学生学生.学号学号姓名姓名年龄年龄所在系所在系课名课名成绩成绩980019800198005张三张三张三张三李四李四202021计算机系计算机系计算机系计算机系数学系数学系数据库数据库数据结构数据结构微积分微积分627380学生 选课 学生.学号=选课.学号 学生 选课 66结合上例,我们可以看出结合上例,我们可以看出等值连接与自然连接的区

46、别等值连接与自然连接的区别: 1. 等值连接中不要求相等属性值的属性名相同,而自然等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。如上例在同名属性才能进行自然连接。如上例R中的中的C列和列和S中中的的D列可进行等值连接,但因为属性名不同,不能进行列可进行等值连接,但因为属性名不同,不能进行自然连接。自然连接。 2. 等值连接不将重复属性去掉,而自然连接去掉重复属等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。如性,也可以说,自然连

47、接是去掉重复列的等值连接。如上例上例R中的中的B列和列和S中的中的B列进行等值连接时,结果有两列进行等值连接时,结果有两个重复的属性列个重复的属性列B,而进行自然连接时,结果只有一个属而进行自然连接时,结果只有一个属性列性列B。 67例例2.10 查询讲授数据库课程的教师姓名。查询讲授数据库课程的教师姓名。TN(CN=数据库(C)*TNO,CNO(TC)*TNO,TN(T)或TN(TNO(CN=数据库(C)*TC)*TNO,TN(T) 结果如右图所示。结果如右图所示。 TN王平刘伟张兰684. 除法除法(Division) 除法运算是二目运算,设有关系除法运算是二目运算,设有关系R(X,Y)与

48、关系)与关系S(Y,Z),其中),其中X,Y,Z为属性集合,为属性集合,R中的中的Y与与S中中的的Y可以有不同的属性名,但对应属性必须出自相同可以有不同的属性名,但对应属性必须出自相同的域。关系的域。关系R除以关系除以关系S所得的商是一个新关系所得的商是一个新关系P(X),),P是是R中满足下列条件的元组在中满足下列条件的元组在X上的投影:元组在上的投影:元组在X上分量值上分量值x的象集的象集Yx包含包含S在在Y上投影的集合。记作:上投影的集合。记作:RS=trX|trRy(S)Yx 其中,其中,Yx为为x在在R中的象集,中的象集,x= trX。 除法运算为非基本运算,可以表示为:除法运算为非

49、基本运算,可以表示为:RS=x(R)x(x(R)SR) 69关系代数关系代数 除除(Division)象集:给定一个关系R(X, Y),X和Y为属性组。当tX=x时,x在R中的象集为: Yx=tY| tR, tX=x除:给定关系R(X, Y)和S(Y,Z),其中X,Y,Z 为属性组。R中的Y和S中的Y可以有不同的名字,但必须取自同一个域,R与S除得到一个新关系P(X), P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作: R S=trX| tr Ry(S) Yx70【例【例4-5】给出选课、选修课和必修课】给出选课、选修课和必修课3个关系,

50、它们的关系模式为:个关系,它们的关系模式为: 选课选课(学号,学号,课号,成绩课号,成绩);选修课;选修课(课号,课名课号,课名);必修课;必修课(课号,课名课号,课名). 学号学号课号课号成绩成绩 课号课号课名课名S1C1AC2计算机图计算机图形学形学S1C2B必修课必修课S1C3BS2C1A课号课号科名科名S2C3BC1数据结构数据结构S3C1BC3操作系统操作系统S3C3B选课选课选修课选修课S4C1AS4C2A学号学号成绩成绩S5C2BS1BS5C3BS4AS5C1AS5B71学号成绩 学号S3BS1 S2S3S5选课必修课 学号,课号(选课)必修课 72象集象集ABCDEa1b15d

51、13a1b15d27a1b25d310a2b35d32a4b56d27a4b56d310a4b56d32a6b66d52(a1,b1)的象的象CDE5d135d27(a1,b2)的象的象CDE5d310(a4,b5)的象的象CDE6d276d3106d32XY73除除ABCDEa1b15d13a1b15d27a1b25d310a2b35d32a2b15d52a3b26d13a4b56d27a4b56d310XY(a4,b5)=CDEF6d27fa6d310fb6d32fcYR上分量值上分量值X 的象集的象集Yx包含包含S在在Y上的投影上的投影74学生选课库的关系模式为: 学生(学号,姓名,性别

52、,年龄,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).【例【例4-64-6】求选修了课程号为】求选修了课程号为“C2”C2”课程的学生学号。课程的学生学号。 学号学号(课程号课程号= C2= C2(选课)(选课)【例【例4-74-7】求选修了课程号为】求选修了课程号为“C2”C2”课的学生学号和姓名。课的学生学号和姓名。 学号,姓名学号,姓名(课程号课程号= C2= C2(选课学生)(选课学生)【例【例4-84-8】求没有选修课程号为】求没有选修课程号为“C2”C2”课程的学生学号。课程的学生学号。 学号学号(学生)(学生)-学号学号(课程号课程号= C2= C2(

53、选课)(选课)本题不能写为:本题不能写为: 学号学号(课程号课程号 C2 C2(选课)(选课)75【例【例4-94-9】求既选修】求既选修“C2”C2”课程,又选修课程,又选修“C3”C3”课程的学生学号。课程的学生学号。学号学号(课程号课程号= C2 = C2 选课选课)学号学号(课程号课程号= C3= C3( (选课选课)该题不能写为:该题不能写为:学号学号(课程号课程号=C2 =C2 课程号课程号=C3=C3(选课)(选课)【例【例4-104-10】求选修课程号为】求选修课程号为“C2”C2”或或“C3”C3”课程的学生学号。课程的学生学号。学号学号(课程号课程号=C2=C2( (选课选

54、课)学号学号(课程号课程号=C3=C3( (选课选课)或或 学号学号(课程号课程号=C2 =C2 课程号课程号=C3=C3(选课)(选课)【例【例4-114-11】求选修了全部课程的学生学号。】求选修了全部课程的学生学号。学号,课程号学号,课程号(选课(选课课程)课程)【例【例4-124-12】一个学号为】一个学号为“98002”98002”的学生所学过的所有课程可能也被其他学生选修,的学生所学过的所有课程可能也被其他学生选修,求这些学生的学号和姓名。求这些学生的学号和姓名。学号,姓名学号,姓名(学号,课程号学号,课程号( (选课选课) )课程号课程号(学号学号= 98002= 98002(

55、(选课选课) () (学生学生) ) 764.2关系代数关系代数关系除法运算的步骤:关系除法运算的步骤:将被除关系属性分为象集属性和结果属性对象集属性进行投影目标数据集将被除关系分组:结果属性值一样的元组分为一组1)找出结果集77除运算实例除运算实例学号学号课号课号成绩成绩S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A课号课号课名课名C1数据结构数据结构C3操作系统操作系统S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1AC1数据结构数据结构C3操作系

56、统操作系统S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A=S3B选课选课必修课必修课选择了所有必修课表选择了所有必修课表 中的课程中的课程的学生的学号和成绩的学生的学号和成绩78小小 结结 关系数据库系统关系数据库系统是目前使用最广泛的数据库系统,本是目前使用最广泛的数据库系统,本书的重点也是讨论关系数据库系统。书的重点也是讨论关系数据库系统。 本章系统地介绍了关系数据库的一些基本概念,其中本章系统地介绍了关系数据库的一些基本概念,其中包括关系模型的数据结构、关系的完整性及其关系操包括关系模型的数据结构、关系的完整性及其

57、关系操作。作。79 关系演算是以数理逻辑中的谓词演算为基础的,通过关系演算是以数理逻辑中的谓词演算为基础的,通过谓词形式来表示查询表达式。谓词形式来表示查询表达式。 根据谓词变元的不同,可将关系演算分为元组关系演根据谓词变元的不同,可将关系演算分为元组关系演算和域关系演算。算和域关系演算。2.7.1 元组关系演算语言元组关系演算语言 元组关系演算元组关系演算是以元组变量作为谓词变元的基本对象。是以元组变量作为谓词变元的基本对象。 元组关系演算语言的典型代表是元组关系演算语言的典型代表是E.F.Codd提出的提出的ALPHA语言,这种语言虽然没有实际实现,但较有语言,这种语言虽然没有实际实现,但

58、较有名气,名气,INGRES关系数据库上使用的关系数据库上使用的QUEL语言,就语言,就是在是在ALPHA语言的基础上研制的。语言的基础上研制的。 这里主要介绍这里主要介绍ALPHA语言和语言和QUEL语言语言 2.7 关系演算关系演算 802.7.1.1 ALPHA语言语言 ALPHA语言是以语言是以谓词公式谓词公式来定义查询要求的。在谓词来定义查询要求的。在谓词公式中存在客体变元,这里称为公式中存在客体变元,这里称为元组变量元组变量。 元组变量是一个变量,其变化范围为某一个命名的关元组变量是一个变量,其变化范围为某一个命名的关系。系。 ALPHA语言的基本格式是:语言的基本格式是: ():

59、 操作符操作符有有GET,PUT,HOLD,UPDATE,DELETE,DROP等到种。等到种。 工作空间工作空间是指内存空间,可以用一个字母表示,通常是指内存空间,可以用一个字母表示,通常用用W表示,也可以用别的字母表示。工作空间是用户表示,也可以用别的字母表示。工作空间是用户与系统的通信区。与系统的通信区。 目标表目标表用于指定操作(如查询、更新等)出来的结果,用于指定操作(如查询、更新等)出来的结果,它可以是关系名或属性名,一答操作语句可以同时对它可以是关系名或属性名,一答操作语句可以同时对多个关系或多个属性进行操作。多个关系或多个属性进行操作。81 操作条件操作条件是用谓词公式表示的逻

60、辑表达式,只有满足是用谓词公式表示的逻辑表达式,只有满足此条件的元组才能进行操作,这是一个可选项,缺省此条件的元组才能进行操作,这是一个可选项,缺省时表示无条件执行操作符规定的操作。除此之外,还时表示无条件执行操作符规定的操作。除此之外,还可以在基本格式上加上排序要求,定额要求等。可以在基本格式上加上排序要求,定额要求等。 下面以教学数据库(图下面以教学数据库(图1.121.12)为例,说明)为例,说明ALPHAALPHA语言的使用。语言的使用。 1. 数据查询数据查询(1)简单查询)简单查询例例 查询所有学生的数据。查询所有学生的数据。GET W (S) GET语句的作用是把数据库中的数据读

温馨提示

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

评论

0/150

提交评论