数据库原理与应用课件第2章关系模型_第1页
数据库原理与应用课件第2章关系模型_第2页
数据库原理与应用课件第2章关系模型_第3页
数据库原理与应用课件第2章关系模型_第4页
数据库原理与应用课件第2章关系模型_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

*2.1关系2.2关系操作2.3关系代数2.4关系运算2.5关系完整性2.6小结*提出关系模型的是美国IBM公司的E.F.Codd埃德加·弗兰克·科德(EdgarFrankCodd,1923-2003)是密执安大学哲学博士,IBM公司研究员,被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。1970年提出关系数据模型、关系代数和关系演算的概念E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》1972年提出了关系的第一、第二、第三范式1974年提出了关系的BC范式*2.1关系2.1.1关系的形式化定义2.1.2关系的基本性质2.1.3码2.1.4关系模型的三级体系结构2.1.5关系模型的形式定义及优点2.1.6关系与关系数据库*2.1.1

关系的形式化定义

用二维表格的形式表示实体以及实体间联系的数据模型称为关系模型,这个二维表被称为关系,这是一种非形式化的定义。关系模型是建立在集合代数理论的基础上的,因此,这里从集合论角度给出关系的形式化定义。首先引入域和笛卡尔积的概念。*重要概念

⒈域(Domain)

2.笛卡尔积(CartesianProduct)

*⒈域(Domain)域是一组具有相同数据类型的值的集合,又称为值域,用D表示。域中所包含的值的个数称为域的基数,用m表示。例如:

D1=姓名集合={于文轩,王美},m1=2;

D2=性别集合={男,女},m2=2;

D3=系名集合={计算机科学系,软件工程系,网络工程系},m3=3。

在关系模型中用域来表示属性的取值范围,在上面例子中,D1,D2,D3为域名,分别表示学生关系中姓名、性别和系名的集合。*2.笛卡尔积(CartesianProduct)笛卡尔积给定一组域D1,D2,…,Dn,这些域中可以有相同的。

D1,D2,…,Dn的笛卡尔积为:

D1×D2×…×Dn={(d1,d2,…,dn)|di

Di,i=1,2,…,n}

注意:(1)所有域的所有取值的一个组合(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为:笛卡尔积的表示方法笛卡尔积可表示为一个二维表表中的每行对应一个元组,表中的每列对应一个域一个简单的例子:D1={a,b,c};(集合元素个数:3)D2={e,f};(集合元素个数:2)D1xD2={(a,e),(a,f),(b,e),(b,f),(c,e),(c,f)}(其中(a,e)是一个元组,a和e分别该元组的两个分量)

10笛卡尔积(D1xD2)的基数:3x2=6(各个域元素个数的连乘)用二维表表示该笛卡尔积:

笛卡尔积的每一个元组都来自一个不同的域*3.关系(Relation)关系笛卡尔积D1×D2×…×Dn的子集称为定义在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn),R表示关系的名字,n称为关系的目或度(Degree)。当n=1时,称该关系为单元关系。当n=2时,称该关系为二元关系。*◎如果一个关系的元组个数是无限的,则称该关系是无限关系;如果一个关系的元组个数是有限的,则称该关系是有限关系。一般仅处理有限关系。◎关系是笛卡尔积的有限子集,所以关系也是一个二维表,表中的每行对应一个元组,表中的每列对应一个域。◎由于表中的列可以是相同的域,为了加以区别,每列必须起一个名字,称为属性,n目关系必须有n个属性,属性的名字惟一,属性的取值范围Di(i=1,2,…,n)称为值域。17

三类关系基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示查询表查询结果对应的表视图表由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据*2.1.2

关系的基本性质

在关系模型中,对关系作了种种限制,关系具有如下性质:(1)每一个分量都必须是不可再分的数据项。(2)每一列中的分量必须是同一类型的数据,来自同一个域。(3)每列必须有不同的属性名,不同的列可以来自同一个域。(4)列的顺序可以是任意。(5)任意两个元组不能完全相同。(6)行的顺序可以是任意。*1.候选码(Candidatekey)若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码简单的情况:候选码只包含一个属性2.全码(All-key)最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)2.1.3码*3.主码若一个关系有多个候选码,则选定其中一个为主码(Primarykey)4.主属性候选码的诸属性称为主属性(Primeattribute)不包含在任何侯选码中的属性称为非主属性(Non-Primeattribute)或非码属性(Non-keyattribute)*1.关系模式关系模式是对关系的描述,关系模式是型,关系是值。关系模式的形式化定义为:R(U,D,dom,F)其中:U为组成该关系的属性名的集合,D为属性组U中属性所来自的域的集合,dom为属性向域的映象集合,F为属性间数据的依赖关系集合2.1.4关系模型的三级体系结构*关系模式可以形式化地表示为:

R(U,D,DOM,F)

R:关系名

U

:组成该关系的属性名集合

D

:属性组U中属性所来自的域

DOM:属性向域的映象集合

F

:属性间的数据依赖关系集合*关系模式通常可以简记为

R(U)或R(A1,A2,…,An)R:关系名A1,A2,…,An:属性名注意:域名及属性向域的映象常常直接说明为属性的类型、长度*2.关系子模式关系子模式是用户所需或感兴趣数据的结构的描述,其中包括这些数据来自哪些模式和应满足哪些条件。例如,在学生选课数据库中,学生最关心自己所选课程的成绩、学分等信息。这时就需要用到成绩子模式(学号,姓名,课程名,成绩,学分)。子模式对应的数据来源于学生关系、选课关系和课程关系,在构造时应满足学生关系和选课关系的元组在学号上的值相等,选课关系和课程关系的元组在课程号上的值相等。*3.存储模式存储模式描述了关系是如何在物理存储设备上存储的。关系存储时的基本组织方式是记录。可以用散列方法或索引方法实现。如果关系中元组数目少(100以内),则可以用堆文件方式实现。此外,还可以对任意的属性集建立辅助索引*1.关系模型的形式定义◎关系模型是由数据结构,数据操纵以及三类完整性规则三部分组成。◎在关系模型中,现实世界中的实体及实体间的联系都用关系表示。◎关系模型基本的数据结构是关系。在用户看来,关系模型中数据的逻辑结构是一张二维表。◎关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。关系运算分为关系代数和关系演算等三类。◎关系模型的三类完整性规则(实体完整性、参照完整性、用户定义的完整性)。2.1.5关系模型的形式定义及优点*2.关系模型的优点◎关系模型建立在严格的数学概念的基础上的。◎关系模型的数据结构简单、清晰,用户易懂易用。◎关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。◎关系模型的存取路径对用户透明的。◎可以直接处理多对多的联系。*

◎在关系模型中,实体以及实体之间的联系都是用关系来表示的。例如学生实体、课程实体、学生与课程之间的多对多联系都可以分别用一个关系表示。这样,在学校教务管理中,三个关系的集合构成了一个学生—课程关系数据库。

◎关系数据库采用的是关系模型,所有关系模式的集合构成了关系数据库的模式,即关系数据库型的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。2.1.6关系与关系数据库*

关系数据库的型与值关系数据库的型:

关系数据库模式

对关系数据库的描述。包括:若干域的定义在这些域上定义的若干关系模式关系数据库的值:

关系模式在某一时刻对应的关系的集合,简称为关系数据库*2.2关系操作2.2.1关系操作的特点2.1.2关系运算分类*2.2.1关系操作的特点

关系模型与其它数据模型相比最大的特点是数据操纵语言。例如它每次提供给用户的不是一个元组,而是一个元组集;它是非过程化的,用户只要指出做什么,不要指出怎么做;它既可以独立使用,也可以与高级语言结合起来使用。

*2.2.2关系运算分类

关系数据库操纵语言的基础是关系运算。关系运算分为两类:一类是关系代数,用对关系的运算来表达查询要求的方式。另一类是关系演算,用谓词来表达查询要求的方式。关系演算按谓词变元的基本对象是元组变量还是域变量又分为元组关系演算和域关系演算。

*

关系代数语言

①用对关系的运算来表达查询要求

②代表:ISBL关系演算语言:

用谓词来表达查询要求元组关系演算语言谓词变元的基本对象是元组变量代表:APLHA,QUEL②谓词变元的基本对象是域变量域关系演算语言

代表:QBE具有关系代数和关系演算双重特点的语言代表:

SQL(StructuredQueryLanguage)

*2.3关系代数2.3.1传统的集合运算2.3.2专门的关系运算2.3.3关系代数表达式的优化2.3.4关系代数运算的应用实例集合运算符∪-∩×并差交笛卡尔积比较运算符>≥<≤=<>大于大于等于小于小于等于等于不等于运算符含义运算符含义

关系代数运算符概述41.并(Union)R和S具有相同的目n(即两个关系都有n个属性)相应的属性取自同一个域R∪S

仍为n目关系,由属于R或属于S的元组组成

R∪S={t|t

R∨t

S}72.3.1传统的集合运算2.差(Difference)R和S具有相同的目n相应的属性取自同一个域R-S

仍为n目关系,由属于R而不属于S的所有元组组成

R-S={t|t

R∧t

S}93.交(Intersection)R和S具有相同的目n相应的属性取自同一个域R∩S仍为n目关系,由既属于R又属于S的元组组成

R∩S={t|t

R∧t

S} R∩S=R

–(R-S)114.笛卡尔积(CartesianProduct)严格地讲应该是广义的笛卡尔积

R:n目关系,k1个元组S:m目关系,k2个元组13R×S

列:(n+m)列元组的集合;元组的前n列是关系R的一个元组后m列是关系S的一个元组行:k1×k2个元组R×S={tr

ts|tr

R∧ts

S}【例】如图2-1(a)、(b)所示的两个关系R和S是同类关系,(c)为R与S的并,(d)为R与S的差,(e)为R与S的交,(f)为R与S的广义笛卡尔积。1172.3.2专门的关系运算1.投影(Projection)

投影运算符的含义从R中选择出若干属性列组成新的关系

πA(R)={t[A]|t

R} A:R中的属性列

27【例】查询学生的学号、姓名和系名。πsno,sname,sept(S)或π1,2,5(S)11【例】查询选修了课程的学生学号,即查询关系SC在学号上的投影。πsno(SC)2.选择(Selection)

选择又称为限制(Restriction)选择运算符的含义在关系R中选择满足给定条件的诸元组

σF(R)={t|t

R∧F(t)='真'}F:选择条件,是一个逻辑表达式25【例】查询计算机科学系的全体学生。σSdept=‘计算机科学系’(S)或σ5=‘计算机系’(S)11【例】查询软件工程系的女生。σssex=‘女’∧Sdept=‘软件工程系’(S)或σ3=‘女’∧4=‘软件工程系’(S)3.连接(Join)1)连接也称为θ连接2)连接运算的含义从两个关系的笛卡尔积中选取属性间满足一定条件的元组

RS={|tr

R∧ts

S∧tr[A]θts[B]}A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符

连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组

AθBtrts293)两类常用连接运算等值连接(equijoin)什么是等值连接θ为“=”的连接运算称为等值连接等值连接的含义从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:

RS={|tr

R∧ts

S∧tr[A]=ts[B]}A=Btrts30

自然连接是一种特殊的等值连接两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉自然连接的含义

R和S具有相同的属性组B

R

S={|tr

R∧ts

S∧tr[B]=ts[B]}

trts314.自然连接(Naturaljoin)【例】设图(a)和(b)分别为关系R和关系S,(c)为小于连接R∞S(A<D)的结果,(d)为等值R∞S([3]=[2])的结果,(e)为自然连接R∞S的结果。11外连接如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。左外连接(LEFTOUTERJOIN或LEFTJOIN)如果只把左边关系R中要舍弃的元组保留就叫做左外连接右外连接(RIGHTOUTERJOIN或RIGHTJOIN)如果只把右边关系S中要舍弃的元组保留就叫做右外连接。375.外连接(Outerjoin)上例中外连接、左外连接和右外连接386.除(Division)

给定关系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={tr[X]|tr

R∧πY(S)

Yx}Yx:x在R中的象集,x=tr[X]40图(a)和(b)分别为关系R和关系S,图(c)为R÷S的结果。38在关系R中,(A,B)可以取三个值{(2,b),(9,a),(8,b)}。其中:(2,b)的象集为{(c,d),(e,f),(d,f)}(9,a)的象集为{(c,d),(e,f)}(8,b)的象集为{(e,f)}S在(C,D)上的投影为{(c,d),(e,f)}显然,(2,b)的象集和(9,a)的象集包含了S在(C,D)上的投影,所以R÷S={(2,b),(9,a)}40*2.3.3关系代数表达式的优化

查询优化不仅在于使用户只需注重查询的正确表达上,无需考虑如何最好地表达查询以获得较高效率,而且在于系统比用户程序的“优化”做得更好。查询的总目标是选择有效的策略,求得给定关系表达式的值,使查询代价较小。查询优化的方法分为代数优化和物理优化。代数优化是改变查询语句中操作的次序和组合,不涉及底层的存取路径,对于一个查询语句,可能存在多个存取方案,它们的执行效率不同,仅仅进行代数优化是不够的,物理优化就是要选择高效合理的操作算法或存取路径,求得更好的查询计划。

*2.3.4关系代数运算的应用实例【例】查询没有选修课程的学生学号。πSno(S)-πSno(SC)={20418006,20418007})【例】查询软件工程系学生的学号和姓名。

πSno,Sname(σSdept=‘软件工程系’(S))={(20418003,王美),(20418004,刘方超)}*【例】查询选修了数据结构课程的学生学号和姓名。πSno,Sname(σcname=‘数据结构’(C)∞SC∞πSno,Sname(S))={(20418001,于文轩),(20418002,吴广斌)}或πSname(πSno(σcname=‘数据结构’(C∞SC)∞πSno,Sname(S))【例】查询王美同学没有选修的课程号。πCno(C)-πCno(σSname=‘王美’(S)∞SC)={001,004,006,007}*【例】查询至少选修两门课程的学生学号。πSno(σ1=4∧2≠5(SC×SC)={20418001,20418002,20418003}【例】查询选修课程包含学号为20418002的学生所修课程的学生学号。πSno,Cno(SC)÷πCno(σSno=‘20418002’(SC))={20418001}*【例】查询选修了全部课程的学生学号和姓名。πSno,Cno(SC)÷πCno(C)∞πSno,Sname(S)={20418001,于文轩}【例】查询学生王美选修的课程名及成绩。πCname,Grade(σSname=‘王美’(S∞SC∞C))*2.4关系演算2.4.1元组关系运算ALPHA语言2.4.2元组关系运算2.4.3域关系运算*2.4.1ALPHA语言ALPHA语言的基本格式是:<操作符><工作空间>(<目标表达>[:<操作条件>])下面以学生-课程数据库为例,说明ALPHA语言的使用。1.数据查询(1)简单查询【例】查询所有学生的数据。GETW(S)【例】查询所有被选修的课程号码。GETW(SC.Cno)27(2)条件查询【例】查询选修了课程号为004且成绩在80分以上的学生的学号。GETW(SC.Sno):SC.Cno='004'∧SC.grade>80

(3)排序查询【例】查询学号为20418001同学所选课程号及成绩,并按成绩的降序排列。GETW(SC.Cno,SC.grade):SC.Sno='20418001'DOWNSC.grade27(4)定额查询【例】查询一名软件工程系学生的学号和姓名。GETW(1)(S.Sno,S.Sname):S.Sdept=‘软件工程系’【例】查询选修了课程号为004且成绩最低的学生的学号。GETW(SC.Sno):SC.Cno='004'UPSC.grade

(5)带元组变量的查询【例】查询20418001同学所选的课程号。RANGESCXGETW(X.Cno):X.Sno=‘20418001’27(6)带存在量词的查询【例】查询20418001同学所选的课程名。RANGESCXGETW(C.Cname):X(C.Cno=X.Cno∧X.Sno=‘20418001’)(7)带有多个关系的表达式的查询【例】查询成绩为90分以上的学生名与课程名。RANGESCSCXGETW(S.Sname,C.Cname):SCX(SCX.Grade≥90∧SCX.Sno=S.Sno∧Course.Cno=SCX.Cno)27(8)带全称量词的查询【例】查询选修全部课程的学生姓名。RANGECCXSCSCXGETW(S.Sname):CXSCX(SCX.Sno=S.Sno∧CX.Cno=SCX.Cno)(9)使用聚集函数查询【例】查询学号为20418001学生的平均成绩。GETW(AVG(SC.grade)):Score.Sno=‘20418001’【例】查询学生表中有多少个系。GETW(COUNT(S.Sdept))COUNT函数自动消去重复行,计算属性“Sdept”不同值的数目272.数据更新(1)插入操作【例】在SC表中插入一条选课元组(‘20418005’,‘004’,80)。MOVE‘20418005’TOW.SNOMOVE‘004’TOW.CNOMOVE85TOW.GRADEPUTW(SC)27(2)删除操作【例】删除学号为20418005的学生选课。HOLDW(SC):SC.Sno=‘20418005’DELETEW【例】删除全部学生的选课信息。HOLDW(SC)DELETEW27(3)修改操作【例】将田玲同学转到软件工程系。HOLDW(S.Sdept):S.Sname=‘田玲’MOVE‘软件工程系’TOS.SdeptUPDATEW27*2.4.2元组关系演算

元组关系演算是以元组变量作为谓词变元的基本对象,其形式化定义如下:{t|P(t)}表示所有使谓词P为真的元组集合,其中t为元组变量,其变化范围是一个关系,如果元组变量前有“全称”或“存在”量词,则称其为约束变量,否则称为自由变量。下面用元组关系演算表达式表示下列查询。【例】查询软件工程系的全体学生。{t|S(t)^t[5]='软件工程系'}27【例】查询选修了数据结构课程的学生学号和姓名。{t|(u)(v)(w)(S(u)^SC(v)^C(w)^u[1]=v[1]^v[2]=w[1]^w[2]='数据结构'

^t[1]=u[1]^t[2]=u[2]}$$$*2.4.3域关系演算

域关系演算是以域变量作为谓词变元的基本对象,其形式化定义如下:{<t1,t2,…,tn>|P(t1,t2,…,tn)}其中t1,t2,…,tn分别是元组变量t的各个分量的域变量,其变化范围是某个值域,P是域域演算公式。可以像元组演算一样定义域演算的原子公式和公式。【例】查询成绩大于85分的学生学号、课程号和成绩。{<t1,t2,t3>|SC(t1,t2,t3)^t3>85}27【例】查询选修了002课程且成绩大于90分的学生学号、课程号和成绩。{<t1,t2,t3>|SC(t1,t2,t3)^t2='002'^t3>85}$$$*2.5关系完整性2.5.1实体完整性2.5.2参照完整性2.5.3用户定义的完整性*实体完整性和参照完整性:

关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持用户定义的完整性:

应用领域需要遵循的约束条件,体现了具体领域中的语义约束*2.5.1实体完整性

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

*实体完整性规则的说明(1)实体完整性规则是针对

温馨提示

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

评论

0/150

提交评论