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

下载本文档

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

文档简介

第3章

关系数据库

关系数据库系统概述关系数据模型关系模型的完整性约束关系代数关系数据库系统的三层模式结构本演示文稿可能包含观众讨论和即席反应。使用PowerPoint可以跟踪演示时的即席反应,在幻灯片放映中,右键单击鼠标请选择“会议记录”选择“即席反应”选项卡必要时输入即席反应单击“确定”撤消此框此动作将自动在演示文稿末尾创建一张即席反应幻灯片,包括您的观点。

第3章关系数据库关系数据库系统概述1关系数据库系统概述关系数据库的发展CODASYL于1962年发表的“信息代数”一文

E.F.Codd从1970年起发表了一系列的论文20世纪70年代末的实验系统SystemR和Ingres从20世纪80年代逐步走向成熟关系数据模型概述关系数据结构关系操作集合关系完整性约束关系数据库系统概述关系数据库的发展关系数据模型概述2关系数据结构关系数据结构非常简单,在关系数据模型中,现实世界中的实体及实体与实体之间的联系均用关系来表示。从逻辑或用户的观点来看,关系就是二维表。

关系数据结构关系数据结构非常简单,3关系操作集合传统的集合运算

并(Union)交(Intersection)差(Difference)广义笛卡尔积(ExtendedCartesianProduct)

专门的关系运算选择(Select)投影(Project)连接(Join)除(Divide)有关的数据操作查询(Query)插入(Insert)删除(Delete)修改(Update)

关系操作集合传统的集合运算4关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结果也是元组的集合。这和非关系模型的操作结果是一条记录有着重要区别。关系的操作能力可以用代数方式和逻辑方式来表示:代数方式是通过关系代数对关系的运算来表达查询要求的方式。逻辑方式是通过关系演算、用谓词表达对关系的查询要求的方式。现在关系数据库已经有了标准语言——SQL(StructuredQueryLanguage),它是一种介于关系代数和关系演算的语言。

综上所述,又可以把关系数据语言分为三类:关系代数语言、关系演算语言以及具有关系代数和关系演算双重特点的SQL语言。

关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结5关系完整性约束

在数据库中数据完整性是指保证数据正确的特性。它包括两方面的内容:

与现实世界中应用需求的数据的相容性和正确性;数据库内数据之间的相容性和正确性。

在关系数据模型中一般将数据完整性分为三类

实体完整性参照完整性用户定义完整性

关系完整性约束在数据库中数据完整性是指保证数据正确的特性。6关系数据模型关系模型的数据结构和基本术语

关系的形式定义

对关系的限定(关系的性质)

关系数据模型关系模型的数据结构和基本术语7关系模型的基本术语

参照关系和被参照关系:在关系数据库中可以通过外部关键字使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)被称为参照关系。

关系属性值域元组分量关系模式候选关键字主关键字主属性非主属性外部关键字关系模型的基本术语参照关系和被参照关系:在关系数据库中可以8关系的形式定义笛卡儿积定义:设D1,D2,…,Dn为任意集合,定义D1,D2,…,Dn的笛卡儿积为:其中每一个元素(d1,d2,…,dn)叫作一个n元组,简称元组,元组中每一个di叫作元组的一个分量。关系的形式定义:笛卡儿积D1×D2…×Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。关系的形式定义笛卡儿积定义:设D1,D2,…,Dn为任意集合9例如设:D1={P2,P4,P7,P9}D2={显示卡,声卡,解压卡}D1xD2={(P2,显示卡),(P2,声卡),(P2,解压卡),(P4,显示卡),(P4,声卡),(P4,解压卡),(P7,显示卡),(P7,声卡),(P7,解压卡),(P9,显示卡),(P9,声卡),(P9,解压卡),}R={(P2,显示卡),(P4,声卡),(P7,声卡),(P9,解压卡)}例如设:10P2P4P7P9显示卡声卡解压卡D1D2P2P2P2P4P4P4P7P7P7P9P9P9显示卡声卡解压卡显示卡声卡解压卡显示卡声卡解压卡显示卡声卡解压卡器件号器件名称P2P4P7P9显示卡声卡声卡解压卡=xD1D2笛卡尔积一个关系P2显示卡D1D2P2显示卡器件号器件名称P2显示卡=xD111需要说明两点关系是元组的集合,集合(关系)中的元素(元组)是无序的;而元组不是分量di的集合,元组中的分量是有序的。例如,在关系中(a,b)≠(b,a),但在集合中{a,b}={b,a}。若一个关系的元组个数是无限的,则该关系称为无限关系,否则称为有限关系;在数据库中只考虑有限关系。需要说明两点关系是元组的集合,集合(关系)中的元素(元组)是12关系的性质每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。行的顺序是无关紧要的,即行的次序可以任意交换。元组不可以重复,即在一个关系中任意两个元组不能完全一样。

关系的性质每一分量必须是不可分的最小数据项,即每个属性都是不13关系模型的完整性约束

实体完整性规则参照完整性规则用户定义完整性完整性约束的作用

关系模型的完整性约束实体完整性规则14实体完整性规则实体完整性是要保证关系中的每个元组都是可识别和唯一的。实体完整性规则的具体内容是:若属性A是关系R的主属性,则属性A不可以为空值。实体完整性是关系模型必须满足的完整性约束条件,也称作是关系的不变性。关系数据库管理系统可以用主关键字实现实体完整性,这是由关系系统自动支持的。实体完整性规则实体完整性是要保证关系中的每个元组都是可识别15对实体完整性规则的几点解释和说明实体完整性规则是针对关系而言的,而关系则对应一个现实世界中的实体集。例如,仓库关系对应现实世界中的仓库实体集。现实世界中的实体是可区分的,它们具有某种标识特征;相应地,关系中的元组也是可区分的,在关系中用主关键字做唯一性标识。主关键字中的属性、即主属性不能取空值。如果主属性取空值,则意味着关系中的某个元组是不可标识的,即存在不可区分的实体,这与实体的定义也是矛盾的。对实体完整性规则的几点解释和说明实体完整性规则是针对关系而言16参照完整性规则现实世界中的实体间存在着某种联系,而在关系模型中实体是用关系描述的、实体之间的联系也是用关系描述的,这样就自然存在着关系和关系之间的参照或引用。参照完整性也是关系模型必须满足的完整性约束条件,是关系的另一个不变性。通过一个例子来说明什么是参照完整性

参照完整性规则现实世界中的实体间存在着某种联系,而在关系模型17参照完整性例子学号课程分数001语文80001数学90002语文67002数学98003语文79003化学80004化学80学号姓名001王海002王芳003张军违背了参照完整性(学生表中不存在学号为“004”的学生,这个成绩到底是谁的成绩呢?)参照完整性例子学号课程分数001语文80001数学9000218参照关系和被参照关系的定义

设F是关系R的一个属性或属性组,另外有主关键字为K的关系S。如果关系R的属性或属性组F与关系S的主关键字K相对应,则称F是关系R的外部关键字,并称关系R是参照关系、S是被参照关系(或目标关系)。关系R和S可以是同一个关系。参照关系和被参照关系的定义设F是关系R的19参照完整性规则如果属性(或属性组)F是关系R的外部关键字,它与关系S的主关键字K相对应,则对于关系R中每个元组在属性(或属性组)F上的值必须为:●或者取空值(F的每个属性均为空值);●或者等于S中某个元组的主关键字的值。参照完整性规则如果属性(或属性组)F是20在关系系统中通过说明外部关键字来实现参照完整性,而说明外部关键字是通过说明引用的主关键字来实现的,也即通过说明外部关键字,关系系统则可以自动支持关系的参照完整性。

在关系系统中通过说明外部关键字来实现参21用户定义完整性一种与应用密切相关的数据完整性约束,如某个属性的值必须唯一某个属性的取值必须在某个范围内某些属性值之间应该满足一定的函数关系等类似以上的约束不是关系数据模型本身所要求的,而是为了满足应用方面的语义要求而提出的在用户定义完整性中最常见的是限定属性的取值范围,即对值域的约束,所以在用户定义完整性中最常见的是域完整性约束。用户定义完整性一种与应用密切相关的数据完整性约束,如22完整性约束的作用执行插入操作时检查完整性

执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。

执行删除操作时检查完整性

执行删除操作时一般只需要检查参照完整性规则。

执行更新操作时检查完整性

执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。

完整性约束的作用执行插入操作时检查完整性23关系代数基本概念和符号传统的集合运算专门的关系运算基本运算及变换

关系代数基本概念和符号24关系代数的基本概念关系代数的运算对象是关系,关系代数的运算结果也是关系(去掉重复元素)。与一般的运算一样,运算对象、运算符和运算结果也是关系代数的三个要素。关系代数的运算可以分为两大类传统的集合运算

专门的关系运算

关系代数的基本概念关系代数的运算对象是关系,关系代数的运算结25几个概念和专门的符号元组的分量元组的连串元组中属性的映像集几个概念和专门的符号元组的分量26元组的分量设有关系模式R(A1,A2,…,An)r∈R表示r是R的一个元组r.Ai或r[Ai]表示r这个元组中相应于属性Ai的一个分量例如,假设R是仓库关系,r=("WH1","北京",370)是仓库关系的一个元组,则r∈R,r.仓库号或r[仓库号]为"WH1"。元组的分量设有关系模式R(A1,A2,…,An)27元组的连串设R为m元关系,S为n元关系,并且

r=(r1,r2,…,rm)∈Rs=(s1,s2,…,sn)∈S则称为元组的连串。这是一个(m+n)元组,前m个分量为R中的一个m元组,后n个分量为S中的一个n元组。

元组的连串设R为m元关系,S为n元关系,并且28元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是单个属性,也可以是属性集,定义当X取值为x时,x在R中的映象集为:

元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是29设有如右上表所示的订购单关系,把它命名为R,并且进一步设X为属性职工号,Y为属性集{供应商号,订购单号,订购日期},则当X取值为E3时

{(S7,OR67,2002/06/23),(S4,OR79,2002/07/29),(S6,OR90,2002/07/13),(S3,OR91,2002/10/27)}Yx=映像集的例子设有如右上表所示的订购单关系,把它命名为R,并且进一步设X为30传统的集合运算集合的并运算集合的交运算集合的差运算集合的广义笛卡尔积运算传统的集合运算集合的并运算31并运算定义属于关系R或属于关系S的元组组成的集合RS={t|tRtS}RS两个关系R和S若进行并运算,则它们必须具有相同的关系模式:关系R和S必须元数相同的,即它们的属性数目必须相同对i,R的第i个属性的域必须和S的第i个属性的域相同并运算定义RS两个关系R和S若进行并运算,则它们必须具有相32并运算ABC367257723443RABC345723SABC367257723443345R∪S并运算ABC367257723443RABC345723SA33差运算定义所有出现在一个关系而不在另一关系中的元组集合RS={t|tRtS}RS两个关系R和S若进行差运算,则它们也必须具有相同的关系模式:关系R和S必须元数相同的,即它们的属性数目必须相同对i,R的第i个属性的域必须和S的第i个属性的域相同差运算定义RS两个关系R和S若进行差运算,则它们也必须具有34差运算ABC367257723443RABC345723SABC367257443R-SABC367S-R差运算ABC367257723443RABC345723SA35交运算定义所有同时出现在两个关系中的元组集合R∩S={r|rRrS}交运算可以通过差运算来重写R∩S=R(RS)RS交运算定义RS36交运算ABC367257723443RABC345723SABC723R∩S交运算ABC367257723443RABC345723SA37集合的并、交、差运算示意集合的并、交、差运算示意38集合的广义笛卡尔积运算设R和S是两个关系,如果R是m元关系、有k个元组,S是n元关系、有l个元组,则广义笛卡尔积R×S是一个m+n元关系、有k×l个元组。广义笛卡儿积可以记作:集合的广义笛卡尔积运算设R和S是两个关系,如果R是m元关系、39AB12RCD10102010EaabbSAB11112222CD1019201010102010EaabbaabbRx

SAB1RCD10EaSAB1CD10EaRxS40专门的关系运算选择运算(Select)投影运算(Project)连接运算(Join)除运算(Division)专门的关系运算选择运算(Select)41选择运算选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满足某个逻辑条件来指定的。选择运算表示为:其中R是关系名,σ是选择运算符,F是逻辑表达式。选择运算选择运算是从指定的关系中选择某些元组42选择运算ABC367257723443RA<5(R)

ABC367257443A<5C=7(R)

ABC367257选择运算ABC367257723443RA<5(R)AB43选择运算举例:σ职工号="E3"(订购单)订购单关系从订购单关系中选择职工号为“E3”的元组构成新的关系选择运算举例:σ职工号="E3"(订购单)订购单关系44投影运算1)选择指定的属性,形成一个可能含有重复行的表格;2)删除重复行,形成新的关系。投影运算对指定的关系进行投影操作,根据该关系分两步产生一个新关系:投影运算1)选择指定的属性,形成一个可能含有重复行的表格;45投影运算表示为其中R是关系名,π是投影运算符,A是被投影的属性或属性集。投影运算表示为其中R是关系名,π是投影运算符46投影cbcfedcbaCBABCbcef

R

πB,C(R)投影的结果中要去掉相同的行BCbcef

π2,3(R)CBcbfe

πC,B(R)投影cbcfedcbaCBABCbcefRπB,C(47投影运算举例:订购单关系选取职工号和供应商号两列构成新的关系π职工号,供应商号(订购单)投影运算举例:订购单关系选取职工号和供应商号48选择和投影运算举例:从订购单关系中,选取出职工号为E3的所经手的订购单号和与之相关的供应商号。订购单关系π供应商号,订购单号(σ职工号="E3"(订购单))选择和投影运算举例:从订购单关系中,选取出职49连接运算连接运算是两个表之间的运算,这两个表通常是具有一对多联系的父子关系。所以连接过程一般是由参照关系的外部关键字和被参照关系的主关键字来控制的,这样的属性通常也称为连接属性。连接运算连接运算是两个表之间的运算,这两个表50连接运算的概念连接运算是将满足两个表之间运算关系的记录连接成一条记录,所有这样的记录构成新的表(连接运算的结果)。连接运算可以表示为:这里Ai是R中的属性,Bj是S中的属性,θ是关系(比较)运算符,连接的结果是一个广义笛卡儿乘积的子集,其中的元组满足Ai和Bj间的θ关系。当θ为“=”时,称为等值连接;θ为“<”时,称为小于连接;θ为“>”时,称为大于连接等等。连接运算的概念连接运算是将满足两个表之间运算关系的记录连接成51连接987654321CBADE3162ABCDE123311236245662

RSB<D

R

SR与S的θ连接可以使用下面的两种方式表示连接987654321CBADE3162ABCDE123352连接987654321CBACD3162ABR.CS.CD1233145662

RS3=1

R

S同名属性的表示连接987654321CBACD3162ABR.CS.CD53自然连接在连接运算中最常用的连接是自然连接。自然连接运算一般表示为:

其中Ai和Bj要出自同一个值域,并且在实际应用中这两个属性往往具有相同的属性名。R与S的自然连接可以使用下面的两种方式表示自然连接在连接运算中最常用的连接是自然连接。54自然连接做了三件事:计算广义笛卡尔积R×S;选择满足条件r[Ai]=s[Bj]的所有元组;去掉重复的属性。自然连接做了三件事:计算广义笛卡尔积R×S;55自然连接AB12412CDaababrB13123DaaabbEs11112aaaabABCDErs自然连接AB1CDarB1DaEs1aABCDE56自然连接987654321CBACD3162

R

SABCD12314562

RSABR.CS.CD1233145662

RS3=1自然连接和等值连接(θ连接)的最大区别:1、在等值连接的结果中,需要指定连接条件,相同属性保留,在相同属性前加上名表加以区分2、在自然连接中不需要指定连接条件,连接条件是两个关系中相同属性的值相等,连接结果中相同属性只保留一个自然连接987654321CBACD3162RSABCD57自然连接的例子自然连接的例子58注意:为了使一个关系中的任一元组都参加自然连接,该元组的连接属性(字段)值必须出现在另一个参加连接的关系中;一般在实际应用中可以父无子,而不可以子无父,否则将破坏参照数据完整性。注意:为了使一个关系中的任一元组都参加自然连接,该元组的连接59综合运算实例根据以上关系求出在上海工作的职工的工资值都有哪些?仓库职工关系代数语句为:最后可表示为:综合运算实例根据以上关系求出在上海工作的职工60查询过程示意选择运算自然连接运算投影运算查询过程示意选择运算自然连接运算投影运算61注意自然连接和等值连接很相象,但它们不同,自然连接要去掉重复的属性,而等值连接却不需要去掉重复的属性。注意自然连接和等值连接很相象,但它们不同,自然连接要62除运算

设有关系R(X,Y)和S(Y),其中X、Y可以是单个属性或属性集,则除法运算定义为:如何理解除运算?除运算设有关系R(X,Y)和S(Y),其中X63理解除法运算R(X,Y)是被除关系S(Y)是除关系商关系由R中某些X属性值构成,其中的任一X值所对应的一组Y值都包含除关系S。除运算常用于至少…查询或运算理解除法运算R(X,Y)是被除关系64除运算的例子它的含义是:至少向WH1、WH3、WH5供货的供应商号。除运算的例子它的含义是:至少向WH1、WH3、WH5供货的供65除运算的例子除关系和商关系的笛卡尔积结果一定包含于被除关系。除运算的例子除关系和商关系的笛卡尔积结果一定包含于被除关系。66除运算姓名课程张军物理王红数学张军数学课程数学物理÷=姓名张军计算过程R(X,Y)S(Y)Z(X)说明:X代表属性“姓名”Y代表属性“课程”除运算姓名课程张军物理王红数学张军数学课程数学物理÷=姓名张67除运算没有选修全部课程的学生所有学生选修全部课程=数学张军数学王红物理张军课程姓名物理王红数学张军数学王红物理张军课程姓名姓名王红姓名王红张军姓名王红=姓名张军选修了全部课程的学生物理数学课程=物理王红数学张军数学王红物理张军课程姓名王红张军姓名πX(R)πY(S)πX(R)πY(S)πX(πX(R)πY(S)R)πX(R)πX(πX(R)πY(S)R)说明:X代表属性“姓名”Y代表属性“课程”πX(R)πY(S)RπX(R)πX(πX(R)πY(S)R)除运算没有选修全部课程的学生所有学生选修全部课程=数学张军68除运算除定义RS=πX(R)πX(πX(R)πY(S)R)除运算除定义69除运算课程数学物理=姓名课程成绩张军物理93王红数学86张军数学93王红物理92课程数学物理姓名课程张军物理王红数学张军数学王红物理姓名张军王红=姓名成绩张军93选修了全部课程并且成绩都相同的学生选修了全部课程的学生因此,在除之前应该先执行投影操作除运算课程数学物理=姓名课程成绩张军物理93王红数学86张70基本运算及变换在关系代数运算中集合的并运算、差运算、笛卡尔积运算以及选择运算和投影运算是5种基本运算,另三种运算(集合的交运算以及连接运算和除运算)可以用5种基本运算来表达,引进它们并不增加语言的能力,但是可以简化表达。基本运算及变换在关系代数运算中集71两个关系的交运算可以表示为R∩S=R-(R-S)两个关系的交运算可以表示为72两个关系的自然连接运算可以表示为两个关系的θ连接运算可以表示为两个关系的自然连接运算可以表示为两个关系的θ连接运算可以表示73两个关系的除运算可以表示为两个关系的除运算可以表示为74关系代数综合示例1说明:⋈关系代数综合示例1说明:⋈751) 检索在仓库WH2工作的职工的工资。π职工号,工资(σ仓库号="WH2"(职工))1) 检索在仓库WH2工作的职工的工资。π职工号,工资(σ仓762) 检索在上海工作的职工的工资。π职工号,工资(σ城市="上海"(仓库)⋈职工)2) 检索在上海工作的职工的工资。π职工号,工资(σ城市="773) 检索北京的供应商的名称。π供应商名(σ地址="北京"(供应商))3) 检索北京的供应商的名称。π供应商名(σ地址="北京"(784) 检索目前与职工E6有业务联系的供应商的名称。π供应商名(σ职工号="E6"(订购单)⋈供应商)4) 检索目前与职工E6有业务联系的供应商的名称。π供应商名795) 检索所有职工的工资都大于1220元的仓库所在的城市。π城市(仓库)-π城市(σ工资<=‘1220’(职工)⋈仓库)5) 检索所有职工的工资都大于1220元的仓库所在的城市。π806) 检索和北京的所有供应商都有业务联系的职工的工资。π职工号,工资(职工⋈(π职工号,订购单号(订购单)÷π供应商号(σ地址="北京"(供应商))))6) 检索和北京的所有供应商都有业务联系的职工的工资。π职工817) 检索至少和职工E1、E4、E7都有联系的供应商的名称。π供应商名((π职工号,供应商号(订购单)÷(“E1”,”E4”,”E7”))⋈供应商)7) 检索至少和职工E1、E4、E7都有联系的供应商的名称。82关系代数综合示例2例:三个关系S,SC,C(基本表),试用关系代数表达每个查询语句S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)关系代数综合示例2例:三个关系S,SC,C(基本表),试83三个表(S,SC,C)的表结构和数据S#SNameAgeSexS1王海20男S4张军19男S2刘英21女S3陈敏22男S8董芳18女C#CNameTeacherC2数学马老师C4物理石老师C3化学周老师C1数据库李老师S#C#GradeS1C180S3C190S1C270S3C285S3C395S4C470S8C390SCCS三个表(S,SC,C)的表结构和数据S#SNameAgeSe84S#SNameAgeSexS1王海20男S4张军19男S2刘英21女S3陈敏22男S8董芳18女1)找年龄不小于20的男学生AGE≥’20’∧

SEX=‘男’(S)S#SNameAgeSexS1王海20男S4张军19男S2刘852)求同时选修了C1号和C2号课程的学生的学号错误的写法:π

S#(C#=‘C1’

C#=‘C2’(SC))正确的写法:π

S#(C#=‘C1‘(SC))∩π

S#(C#=‘C2’(SC))S#C#GradeS1C180S3C190S1C270S3C285S3C395S4C470S8C3902)求同时选修了C1号和C2号课程的学生的学号S#C#Gra863)求仅选修了C1号课程的学生号选修C1号课程的学生-仅选C1号课程之外的学生π

S#(C#=‘C1’(SC))-π

S#(SC-C#=‘C1’(SC))S#C#GradeS1C180S3C190S1C270S3C285S3C395S4C470S8C3903)求仅选修了C1号课程的学生号S#C#GradeS1C18874)检索不学C2课的学生姓名和年龄错误的表示:πSNAME,AGE(σC#≠'C2'(S⋈SC))正确的表示:πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(S⋈SC))4)检索不学C2课的学生姓名和年龄885)检索学习全部课程的学生学号要用πS#,C#(SC)÷πC#(C)表示,

而不能写成 πS#(SC÷πC#(C))形式。这是因为一个学生学的课程的成绩可能是不一样的。5)检索学习全部课程的学生学号89关系数据库系统的三层模式结构关系数据库系统也是三层模式的数据库系统,同样可以划分为存储模式、概念模式和外部模式三个层次。关系数据库系统的三层模式结构关系数据库系统90关系概念模式关系概念模式主要包括对出现在关系数据库中的每个基本表的说明及其基本表之间联系的说明,它包括对关系名、属性名、属性的类型的说明,以及主关键字的说明(实体完整性)、外部关键字的说明(参照完整性及表之间的关联)和属性的取值范围与约束条件的说明(用户定义完整性)等。在SQL语句中定义基本表的命令是CREATETABLE,它可以完成定义概念模式需要的所有功能,即在该命令中包括对关系名、属性名、属性类型的说明,也可以说明主关键字、外部关键字和属性的取值范围与约束条件等。修改基本表定义的命令是ALTERTABLE命令。关系概念模式关系概念模式主要包括对出现在关系数据库中的每个91关系存储模式每个基本表逻辑上都对应于存储文件(磁盘上的物理文件),不同的数据库管理系统可能对存储文件的管理方法是不一样的,可能一个基本表对应一个存储文件(如FoxPro);但对大多数大型数据库管理系统,一个存储文件可以存放多个基本表,一个基本表的数据也可能分别存放在多个存储文件上。存储文件的逻辑结构组成了关系数据库的存储模式,但是用户无需了解存储文件的物理结构,它对用户是透明的。即关系数据库的存储模式几乎不需要用户说明,关系数据库管理系统可以自动完成对基本表的存储。对用户来说,在关系数据库中与存储模式有关的说明只有索引的说明,索引是为基本表建立,即在基本表上可以建立索引。一般可以将索引分为普通索引、唯一索引和聚集索引三类。关系存储模式每个基本表逻辑上都对应于存储文件(磁盘上的物理92关系外部模式在关系数据库中,外部文件被称作视图(View),即可以根据基本表定义视图。所谓视图是指从一个或几个基本表导出的表,视图是一个虚拟的表,它本身并不真正包含数据,在数据库中存储的是视图的定义。用户看到的可以是视图,也可以是基本表。基本表和视图都是关系、都是表,它们在概念上是等同的,用户可以在其上进行查询等各种操作、可以在视图上再定义视图。因此,关系外部模式由视图和部分基本表构成。关系外部模式在关系数据库中,外部文件被称作视图(View)93【本章小节】关系模型的相关概念和术语关系模型的三个要素是:关系数据结构、关系操作集合和关系完整性约束关系数据模型的完整性约束及其作用关系代数:传统的集合运算和专门的关系运算关系数据库系统的三层模式结构【本章小节】关系模型的相关概念和术语94第3章

关系数据库

关系数据库系统概述关系数据模型关系模型的完整性约束关系代数关系数据库系统的三层模式结构本演示文稿可能包含观众讨论和即席反应。使用PowerPoint可以跟踪演示时的即席反应,在幻灯片放映中,右键单击鼠标请选择“会议记录”选择“即席反应”选项卡必要时输入即席反应单击“确定”撤消此框此动作将自动在演示文稿末尾创建一张即席反应幻灯片,包括您的观点。

第3章关系数据库关系数据库系统概述95关系数据库系统概述关系数据库的发展CODASYL于1962年发表的“信息代数”一文

E.F.Codd从1970年起发表了一系列的论文20世纪70年代末的实验系统SystemR和Ingres从20世纪80年代逐步走向成熟关系数据模型概述关系数据结构关系操作集合关系完整性约束关系数据库系统概述关系数据库的发展关系数据模型概述96关系数据结构关系数据结构非常简单,在关系数据模型中,现实世界中的实体及实体与实体之间的联系均用关系来表示。从逻辑或用户的观点来看,关系就是二维表。

关系数据结构关系数据结构非常简单,97关系操作集合传统的集合运算

并(Union)交(Intersection)差(Difference)广义笛卡尔积(ExtendedCartesianProduct)

专门的关系运算选择(Select)投影(Project)连接(Join)除(Divide)有关的数据操作查询(Query)插入(Insert)删除(Delete)修改(Update)

关系操作集合传统的集合运算98关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结果也是元组的集合。这和非关系模型的操作结果是一条记录有着重要区别。关系的操作能力可以用代数方式和逻辑方式来表示:代数方式是通过关系代数对关系的运算来表达查询要求的方式。逻辑方式是通过关系演算、用谓词表达对关系的查询要求的方式。现在关系数据库已经有了标准语言——SQL(StructuredQueryLanguage),它是一种介于关系代数和关系演算的语言。

综上所述,又可以把关系数据语言分为三类:关系代数语言、关系演算语言以及具有关系代数和关系演算双重特点的SQL语言。

关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结99关系完整性约束

在数据库中数据完整性是指保证数据正确的特性。它包括两方面的内容:

与现实世界中应用需求的数据的相容性和正确性;数据库内数据之间的相容性和正确性。

在关系数据模型中一般将数据完整性分为三类

实体完整性参照完整性用户定义完整性

关系完整性约束在数据库中数据完整性是指保证数据正确的特性。100关系数据模型关系模型的数据结构和基本术语

关系的形式定义

对关系的限定(关系的性质)

关系数据模型关系模型的数据结构和基本术语101关系模型的基本术语

参照关系和被参照关系:在关系数据库中可以通过外部关键字使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)被称为参照关系。

关系属性值域元组分量关系模式候选关键字主关键字主属性非主属性外部关键字关系模型的基本术语参照关系和被参照关系:在关系数据库中可以102关系的形式定义笛卡儿积定义:设D1,D2,…,Dn为任意集合,定义D1,D2,…,Dn的笛卡儿积为:其中每一个元素(d1,d2,…,dn)叫作一个n元组,简称元组,元组中每一个di叫作元组的一个分量。关系的形式定义:笛卡儿积D1×D2…×Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。关系的形式定义笛卡儿积定义:设D1,D2,…,Dn为任意集合103例如设:D1={P2,P4,P7,P9}D2={显示卡,声卡,解压卡}D1xD2={(P2,显示卡),(P2,声卡),(P2,解压卡),(P4,显示卡),(P4,声卡),(P4,解压卡),(P7,显示卡),(P7,声卡),(P7,解压卡),(P9,显示卡),(P9,声卡),(P9,解压卡),}R={(P2,显示卡),(P4,声卡),(P7,声卡),(P9,解压卡)}例如设:104P2P4P7P9显示卡声卡解压卡D1D2P2P2P2P4P4P4P7P7P7P9P9P9显示卡声卡解压卡显示卡声卡解压卡显示卡声卡解压卡显示卡声卡解压卡器件号器件名称P2P4P7P9显示卡声卡声卡解压卡=xD1D2笛卡尔积一个关系P2显示卡D1D2P2显示卡器件号器件名称P2显示卡=xD1105需要说明两点关系是元组的集合,集合(关系)中的元素(元组)是无序的;而元组不是分量di的集合,元组中的分量是有序的。例如,在关系中(a,b)≠(b,a),但在集合中{a,b}={b,a}。若一个关系的元组个数是无限的,则该关系称为无限关系,否则称为有限关系;在数据库中只考虑有限关系。需要说明两点关系是元组的集合,集合(关系)中的元素(元组)是106关系的性质每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。行的顺序是无关紧要的,即行的次序可以任意交换。元组不可以重复,即在一个关系中任意两个元组不能完全一样。

关系的性质每一分量必须是不可分的最小数据项,即每个属性都是不107关系模型的完整性约束

实体完整性规则参照完整性规则用户定义完整性完整性约束的作用

关系模型的完整性约束实体完整性规则108实体完整性规则实体完整性是要保证关系中的每个元组都是可识别和唯一的。实体完整性规则的具体内容是:若属性A是关系R的主属性,则属性A不可以为空值。实体完整性是关系模型必须满足的完整性约束条件,也称作是关系的不变性。关系数据库管理系统可以用主关键字实现实体完整性,这是由关系系统自动支持的。实体完整性规则实体完整性是要保证关系中的每个元组都是可识别109对实体完整性规则的几点解释和说明实体完整性规则是针对关系而言的,而关系则对应一个现实世界中的实体集。例如,仓库关系对应现实世界中的仓库实体集。现实世界中的实体是可区分的,它们具有某种标识特征;相应地,关系中的元组也是可区分的,在关系中用主关键字做唯一性标识。主关键字中的属性、即主属性不能取空值。如果主属性取空值,则意味着关系中的某个元组是不可标识的,即存在不可区分的实体,这与实体的定义也是矛盾的。对实体完整性规则的几点解释和说明实体完整性规则是针对关系而言110参照完整性规则现实世界中的实体间存在着某种联系,而在关系模型中实体是用关系描述的、实体之间的联系也是用关系描述的,这样就自然存在着关系和关系之间的参照或引用。参照完整性也是关系模型必须满足的完整性约束条件,是关系的另一个不变性。通过一个例子来说明什么是参照完整性

参照完整性规则现实世界中的实体间存在着某种联系,而在关系模型111参照完整性例子学号课程分数001语文80001数学90002语文67002数学98003语文79003化学80004化学80学号姓名001王海002王芳003张军违背了参照完整性(学生表中不存在学号为“004”的学生,这个成绩到底是谁的成绩呢?)参照完整性例子学号课程分数001语文80001数学90002112参照关系和被参照关系的定义

设F是关系R的一个属性或属性组,另外有主关键字为K的关系S。如果关系R的属性或属性组F与关系S的主关键字K相对应,则称F是关系R的外部关键字,并称关系R是参照关系、S是被参照关系(或目标关系)。关系R和S可以是同一个关系。参照关系和被参照关系的定义设F是关系R的113参照完整性规则如果属性(或属性组)F是关系R的外部关键字,它与关系S的主关键字K相对应,则对于关系R中每个元组在属性(或属性组)F上的值必须为:●或者取空值(F的每个属性均为空值);●或者等于S中某个元组的主关键字的值。参照完整性规则如果属性(或属性组)F是114在关系系统中通过说明外部关键字来实现参照完整性,而说明外部关键字是通过说明引用的主关键字来实现的,也即通过说明外部关键字,关系系统则可以自动支持关系的参照完整性。

在关系系统中通过说明外部关键字来实现参115用户定义完整性一种与应用密切相关的数据完整性约束,如某个属性的值必须唯一某个属性的取值必须在某个范围内某些属性值之间应该满足一定的函数关系等类似以上的约束不是关系数据模型本身所要求的,而是为了满足应用方面的语义要求而提出的在用户定义完整性中最常见的是限定属性的取值范围,即对值域的约束,所以在用户定义完整性中最常见的是域完整性约束。用户定义完整性一种与应用密切相关的数据完整性约束,如116完整性约束的作用执行插入操作时检查完整性

执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。

执行删除操作时检查完整性

执行删除操作时一般只需要检查参照完整性规则。

执行更新操作时检查完整性

执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。

完整性约束的作用执行插入操作时检查完整性117关系代数基本概念和符号传统的集合运算专门的关系运算基本运算及变换

关系代数基本概念和符号118关系代数的基本概念关系代数的运算对象是关系,关系代数的运算结果也是关系(去掉重复元素)。与一般的运算一样,运算对象、运算符和运算结果也是关系代数的三个要素。关系代数的运算可以分为两大类传统的集合运算

专门的关系运算

关系代数的基本概念关系代数的运算对象是关系,关系代数的运算结119几个概念和专门的符号元组的分量元组的连串元组中属性的映像集几个概念和专门的符号元组的分量120元组的分量设有关系模式R(A1,A2,…,An)r∈R表示r是R的一个元组r.Ai或r[Ai]表示r这个元组中相应于属性Ai的一个分量例如,假设R是仓库关系,r=("WH1","北京",370)是仓库关系的一个元组,则r∈R,r.仓库号或r[仓库号]为"WH1"。元组的分量设有关系模式R(A1,A2,…,An)121元组的连串设R为m元关系,S为n元关系,并且

r=(r1,r2,…,rm)∈Rs=(s1,s2,…,sn)∈S则称为元组的连串。这是一个(m+n)元组,前m个分量为R中的一个m元组,后n个分量为S中的一个n元组。

元组的连串设R为m元关系,S为n元关系,并且122元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是单个属性,也可以是属性集,定义当X取值为x时,x在R中的映象集为:

元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是123设有如右上表所示的订购单关系,把它命名为R,并且进一步设X为属性职工号,Y为属性集{供应商号,订购单号,订购日期},则当X取值为E3时

{(S7,OR67,2002/06/23),(S4,OR79,2002/07/29),(S6,OR90,2002/07/13),(S3,OR91,2002/10/27)}Yx=映像集的例子设有如右上表所示的订购单关系,把它命名为R,并且进一步设X为124传统的集合运算集合的并运算集合的交运算集合的差运算集合的广义笛卡尔积运算传统的集合运算集合的并运算125并运算定义属于关系R或属于关系S的元组组成的集合RS={t|tRtS}RS两个关系R和S若进行并运算,则它们必须具有相同的关系模式:关系R和S必须元数相同的,即它们的属性数目必须相同对i,R的第i个属性的域必须和S的第i个属性的域相同并运算定义RS两个关系R和S若进行并运算,则它们必须具有相126并运算ABC367257723443RABC345723SABC367257723443345R∪S并运算ABC367257723443RABC345723SA127差运算定义所有出现在一个关系而不在另一关系中的元组集合RS={t|tRtS}RS两个关系R和S若进行差运算,则它们也必须具有相同的关系模式:关系R和S必须元数相同的,即它们的属性数目必须相同对i,R的第i个属性的域必须和S的第i个属性的域相同差运算定义RS两个关系R和S若进行差运算,则它们也必须具有128差运算ABC367257723443RABC345723SABC367257443R-SABC367S-R差运算ABC367257723443RABC345723SA129交运算定义所有同时出现在两个关系中的元组集合R∩S={r|rRrS}交运算可以通过差运算来重写R∩S=R(RS)RS交运算定义RS130交运算ABC367257723443RABC345723SABC723R∩S交运算ABC367257723443RABC345723SA131集合的并、交、差运算示意集合的并、交、差运算示意132集合的广义笛卡尔积运算设R和S是两个关系,如果R是m元关系、有k个元组,S是n元关系、有l个元组,则广义笛卡尔积R×S是一个m+n元关系、有k×l个元组。广义笛卡儿积可以记作:集合的广义笛卡尔积运算设R和S是两个关系,如果R是m元关系、133AB12RCD10102010EaabbSAB11112222CD1019201010102010EaabbaabbRx

SAB1RCD10EaSAB1CD10EaRxS134专门的关系运算选择运算(Select)投影运算(Project)连接运算(Join)除运算(Division)专门的关系运算选择运算(Select)135选择运算选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满足某个逻辑条件来指定的。选择运算表示为:其中R是关系名,σ是选择运算符,F是逻辑表达式。选择运算选择运算是从指定的关系中选择某些元组136选择运算ABC367257723443RA<5(R)

ABC367257443A<5C=7(R)

ABC367257选择运算ABC367257723443RA<5(R)AB137选择运算举例:σ职工号="E3"(订购单)订购单关系从订购单关系中选择职工号为“E3”的元组构成新的关系选择运算举例:σ职工号="E3"(订购单)订购单关系138投影运算1)选择指定的属性,形成一个可能含有重复行的表格;2)删除重复行,形成新的关系。投影运算对指定的关系进行投影操作,根据该关系分两步产生一个新关系:投影运算1)选择指定的属性,形成一个可能含有重复行的表格;139投影运算表示为其中R是关系名,π是投影运算符,A是被投影的属性或属性集。投影运算表示为其中R是关系名,π是投影运算符140投影cbcfedcbaCBABCbcef

R

πB,C(R)投影的结果中要去掉相同的行BCbcef

π2,3(R)CBcbfe

πC,B(R)投影cbcfedcbaCBABCbcefRπB,C(141投影运算举例:订购单关系选取职工号和供应商号两列构成新的关系π职工号,供应商号(订购单)投影运算举例:订购单关系选取职工号和供应商号142选择和投影运算举例:从订购单关系中,选取出职工号为E3的所经手的订购单号和与之相关的供应商号。订购单关系π供应商号,订购单号(σ职工号="E3"(订购单))选择和投影运算举例:从订购单关系中,选取出职143连接运算连接运算是两个表之间的运算,这两个表通常是具有一对多联系的父子关系。所以连接过程一般是由参照关系的外部关键字和被参照关系的主关键字来控制的,这样的属性通常也称为连接属性。连接运算连接运算是两个表之间的运算,这两个表144连接运算的概念连接运算是将满足两个表之间运算关系的记录连接成一条记录,所有这样的记录构成新的表(连接运算的结果)。连接运算可以表示为:这里Ai是R中的属性,Bj是S中的属性,θ是关系(比较)运算符,连接的结果是一个广义笛卡儿乘积的子集,其中的元组满足Ai和Bj间的θ关系。当θ为“=”时,称为等值连接;θ为“<”时,称为小于连接;θ为“>”时,称为大于连接等等。连接运算的概念连接运算是将满足两个表之间运算关系的记录连接成145连接987654321CBADE3162ABCDE123311236245662

RSB<D

R

SR与S的θ连接可以使用下面的两种方式表示连接987654321CBADE3162ABCDE1233146连接987654321CBACD3162ABR.CS.CD1233145662

RS3=1

R

S同名属性的表示连接987654321CBACD3162ABR.CS.CD147自然连接在连接运算中最常用的连接是自然连接。自然连接运算一般表示为:

其中Ai和Bj要出自同一个值域,并且在实际应用中这两个属性往往具有相同的属性名。R与S的自然连接可以使用下面的两种方式表示自然连接在连接运算中最常用的连接是自然连接。148自然连接做了三件事:计算广义笛卡尔积R×S;选择满足条件r[Ai]=s[Bj]的所有元组;去掉重复的属性。自然连接做了三件事:计算广义笛卡尔积R×S;149自然连接AB12412CDaababrB13123DaaabbEs11112aaaabABCDErs自然连接AB1CDarB1DaEs1aABCDE150自然连接987654321CBACD3162

R

SABCD12314562

RSABR.CS.CD1233145662

RS3=1自然连接和等值连接(θ连接)的最大区别:1、在等值连接的结果中,需要指定连接条件,相同属性保留,在相同属性前加上名表加以区分2、在自然连接中不需要指定连接条件,连接条件是两个关系中相同属性的值相等,连接结果中相同属性只保留一个自然连接987654321CBACD3162RSABCD151自然连接的例子自然连接的例子152注意:为了使一个关系中的任一元组都参加自然连接,该元组的连接属性(字段)值必须出现在另一个参加连接的关系中;一般在实际应用中可以父无子,而不可以子无父,否则将破坏参照数据完整性。注意:为了使一个关系中的任一元组都参加自然连接,该元组的连接153综合运算实例根据以上关系求出在上海工作的职工的工资值都有哪些?仓库职工关系代数语句为:最后可表示为:综合运算实例根据以上关系求出在上海工作的职工154查询过程示意选择运算自然连接运算投影运算查询过程示意选择运算自然连接运算投影运算155注意自然连接和等值连接很相象,但它们不同,自然连接要去掉重复的属性,而等值连接却不需要去掉重复的属性。注意自然连接和等值连接很相象,但它们不同,自然连接要156除运算

设有关系R(X,Y)和S(Y),其中X、Y可以是单个属性或属性集,则除法运算定义为:如何理解除运算?除运算设有关系R(X,Y)和S(Y),其中X157理解除法运算R(X,Y)是被除关系S(Y)是除关系商关系由R中某些X属性值构成,其中的任一X值所对应的一组Y值都包含除关系S。除运算常用于至少…查询或运算理解除法运算R(X,Y)是被除关系158除运算的例子它的含义是:至少向WH1、WH3、WH5供货的供应商号。除运算的例子它的含义是:至少向WH1、WH3、WH5供货的供159除运算的例子除关系和商关系的笛卡尔积结果一定包含于被除关系。除运算的例子除关系和商关系的笛卡尔积结果一定包含于被除关系。160除运算姓名课程张军物理王红数学张军数学课程数学物理÷=姓名张军计算过程R(X,Y)S(Y)Z(X)说明:X代表属性“姓名”Y代表属性“课程”除运算姓名课程张军物理王红数学张军数学课程数学物理÷=姓名张161除运算没有选修全部课程的学生所有学生选修全部课程=数学张军数学王红物理张军课程姓名物理王红数学张军数学王红物理张军课程姓名姓名王红姓名王红张军姓名王红=姓名张军选修了全部课程的学生物理数学课程=物理王红数学张军数学王红物理张军课程姓名王红张军姓名πX(R)πY(S)πX(R)πY(S)πX(πX(R)πY(S)R)πX(R)πX(πX(R)πY(S)R)说明:X代表属性“姓名”Y代表属性“课程”πX(R)πY(S)RπX(R)πX(πX(R)πY(S)R)除运算没有选修全部课程的学生所有学生选修全部课程=数学张军162除运算除定义RS=πX(R)πX(πX(R)πY(S)R)除运算除定义163除运算课程数学物理=姓名课程成绩张军物理93王红数学86张军数学93王红物理92课程数学物理姓名课程张军物理王红数学张军数学王红物理姓名张军王红=姓名成绩张军93选修了全部课程并且成绩都相同的学生选修了全部课程的学生因此,在除之前应该先执行投影操作除运算课程数学物理=姓名课程成绩张军物理93王红数学86张164基本运算及变换在关系代数运算中集合的并运算、差运算、笛卡尔积运算以及选择运算和投影运算是5种基本运算,另三种运算(集合的交运算以及连接运算和除运算)可以用5种基本运算来表达,引进它们并不增加语言的能力,但是可以简化表达。基本运算及变换在关系代数运算中集165两个关系的交运算可以表示为R∩S=R-(R-S)两个关系的交运算可以表示为166两个关系的自然连接运算可以表示为两个关系的θ连接运算可以表示为两个关系的自然连接运算可以表示为两个关系的θ连接运算可以表示167两个关系的除运算可以表示为两个关系的除运算可以表示为168关系代数综合示例1说明:⋈关系代数综合示例1说明:⋈1691) 检索在仓库WH2工作的职工的工资。π职工号,工资(σ仓库号="WH2"(职工))1) 检索在仓库WH2工作的职工的工资。π职工号,工资(σ仓1702) 检索在上海工作的职工的工资。π职工号,工资(σ城市="上海"(仓库)⋈职工)2) 检索在上海工作的职工的工资。π职工号,工资(σ城市="1713) 检索北京的供应商的名称。π供应商名(σ地址="北京"(供应商))3) 检索北京的供应商的名称。π供应商名(σ地址="北京"(1724) 检索目前与职工E6有业务联系的供应商的名称

温馨提示

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

评论

0/150

提交评论