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

下载本文档

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

文档简介

第2章关系数据库1第2章关系数据库1本章主要按数据模型的三个要素讲述关系数据库的一些基本理论(关系模型的数据结构、关系的定义和性质、关系的完整性、关系代数、关系数据库等)掌握关系的定义及性质、关系键、外部键等基本概念以及关系演算语言的使用方法重点掌握实体完整性和参照完整性的内容和意义、常用的几种关系代数的基本运算等2本章主要按数据模型的三个要素讲述关系数据库的一些基本理论(关2.1关系模型的数据结构及其形式化定义2.2关系的键与关系的完整性2.3关系代数2.4关系演算32.1关系模型的数据结构及其形式化定义32.1关系模型的数据结构及其形式化定义2.1.1关系的形式化定义及其有关概念域(Domain)域是一组具有相同数据类型的值的集合,又称为值域域中所包含的值的个数称为域的基数(用m表示)。例如:D1={李力,王平,刘伟},m1=3;D2={男,女};m2=2;D3={18,20,18};m3=3。整数、实数和字符串的集合都是域域名

42.1关系模型的数据结构及其形式化定义2.1.1关笛卡尔积(CartesianProduct)给定一组域D1,D2,…,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡尔积为D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}

每一个元素(d1,d2,…,dn)中的每一个值di叫做一个分量(Component),di∈Di 每一个元素(d1,d2,…,dn)叫做一个n元组(n-Tuple),简称元组(Tuple)5笛卡尔积(CartesianProduct)5 笛卡尔积D1×D2×…×Dn的基数M(即元素(d1,d2,…,dn)的个数)为所有域的基数的累乘之积,即M=。例如,上述表示教师关系中姓名、性别两个域的笛卡尔积为:D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)} 分量:李力、王平、刘伟、男、女元组:(李力,男),(李力,女),M=m1×m2=3×2=66 笛卡尔积D1×D2×…×Dn的基数M(即元素(d1,d2,笛卡尔积可用二维表的形式表示:笛卡尔积实际是一个二维表

姓名性别李力男李力女王平男王平女刘伟男刘伟女元组同一域7笛卡尔积可用二维表的形式表示:姓名性别李关系(Relation)

笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…,Dn上的n元关系(Relation)

R(D1,D2…,Dn)关系的名字n是关系的目或度姓名性别李力男王平女刘伟男如,上例D1×D2笛卡尔积的某个子集可以构成教师关系T1,如表2.2所示D1×D2笛卡尔积的子集(关系T1)8关系(Relation)关系的名字n是关系的目或度姓在关系R中,当n=1时,称为单元关系。当n=2时,称为二元关系,以此类推。关系中的每个元素是关系中的元组,通常用t表示,关系中元组个数是关系的基数由于关系是笛卡尔积的子集,因此,也可以把关系看成一个二维表。具有相同关系框架的关系称为同类关系。姓名性别李力男王平女刘伟男元组域属性属性的名字惟一

9在关系R中,当n=1时,称为单元关系。当n=2时,称为二元关姓名性别李力男李力女不符合实际意义的关系在关系模型中,关系可进一步定义为:

关系头(Heading)+关系体(Body)

由属性名的集合组成关系结构中的内容或者数据不变可变10姓名性别李力男李力女不符合实际意2.1.2关系的性质2.1.2关系的性质关系是一种规范化了的二维表中行的集合每一列中的分量必须来自同一个域,必须是同一类型的数据。不同的列可来自同一个域,每一列称为属性,不同的属性必须有不同的名字。列的顺序可以任意交换。关系中元组的顺序(即行序)可任意。关系中每一分量必须是不可分的数据项。112.1.2关系的性质2.1.2关系的性质11姓名籍贯省市/县张强吉林长春王丽山西大同姓名省市/县张强吉林长春王丽山西大同非规范化的关系表2.8规范化的关系

表2.9在表2.8中,籍贯含有省、市/县两项,出现了“表中有表”的现象,则为非规范化关系,而应把籍贯分成省、市/县两列,将其规范化,如表2.9所示

12姓名籍贯省市/县张强吉林长春王丽山西大同姓名2.1.3关系模式2.1.3关系模式关系的描述称为关系模式(RelationSchema)

R(U,D,DOM,F)R--关系名U--属性名集合D--属性所来自的域DOM--属性向域的映像集合F--属性间数据的依赖关系集合简记为:R(U)或R(A1,A2,…,An)属性名

132.1.3关系模式2.1.3关系模式属性名13关系模型关系关系头关系体静态、稳定,固定不变随数据更新不断变化14关系模型关系关系头关系体静态、稳定,固定不变随数据更新不断变例如,在第1章的图1-22所示的教学数据库中,共有五个关系,其关系模式可分别表示为:学生(学号,姓名,性别,年龄,系别)教师(教师号,姓名,性别,年龄,职称,工资,岗位津贴,系别)课程(课程号,课程名,课时)选课(学号,课程号,成绩)授课(教师号,课程号)15例如,在第1章的图1-22所示的教学数据库中,共有五个关系,与学生关系模式对应的数据库中的实例有如下6个元组,如图2-1所示。图2-1与学生关系模式对应的实例16与学生关系模式对应的数据库中的实例有如下6个元组,如图2-12.1.4关系数据库与关系数据库模式2.1.4关系数据库与关系数据库模式关系数据库模型关系数据库型值静态、稳定,固定不变随数据更新不断变化172.1.4关系数据库与关系数据库模式2.1.4关系数2.2关系的键与关系的完整性2.2.1候选键与主关系键候选键(CandidateKey)“学生关系”中的学号能惟一标识每一个学生“选课关系”中,只有属性的组合“学号+课程号”才能惟一地区分每一条选课记录能惟一标识关系中元组的一个属性或属性集,称为候选键(CandidateKey)

候选键候选键惟一性最小性182.2关系的键与关系的完整性2.2.1候选键与主关主关系键(PrimaryKey)从多个候选键中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称为主关系键。 每个关系必定有且仅有一个主关系键学号姓名以学号作为数据操作的依据以姓名作为数据操作的依据主键主码关系键关键字19主关系键(PrimaryKey)学号姓名以学号作为数主属性(PrimeAttribute)与非码属性(Non-PrimeAttribute)主属性:包含在主关系键中的各个属性称为主属性非码属性:不包含在任何候选键中的属性称为非码属性(或非主属性)全码:所有属性的组合是关系的候选键教师T课程C1:nn:1学生S课程C1:nn:1教师T学生S课程Cn:nn:nn:n候选码为(T,C,S)全码

20主属性(PrimeAttribute)与非码属性(Non-2.2.2外部关系键2.2.2外部关系键关系R1关系R2属性X属性Y…属性X属性Z…主码

主码

外部关系键或外码参照关系

被参照关系

被参照关系的主码和参照关系的外码必须定义在同一个域上212.2.2外部关系键2.2.2外部关系键关系R1关2.2.3关系的完整性2.2.3关系的完整性完整性约束实体完整性参照完整性用户自定义完整性必须满足体现具体领域中的语义约束222.2.3关系的完整性2.2.3关系的完整性完整实体完整性(EntityIntegrity)

主关系键的值不能为空或部分为空学生关系中的主关系键“学号”不能为空选课关系中的主关系键“学号+课程号”不能部分为空,即“学号”和“课程号”两个属性都不能为空参照完整性(Referentialintegrity)如果关系R2的外部关系键X与关系R1的主关系键相符,则X的每个值或者等于R1中主关系键的某一个值,或者取空值23实体完整性(EntityIntegrity)23未分配系别24未分配系别24用户定义完整性(User-definedIntegrity)针对某一具体关系数据库的约束条件反映某一具体应用所涉及的数据必须满足的语义要求如:成绩属性的取值范围在0-100之间25用户定义完整性(User-definedIntegrity2.3关系代数关系数据结构关系操作关系完整性约束查询更新插入删除修改关系模型262.3关系代数关系数据结构关系操作关系完整性约束2.3.1关系代数的分类及其运算符2.3.1关系代数的分类及其运算符关系代数是一种抽象的查询语言

关系代数的运算对象与运算结果都是关系关系代数运算符∪-∩×∏∞*÷>,≥<,≤=,≠∧∨┐集合运算符

关系运算符

比较运算符逻辑运算符272.3.1关系代数的分类及其运算符2.3.1关系代关系代数的运算按运算符的不同主要分为两类:传统的集合运算:把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。包括并、差、交和笛卡尔积等运算。专门的关系运算:不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。包括选取、投影、连接和除法等运算。28关系代数的运算按运算符的不同主要分为两类:282.3.2传统的集合运算设给定两个关系R、S,若满足:(1)

具有相同的度n;(2)

R中第i个属性和S中第i个属性必须来自同一个域。则说关系R、S是相容的。除笛卡尔积外,其他的集合运算要求参加运算的关系必须满足上述的相容性定义。292.3.2传统的集合运算设给定两个关系R、S,若满足:并(Union):R∪S={t|t∈R∨t∈S}差(Difference):R-S={t|t∈R∧┐t∈S}交(Intersection):R∩S={t|t∈R∧t∈S}广义笛卡尔积(ExtendedCartesianProduct):R×S={tr⌒ts|tr∈R∧ts∈S}R∩S=R-(R-S)30并(Union):R∪S={t|t∈R∨t∈S}R∩【例2-4】如图2-3(a)、(b)所示的两个关系R与S为相容关系,(c)为R与S的并,(d)为R与S的交,(e)为R与S的差,(f)为R与S的广义笛卡尔积。

ABCABCa1b1c1a1b1c1a1b1c2a2b2c1a2b2c1a2b3c2(a)(b)RS31【例2-4】如图2-3(a)、(b)所示的两个关系R与SABCa1b1c1a2b2c1

R∩S

(d)ABCa1b1c2(e)R-SABCa1b1c1a1b1c2a2b2c1a2b3c2R∪S

(c)32ABCa1b1c1a2b2c1R∩S(d)ABCa1b1ABCABCa1b1c1a1b1c1a1b1c1a2b2c1a1b1c1a2b3c2a1b1c2a1b1c1a1b1c2a2b2c1a1b1c2a2b3c2a2b2c1a1b1c1a2b2c1a2b2c1a2b2c1a2b3c2(f)图2-3传统的集合运算

R×S33ABCABCa1b1c1a1b1c1a1b1c1a2b2c12.3.3专门的关系运算由于传统的集合运算,只是从行的角度进行,而要灵活地实现关系数据库多样的查询操作,必须引入专门的关系运算。在讲专门的关系运算之前,为叙述上的方便先引入几个概念。

(1)设关系模式为R(A1,A2,……An),它的一个关系为R,t∈R表示t是R的一个元组,t[Ai]则表示元组t中相应于属性Ai的一个分量。342.3.3专门的关系运算由于传统的集合运算,只是从行的(2)若A={Ai1,Ai2,……,Aik},其中Ai1,Ai2,……,Aik是A1,A2,……,An中的一部分,则A称为属性列或域列,Ã则表示{A1,A2,……,An}中去掉{Ai1,Ai2,……,Aik}后剩余的属性组。t[A]={t[Ai1],t[Ai2],……,t[Aik]}表示元组t在属性列A上诸分量的集合。(3)R为n目关系,S为m目关系,tr∈R,ts∈S,tr⌒

ts称为元组的连接(concatenation),它是一个n+m列的元组,前n个分量为R的一个n元组,后m个分量为S中的一个m元组。(4)给定一个关系R(X,Z),X和Z为属性组,定义当t[X]=x时,x在R中的象集(imageset),为Zx={t[Z]|t∈R,t[X]=x},它表示R中的属性组X上值为x的诸元组在Z上分量的集合。

35(2)若A={Ai1,Ai2,……,Aik},其中Ai1,A象集举例x1在R中的象集Zx1={Z1,Z2,Z3}x2在R中的象集Zx2={Z2,Z3}x3在R中的象集Zx3={Z1,Z3}Z3x3Z1x3Z3x2Z2x2Z3x1Z2x1Z1x1R36象集举例x1在R中的象集Z3x3Z1x3Z3x2Z2x2Z选择(Selection)F(R)={t|t∈R∧F(t)='真'}[例2-5]查询计算机系的全体学生。

Dept='计算机'(S)或

5=‘计算机’(S)(其中5为属性Dept的序号)运算结果如图从行的角度进行的运算F为选取的条件37选择(Selection)从行的角度进行的运算F为选取的[例2-6]查询工资高于1000元的男教师。

(Sal>1000)∧(Sex='男')(T)运算结果如图38[例2-6]查询工资高于1000元的男教师。38投影(Projection) ΠA(R)={t[A]|t∈R}[例2-7]查询教师的姓名、教师号及其职称。ΠTN,TNo,Prof(T)或Π2,1,5(T)(其中2,1,5分别为属性TN、TNo和Prof的序号)运算结果如图A为R中的属性列从列的角度进行的运算39投影(Projection)A为R中的属性列从列的角度进行[例2-8]查询教师关系中有哪些系。ΠDept(T)运算结果如图40[例2-8]查询教师关系中有哪些系。40[例2-9]查询讲授C5课程的教师号。ΠTNo(σCNo='C5'(TC))运算结果如图41[例2-9]查询讲授C5课程的教师号。41连接(Join)={t

r⌒ts|tr∈R∧ts∈S∧tr[X]ts[Y]为真}为算术比较运算符

自然连接:在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉,记为:R*S

=等值连接<小于连接>大于连接42连接(Join)=等值连接<小于连接>大于连接42 [例2-10]设有如图2-9(a)、(b)所示的两个关系R与S,(c)为R和S的大于连接(C>D),(d)为R和S的等值连接(C=D),(e)为R和S的等值连接(R.B=S.B),(f)为R和S的自然连接。(a)(b)43 [例2-10]设有如图2-9(a)、(b)所示的两个关(c)

(d)(f)

(e)

44(c)(d)(f)(e)44等值连接与自然连接的区别自然连接要求相等属性值的属性名相同,而等值连接不要求自然连接是去掉重复列的等值连接[例2-11]查询讲授“数据库”课程的教师姓名。ΠTN(CN='数据库'(C)*TC*ΠTNo,TN(T))或ΠTN(ΠTNo(CN='数据库'(C)*TC)*ΠTNo,TN(T))运算结果如图45等值连接与自然连接的区别45除法(Division)R÷S={tr[X]|tr∈R∧Πy(S)Yx}除法运算同时从行和列的角度进行运算,适合于包含“全部”之类的短语的查询。Yx为x在R中的象集,x=tr[X]46除法(Division)Yx为x在R中的象集,x=tr[[例2-13]查询选修了全部课程的学生学号和姓名。 ΠSNo,CNo(SC)÷ΠCNo(C)*ΠSNo,SN(S)[例2-14]查询至少选修了C1课程和C3课程的学生学号。 ΠSNo,CNo(SC)÷ΠCNo(CNo='C1'∨CNo='C3'(C))只有S4同学的象集至少包含了C1课程和C3课程,因此,查询结果为S4。47[例2-13]查询选修了全部课程的学生学号和姓名。47【例2-12】已知关系R和S,如图2-11(a),(b)所示,则R÷S如图(c)所示。ABCDa1b2c3d5a1b2c4d6a2b4c1d3a3b5c2d8R(a)CDFc3d5f3c4d6f4S(b)48【例2-12】已知关系R和S,如图2-11(a),(b)所ABa1b2R÷S(c)与除法的定义相对应,本题中 X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D}={(c3,d5),(c4,d6)}Z={F}={f3,f4}其中,元组在X上各个分量值的象集分别为:(a1,b2)的象集为{(c3,d5),(c4,d6)}(a2,b4)的象集为{(c1,d3)}(a3,b5)的象集为{(c2,d8)}S在Y上的投影为{(c3,d5),(c4,d6)}显然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a1,b2)}49ABa1b2R÷S(c)与除法的定义相对应,本题中49除举例设关系R,S,如图(a),(b)所示,则R÷S如图(c)所示。c1b2a1c3b2a2c6b6a4c3b2a1c6b4a3c7b3a2c2b1a1CBAR(a)d2c3b2d1c1b2d1c2b1DCBS(b)50除举例设关系R,S,如图(a),(b)所示,则R÷S如图关系R中,A可以取4个值{a1,a2,a3,a4}。其中:a1的象集为{(b1,c2),(b2,c3),(b2,c1)}a2的象集为{(b3,c7),(b2,c3)}a3的象集为{(b4,c6)}a4的象集为{(b6,c6)}S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)}显然,只有a1的象集(B,C)a1包含了S在(B,C)属性组上的投影,所以R÷S={a1}a1AR÷S(c)51关系R中,A可以取4个值{a1,a2,a3,a4}。其中:a2.4关系演算关系代数关系演算过程化语言,怎样做非过程化语言,做什么

522.4关系演算关系代数关系演算过程化语言,怎样做非过程2.4.1元组关系演算语言ALPHA语言QUEL语言关系演算元组关系演算域关系演算ALPHA,QUELQBE

532.4.1元组关系演算语言关系演算元组关系演算域关2.4.1元组关系演算语言ALPHA语言基本格式:<操作符><工作空间名>(<目标表>)[:<操作条件>]内存空间(W)GETPUTHOLDUPDATEDELETEDROP542.4.1元组关系演算语言ALPHA语言内存空间(W数据查询①简单查询②条件查询③排序查询④定额查询⑤带元组变量的查询⑥带存在量词的查询⑦库函数查询数据更新

①修改

②插入

③删除DELETEPUT55数据查询①简单查询数据更新①修改DELETE①简单查询[例2-16]查询所有被选修的课程号码。GETW(SC.CNo)②条件查询[例2-17]查询计算机系工资高于1000元的教师的姓名和工资。GETW(T.TN,T.Sal):T.Dept='计算机'∧T.Sal>1000③排序查询[例2-18]查询S3同学所选课程号及成绩,并按成绩降序排列。GETW(SC.CNo,SC.Score):SC.SNo='S3'DOWNSC.Score④定额查询[例2-20]查询一名男教师的教师号和姓名,并使他的年龄最小。GETW(1)(T.TNo,T.TN):T.Sex='男'UPT.Age56①简单查询56⑤带元组变量的查询[例2-21]查询S3同学所选课程号。RANGESCXGETW(X.CNo):X.SNo='S3'⑥带存在量词的查询[例2-23]查询至少选修一门其课时数为80的课程的学生的姓名。RANGECCXSCSCXGETW(S.SN):SCX(SCX.SNo=S.SNo∧CX(CX.CNo=SCX.CNo∧CX.CT=80))使用RANGE来说明元组变量,X为关系SC上的元组变量57⑤带元组变量的查询使用RAN

温馨提示

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

评论

0/150

提交评论