第2章 关系数据库系统_第1页
第2章 关系数据库系统_第2页
第2章 关系数据库系统_第3页
第2章 关系数据库系统_第4页
第2章 关系数据库系统_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

《数据库原理》

第2章关系数据库系统严冬梅陈立君张铠饶俊宋丽红李玉芝但志广编著关系数据库简介提出关系模型的是美国IBM公司的E.F.Codd1970年提出关系数据模型E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》,1970之后,提出了关系代数和关系演算的概念1972年提出了关系的第一、第二、第三范式1974年提出了关系的BC范式2.1关系数据结构2.2关系操作2.3完整性约束2.4关系代数2.5本章小结第2章关系数据库系统2.1.1关系及相关概念2.1.2关系模式2.1.3关系数据库2.1关系数据结构2.1.1关系

单一的数据结构----关系现实世界的实体以及实体间的各种联系均用关系来表示逻辑结构----二维表从用户角度,关系模型中数据的逻辑结构是一张二维表建立在集合代数的基础上2.1.1关系及相关概念⒈域(Domain)域是一组具有相同数据类型的值的集合。例:整数实数小于100的正整数英文字母集合{‘男’,‘女’}……2.笛卡尔积(CartesianProduct)

给定一组域D1,D2,…,Dn,这些域可以完全不同,也可以部分或完全相同。

D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di

Di,i=1,…,n}所有域的所有取值的一个组合不能重复2.1.1关系及相关概念2.笛卡尔积(续)例子:D1=导师集合={张清枚,刘逸}D2=专业集合={计算机专业,信息专业}Dn=研究生集合={李勇,刘晨,王敏}D1×D2×…×Dn={(张清枚,计算机专业,李勇),(张清枚,计算机专业,刘晨),(张清枚,计算机专业,王敏)……}2.笛卡尔积(续)笛卡儿积可以表示为一个二维表,表中每行为一个元组,每列对应一个域。例如,有三个域:D1=书名集合BOOKNAME={C语言程序设计、数据结构、数据库技术},D2=作者集合AUTHOR={王一,李二},D3=出版社集合PUBLISHER={清华大学出版社,天津大学出版社,科学出版社}。表2-1D1×D2×D3的笛卡儿积BOOKAUTHORPUBLISHERC语言程序设计王一清华大学出版社C语言程序设计王一天津大学出版社C语言程序设计王一科学出版社C语言程序设计李二清华大学出版社C语言程序设计李二天津大学出版社C语言程序设计李二科学出版社数据结构王一清华大学出版社数据结构王一天津大学出版社数据结构王一科学出版社数据结构李二清华大学出版社数据结构李二天津大学出版社数据结构李二科学出版社数据库技术王一清华大学出版社数据库技术王一天津大学出版社数据库技术王一科学出版社数据库技术李二清华大学出版社数据库技术李二天津大学出版社数据库技术李二科学出版社元组分量2.笛卡尔积(续)

元组(Tuple)笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)(数据结构,王一,天津大学出版社)、(数据库技术,李二,科学出版社)等都是元组分量(Component)笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量数据结构、天津大学出版社等都是分量基数(Cardinalnumber)若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:上例基数=2*2*3=12笛卡尔积的表示方法笛卡尔积可表示为一个二维表表中的每行对应一个元组,表中的每列对应一个域2.笛卡尔积(续)3.关系(Relation)

D1×D2×…×Dn的子集称作在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示。R为关系名n是关系的目或度关系是笛卡儿积的子集,因此关系也是一个二维表。2.1.1关系及相关概念3.关系(Relation)关系中的每个元素是关系中的元组,通常用t表示。当n=1时,称该关系为单元关系(Unaryrelation)或一元关系当n=2时,称该关系为二元关系(Binaryrelation)2.1.1关系及相关概念2.1.1关系及相关概念关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域BOOKAUTHORPUBLISHERC语言程序设计王一清华大学出版社数据结构王一天津大学出版社C语言程序设计李二科学出版社数据库技术王一科学出版社4.关键字(候选码)关系的每一列称为一个属性。若关系中的某一属性组能唯一地标识一个元组,则该属性称为候选码(CandidateKey)。例如:在某个图书馆,馆藏的图书都有唯一的编码,这个编码就是候选码。若一个关系有若干个候选码,则选定其中一个为主码(PrimaryKey)。例如:馆藏的图书除了在馆内唯一的编码外,还有一个唯一的ISBN,因此ISBN也是候选码,但是,可以制定图书编号为主属性。2.1.1关系及相关概念4.关键字主码的诸属性称为主属性,不包含在任何候选码中的属性为非码属性。例如在借阅(图书证号,图书编号,借阅日期,应还日期)这个关系中,图书证号+图书编号为主码,所以图书证号和图书编号均为主属性,而借阅日期和应还日期为非码属性。2.1.1关系及相关概念5.关系的约束列是同质的,即列中的每一个分量来自同一个域。不同的列可以来自相同的域,但属性名不能相同,即同一个关系中,属性名不能相同。列的顺序无关紧要,可以任意交换。行的顺序无关紧要,可以任意交换。关系中没有重复元组,即任意两个元组不能完全相同。分量必须取原子值,即每一个分量都是不可分的数据项。2.1.1关系及相关概念6.关系的三种类型基本关系基本关系(通常又称基本关系或基表),是实际存在的表,它是实际存储数据的逻辑表示,相当于模式。视图表视图表是由基本表或其他视图表导出的表。由于视图表不是实际的表,它本身不独立存储在数据库中,数据库中只存放视图表的定义,因此视图表是虚表。查询表查询表是查询结果对应的表,在数据库中仅存放查询表的定义,查询运行后才能生成查询表。2.1.1关系及相关概念1.关系模式的定义关系模式是对关系的描述和抽象,关系是关系模式在某一时刻的状态或内容。换言之,关系模式是型,关系是值。关系模式是静态的、稳定的,关系是动态的,不同时刻关系模式中的关系可能会不同。关系模式和关系往往统称为关系。2.1.2关系模式1.关系模式的定义从形式化的角度可以将关系模式定义成一个五元组:R(U,D,DOM,F)。其中各元组表达意义如下:R——关系名;U——属性组,即组成R的全部属性的集合;D——域的集合,即属性取值范围的集合;DOM——U与D之间的映像;F——属性组U上的数据依赖关系的集合。关系模式可以简计为R(U)或R(A1,A2,…,An),其中R为关系名,A1,A2,…,An为属性名。2.1.2关系模式22例:在STUDENT关系模式中,出生日期和办证日期均来自于同一个域——时间域,取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域,如:DOM(出生日期)=DOM(办证日期)=TIME2.关系模式的优点1)数据结构简单关系数据模型的本质就是二维表,其中公共属性名指示着各表格间的联系。2)可以直接处理多对多的关系层次和网状模型不能直接处理多对多的关系,而关系模型由于采用表格可以直接表示两实体间的联系,所以能直接处理多对多的关系。2.1.2关系模式2.关系模式的优点3)能够一次提供一个元组集合每一个操作命令都可以得到满足某种条件的所有记录,而层次与网状模型每一次操作只能得到一条记录,如果要得到所有满足条件的记录,则需要借助主语言并配合DML的命令。4)数据独立性较高用户只要指出他们所要存放的数据类型、数据长度等数据本身的特征,而不必涉及这些数据的物理存放,因而数据独立性较高,而层次和网状模型中,用户或多或少地都要对其数据的物理组织进行干预。2.1.2关系模式2.关系模式的优点5)坚实的理论基础关系模型是建立在集合代数理论的基础上,并且近几年又投入了大量的人力物力,使得关系理论趋于完善.而层次和网状模型的系统研制和数据库设计都无一定的理论指导,仅凭设计者的经验和技术水平。因此,系统研制和应用设计都较为盲目。由于关系模型的系统研制和应用设计有了理论指导,所以在层次和网状模型的系统中出现的很多问题在关系模型中都可以避免。2.1.2关系模式3.关系模式的缺点1)查询效率较低关系模型的DBMS能提供较高的数据独立性以及非过程化的查询语言,因此,系统的负担就很重,过去要程序员做的工作,现在全部由系统包办代替,其中会影响效率的操作是笛卡尔积运算和两个表的连接。2.1.2关系模式3.关系模式的缺点2)关系DBMS实现较因难为提高效率,必须使查询优化,这一工作是复杂的。3)关系DBMS实现要求规范化关系模型的DBMS要求程序员和DBA应熟悉关系数据库设计理论,能够熟练进行关系模式规范化工作,以便充分发挥关系DBA的功能。2.1.2关系模式4.关系系统的六大目标1)提供高度的数据独立性;2)提供严格而简明的数据视图;3)简化DBA的工作;4)建立理论基础;5)把事务管理和文件管理结合起来;6)把基于数据的应用程序设计提高到一个新的水平,即操作对象是记录集合,而不是单个记录。2.1.2关系模式对应于一个关系模式的所有关系的组合称为一个关系数据库。关系数据库也有型和值之分。关系数据库的型是对关系数据库的描述,包括若干域和定义在这些域上的关系模式,也可称为关系数据库模式。关系数据库的值,是某一时刻对应的关系的集合,也可称为关系数据库。通常,关系数据库模式和关系数据库统称为关系数据库。2.1.3关系数据库数据库是一张张表的集合。在关系数据库中,表是逻辑结构而不是物理结构。关系数据库系统在物理层可以使用任何有效的存储结构来存储数据,如有序文件、索引、哈希表、指针等。因此,表是对物理存储数据的一种抽象表示,是对很多存储细节的抽象,如存储记录的位置、记录的顺序、数据值的表示等,以及记录的访问结构,如索引等,对用户来说都是不可见的。关系↔表元组↔记录属性↔字段关系模式↔数据库2.1.3关系数据库2.2.1基本关系操作2.2.2关系数据语言分类2.2关系操作集合

2.2.1基本关系操作

常用的关系操作查询:选择、投影、连接、除、并、交、差数据更新:插入、删除、修改关系操作的特点集合操作方式:操作的对象和结果都是集合,一次一集合的方式2.2.2关系数据库语言的分类关系数据语言1.关系代数语言例如:ISBL2.关系演算语言元组关系演算语言例如:ALPHA,QUEL域关系演算语言例如:QBE3.具有关系代数和关系演算双重特点的语言例如:SQL34(1)数据查询(可分解为三种基本操作)①一个关系内属性的指定(列的选择);②一个关系内元组的指定(行的选择);③两个或多个关系的合并。数据执行的算法如下:i.如果查询来自一个关系R,则直接执行ii;如果查询来自两个或者多个关系,则首先执行③(如果是多于两个的关系,可能要多次执行③),直至将两个或多个关系合并成一个关系R;ii.从关系R中检索出满足条件①②的数据。35(2)数据插入。----插入操作(3)数据删除。----先选择后删除(4)数据修改。----先删除后插入36查询是关系操作中最主要的部分在数据查询中的三种基本操作可以分别通过投影(Project)、选择(Select)和连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Except)和笛卡尔积等来完成。选择、投影、并、差、笛卡尔积是5种基本操作37关系代数语言用对关系的运算来表达查询要求关系演算语言:用谓词来表达查询要求元组关系演算语言谓词变元的基本对象是元组变量代表:APLHA,QUEL域关系演算语言谓词变元的基本对象是域变量代表:QBE38计算机科学与工程学院具有关系代数和关系演算双重特点的语言代表:SQL(StructuredQueryLanguage)2.3.1实体完整性2.3.2参照完整性2.3.3用户定义完整性2.3完整性约束2.3.1实体完整性

实体完整性规则:若属性(组)A是基本关系R主码上的属性,则属性A不能取空值。

实体完整性规则是对基本关系的约束和限定。一个基本关系表通常对应一个实体集,例如,读者关系对应读者集合。现实世界中的实体是可以区分的,它们具有一种唯一性质的标识。例如,图书的图书编号等。在关系模型中,主码作为唯一的标识且不能为空。组成主码的每一个属性都不能取空值。2.3.1实体完整性图书证编号姓名类型性别出生日期S001王红大本女1989-02-13S002张静研究生女1984-06-20T001舒欣副教授女1972-03-26李雷讲师男1975-09-16破坏实体完整性2.3.2参照完整性关系间的引用在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。例1学生实体、专业实体

学生(学号,姓名,性别,年龄,院系编号)院系(院系编号,系主任,办公地点)学生关系引用了院系关系的主码“院系编号”。学生关系中的“院系编号”值必须是确实存在的院系的院系编号,即院系关系中有该院系的记录。2.3.2参照完整性设基本关系R、S(可为同一关系)。若F是R的一个属性(组),但不是R的码。如果F与S的主码K相对应,则称F是R的外码。并称R为参照关系(ReferencingRelation),S为目标关系(TargetRelation)或被参照关系(ReferencedRelation)不难看出,主码K和外码F必须定义在相同域上,它们相对应即有引用关系。2.3.2参照完整性参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值2.3.2参照完整性参照完整性又称为引用完整性,它定义了外码与主码之间的引用规则。参照完整性规则的作用:禁止从表中插入主表中不存在的关键字的数据行。禁止会导致从表中的相应值孤立的主表中外部关键字值的改变。禁止删除与从表中有对应记录的主表记录。2.3.2参照完整性学生关系中每个元组的“院系号”只能取:空值,表示该学生刚被录取,尚未分配到院系。非空值,这时该值必须是院系关系中某个院系号的值。课程关系中每个元组的“前导课编号”只能取某一课程号值或为空值,若为空值表示该没有前导课等。2.3.2用户定义完整性关系数据库系统一般包括以下几种用户定义的完整性约束:①定义属性是否为空值;②定义属性值的唯一性;③定义属性的取值范围;④定义属性的缺省值;⑤定义属性间函数依赖关系。2.3.2用户定义完整性学生关系中每个元组的“院系号”只能取:空值,表示该学生刚被录取,尚未分配到院系。非空值,这时该值必须是院系关系中某个院系号的值。课程关系中每个元组的“前导课编号”只能取某一课程号值或为空值,若为空值表示该没有前导课等。2.4.1传统的集合运算2.4.2专门的关系运算2.4.3综合算例2.4关系代数2.4关系代数传统集合运算符专门的关系运算符∪:并σ:选择辅助专门关系运算符∩:交∏:投影比较运算符:>、≥、<、≤、=、≠-:差:连接逻辑运算符:﹁、∧、∨、×:广义笛卡尔积÷:除2.4.1传统的集合运算1.并(Union)

R∪S

={t|t

R∨t

S}仍为n目关系,由属于R或属于S的元组组成R和SR∪S,是在R或S或两者中的元组的集合;一个元组在并集中只出现一次;R和S必须同类型(属性集相同、次序相同,但属性名可以不同)。R∪S2.4.1传统的集合运算2.交(Intersection)

R∩S={t|t

R∧t

S}仍为n目关系,由属于R并属于S的元组组成R和SR∩S,是在R或S或两者中的元组的集合;一个元组在并集中只出现一次;R和S必须同类型(属性集相同、次序相同,但属性名可以不同)。R∩S2.4.1传统的集合运算3.差(Difference)

R-S={t|t

R∧t

S}仍为n目关系,由属于R并且不属于S的元组组成R和SR-S,是在R中而不在S中的元组的集合;两关系的交集可以通过差运算导出:R∩S=R﹣(R﹣S)和S必须同类型(属性集相同、次序相同,但属性名可以不同)。R-S2.4.1传统的集合运算4.笛卡尔积(CartesianProduct)列:(n+m)列元组的集合元组的前n列是关系R的一个元组,k1行后m列是关系S的一个元组,k2行行:k1×k2个元组R×S2.4.2专门的关系运算先引入几个记号(1)R,t

R,t[Ai]

设关系模式为R(A1,A2,…,An)

它的一个关系设为R

t

R表示t是R的一个元组

t[Ai]则表示元组t中相应于属性Ai的一个分量

2.4.2专门的关系运算t[]A={A,C}={B}tt[Ai]At[A]ACa1c1a1c2a2c1Bb1b2A(2)A,t[A],若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。

t[A]

=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。

则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。

2.4.2专门的关系运算(3)

R为n目关系,S为m目关系。

tr

R,ts

S,称为元组的连接。是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。2.4.2专门的关系运算2.4.2专门的关系运算(4)象集Zx

给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(ImagesSet)为:

Zx={t[Z]|t

R,t[X]=x}

它表示R中属性组X上值为x的诸元组在Z上分量的集合

2.4.2专门的关系运算X={S},则:001在R中的象集Z001={(C1,80),(C2,85),(C3,90)}002在R中的象集Z002={(C2,95)}003在R中的象集Z003={(C2,90),(C3,85)}SCG001C180001C285001C390002C295003C290003C3851.选择(Selection)选择是对关系的水平分解运算,是对关系进行的操作的元组组成新关系。选择运算表示为:σF(R)={t|t

R∧F(t)=T}其中:σ为选择运算符;R是关系名;F为逻辑表达式。F中的运算对象通常为常量、函数或元组分量,运算符为比较运算符和逻辑运算符,表示的条件取值为T或F。选择运算是从关系的水平方向进行的运算,是从关系R中选择满足给定条件的所有元组。1.选择(Selection)σ2.投影(Projection)投影是对关系的垂直分解运算,即从关系的属性集中选择属性子集,构成的元组组成一个新关系。投影操作表示为:πA(R)={t[A]|t

R}其中:π为投影运算符;R是关系名;A表示关系R中的属性子集合。该操作从关系R中移出部分列,只保留A列组成一个新的关系,并去掉重复的元组。新关系中的属性值来自原关系中相应的属性值,列的次序在新关系中可以重新排列。2.投影(Projection)投影操作主要是从列的角度进行运算,但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。π3.连接(Join)连接是从两个关系的广义笛卡儿积中选择属性间满足一定条件的元组的运算。表示为:RAθB

S={|tr

R∧ts

S∧tr[A]θts[B]}其中,A和B分别为R和S上可比的属性组;θ是比较运算符。连接运算从R和S的笛卡儿积R×S中选取在A属性组(R关系)上的值与在B属性组(S关系)上的值满足比较关系θ的元组。等值连接与自然连接θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组。等值连接为RA=B

S,记作:

RA=B

S={|tr

R∧ts

S∧tr[A]=ts[B]}3.连接(Join)等值连接与自然连接自然连接是一种特殊的等值连接,它要求等值连接的连接属性是相同属性(或属性组),即R和S具有相同的属性组,且该组属性具有相同的列值,则该等值连接称为自然连接R

S,记为:RS={|tr

R∧ts

S∧tr[B]=ts[B]}自然连接的结果关系中要去掉重复的属性。假定R和S具有的相同属性A,且R有n个属性S有m个属性,自然连接的结果有(n+m-1)个属性。3.连接(Join)3.连接(Join)3.连接(Join)一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

AθBRS外连接自然连接是选择两个关系在公共属性组上值相等的元组构成,因此与公共属性组值不同的R与S的元组被忽略了。如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN);如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。3.连接(Join)3.连接(Join)对于给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R÷S应当满足元组在X上的分量值x的像集,Yx包含关系S在属性Y上的投影的集合。R÷S记作:R÷S={tr[X]|tr

R∧πY(S)

Yx}其中,Yx为x在R中的像集,x=tr[X]4.除(Division)4.除(Division)πCD(S)={(c,d),(e,f)},对于关系R,属性组X即AB可以取三个值{(a,b),(b,d),(c,k)},它们的像集分别为:(a,b)的像集为{(c,d),(e,f),(h,k)}(b,d)的像集为{(e,f),(d,l)}(c,k)的像集为{(c,d),(e,f)}S在(a,b)和(c,k)的像集包含了S在CD属性组上的投影{(c,d),(e,f)}所以R÷S={(a,b),(c,k)}。2.4.3综合算例SnoSnameSsexSageSclass2007111001张宇M20CS07012007111002赵娜F19CS07012006111121王昕F21SE06012006111122李伟M20SE06012009111001张莉F18MA09012009112001李彤F19MA0901……………关系S2.4.3综合算例关系CCnoCnameCpnoCcredit01高等数学602程序设计基础01603数据结构02604计算机原理405数据库原理03306面向对象程序设计01407操作系统03408计算机网络技术073…………2.4.3综合算例关系SCSnoCnoGrade200711100103642007111001058120071110010472200611112102922006111121038520061111210487200611112105952009112001017920091120010286………学生关系S(学号Sno、姓名Sname、性别Ssex、年龄Sage、所在班Sclass);课程关系C(课程号Cno、名称Cname、先行课Cpno、学分Ccredit);选课关系SC(学号Sno、课程号Cno、成绩Grade)。2.4.3综合算例【例2.1】查询软件工程0601班的(SE0601班)全体学生σSclass='SE0601'(S)或σ5='SE0601'(S)2.4.3综合算例SnoSnameSsecSageScalss2006111121王昕F21SE06012006111122李伟M20SE0601【例2.2】查询所有课程的名称和学分πCname,Ccredit

温馨提示

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

评论

0/150

提交评论