计算机第2章关系数据库基本理论_第1页
计算机第2章关系数据库基本理论_第2页
计算机第2章关系数据库基本理论_第3页
计算机第2章关系数据库基本理论_第4页
计算机第2章关系数据库基本理论_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第2章关系数据库根本理论逯燕玲戴红李志明主编第2章关系数据库根本理论2.1关系模型的概念2.2关系代数2.3关系模型的标准化22.1关系模型的概念

2.1.1关系的数学定义定义1:域〔Domain〕是一组具有相同数据类型的值的集合。定义2:任意给定一组域D1,D2,…,Dn的笛卡尔积〔CartesianProduct〕为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Dj,j=1,2,…,n}其中每一个元素〔d1,d2,…,dn〕叫作n元组〔n-tuple〕,或简称为元组〔Tuple〕。元素中的每一个值di叫作分量〔Component〕。假设Di〔i=1,2,…,n〕为有限集,其基数〔Cardinalnumber〕为mi〔i=1,2,…,n〕,那么D1×D2×…×Dn的基数为:m=m1×m2×…×mn。3【例2-1】设D1为导师〔SUPERVISOR〕集合,D2为专业〔SPECIALITY〕集合,D3为研究生〔POSTGRADUATE〕集合,且D1={张清玫,刘逸},D2={计算机应用,信息管理},D3={李勇,刘晨,王敏},那么D1、D2、D3的笛卡儿积D1×D2×D3的基数为2×2×3=12,即D1×D2×D3一共有12个元组,它们可列成一张二维表,如表2.1所示。导师专业研究生导师专业研究生张清玫计算机应用李勇刘逸计算机应用李勇张清玫计算机应用刘晨刘逸计算机应用刘晨张清玫计算机应用王敏刘逸计算机应用王敏张清玫信息管理李勇刘逸信息管理李勇张清玫信息管理刘晨刘逸信息管理刘晨张清玫信息管理王敏刘逸信息管理王敏4定义3:D1×D2×…×Dn的任意一个子集叫做在域D1、D2、…、Dn上的关系〔Relation〕,用R(D1,D2,…,Dn)表示。这里R表示关系的名字,n是关系的目或度〔Degree〕。【例2-2】计算机应用专业关系是例2-1中D1×D2×D3的一个子集,如表2.2所示。专业研究生计算机应用李勇计算机应用刘晨计算机应用王敏5根本关系具有6条性质①列是同质的〔Homogeneous〕,即每一列中的分量是同一类型的数据,来自同一个域。②不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。③列的顺序是可以任意交换的。④任意两个元组不能完全相同。但在大多数实际关系数据库产品中,如ORACLE、FoxPro等,如果用户没有定义有关的约束条件,都允许关系表中存在两个完全相同的元组。⑤行的顺序也是可以任意交换的。⑥行列的交集称为分量,每个分量必须取原子值,即每个分量都必须是不可分的数据项。6关系模式是对关系的描述

定义4关系的描述称为关系模式〔RelationSchema〕,可以形式化地表示为:R(U,D,dom,F)其中,R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。72.1.2关系操作

选择〔Select〕投影〔Project〕连接〔Join〕除〔Divide〕并〔Union〕交〔Intersection〕差〔Difference〕等查询操作增加〔Insert〕删除〔Delete〕修改〔Update〕82.1.3关系的完整性

实体完整性〔entityintegrity〕:假设属性A是根本关系R的主属性,那么属性A不能取空值。参照完整性〔referentialintegrity〕:假设属性〔或属性组〕F是根本关系R的外码,与根本关系S的主码Ks相对应〔根本关系R和S不一定是不同的关系〕,那么对于R中每个元组在F上的值必须为空值〔F的每个属性值均为空值〕,或者等于S中某个元组的主码值。9定义5设F是根本关系R的一个或一组属性,但不是关系R的码,如果F与根本关系S的主码Ks相对应,那么称F是根本关系R的外码〔ForeignKey〕,并称根本关系R为参照关系〔ReferencingRelation〕,根本关系S为被参照关系〔ReferencedRelation〕或目标关系〔Targetrelation〕。关系R和S不一定是不同的关系。【例2-3】学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)“学生〞的“专业号〞必须参照“专业〞的“专业号〞。102.1.3关系的完整性〔续〕实体完整性〔entityintegrity〕参照完整性〔referentialintegrity用户定义的完整性〔user-definedintegrity〕:用户针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。实体完整性和参照性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的约束条件,表达了具体领域中的语义约束。112.2关系代数

2.2.1传统的集合运算并〔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}122.2.2专门的关系运算

选择〔select〕是在关系R中选择满足给定条件的诸元组:F(R)={t|t∈R∧F(t)='真'}其中,F表示选择条件,是一个逻辑表达式,取逻辑值“真〞或“假〞。逻辑表达式F的根本形式为:X1Y1。表示比较运算符,可以是>、≥、<、≤、=或。X1、Y1等是属性名或常量或简单函数。【例2-4】查询信息管理专业〔专业号021〕全体学生:Sdept='021'(Student)或4='021'(Student)13投影〔project〕是从R中选择出假设干属性列组成新的关系:A(R)={t[A]|t∈R}其中,A为R中的属性列。例如查询学生关系Student在学生姓名和年龄两个属性上的投影:Sname,Sage(Student)或2,5(Student)14连接〔join〕是从两个关系的笛卡尔积中选取属性间满足一定条件的元组:RS{<tr,ts>|tr∈R∧ts∈S∧tr[A]ts[B]}其中,A和B分别为R和S上度数相等且可比的属性组。是比较运算符。连接运算从R和S的笛卡尔积R×S中选取〔R关系〕在A属性组上的值与〔S关系〕在B属性组上值满足比较关系的元组。连接运算中有两种最为重要也最为常用的连接,一种是等值连接〔Equi-Join〕,另一种是自然连接〔NaturalJoin〕。15【例2-5】设关系R和关系S如下表:关系R关系S

ABCa1b12a2b37a3b46a1b23a4b66a2b23a1b21BCDEb12d13b21d12b21d11b23d2116R与S自然连接的结果为:ABCDEa1b12d13a1b23d21a2b23d21a1b21d12a1b21d1117除〔Division〕运算得到一个新的关系P(X),P是R中满足以下条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:R÷S={tr[X]|tr∈R∧YxY(S)}其中Yx为x在R中的象集,x=tr[X]【例2-5】中的关系R和S,R÷S的结果为:Aa118查询实例【例2-6】对学生-课程关系数据库,查询选修了0212号课程的学生学号:Sno(2='0212'(SC))【例2-7】查询至少选修了0171号课程和0531号课程的学生学号:1,2(SC)÷1(1='0171'∨1='0531'(Course))【例2-8】查询至少选修了一门其直接先行课为0212号课程的学生姓名:Sno,Sname(Student1(4='0212'(Course))SC)【例2-9】查询选修了全部课程的学生学号和姓名:∏Sno,Sname(Student(∏1,2(SC)÷∏1(Course)))192.3关系模型的标准化标准化按关系模式所具有的数据依赖性质对关系模式的分类。也就是关系的标准化程度。满足不同程度要求的为不同范式。标准化过程把一个低一级范式的关系模式通过模式分解转化为假设干个高一级的关系模式的过程。202.3.1函数依赖定义6:设R(U)是属性集U上的关系模式。X和Y是U的子集。假设对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等。那么称X函数确定Y或Y函数依赖于X,记作X→Y。【例2-10】在学生-课程数据库中,sno→sname,cno→cname,(sno,cno)→grade。21定义7:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,X’都不能函数确定Y,那么称Y对X完全函数依赖,记作:X→Y。定义8:在R(U)中,如果X→Y(Y不是X的真子集,且Y不能函数确定X),Y→Z,那么称Z对X传递函数依赖。f22传递函数依赖:假设属性1属性2属性3,那么属3传递函数依赖于属性1。局部函数依赖:假设〔属性1,属性2〕为关键字,属性1属性3,那么属性3局部函数依赖于属性1。23定义9:设K为R〈U,F〉中的属性或属性组合,假设K→U,那么K为R的候选码〔Candidatekey〕。假设候选码多于一个,那么选定其中的一个为主码〔Primarykey〕。定义10:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,那么称X是R的外部码〔Foreignkey〕也称外码。f242.3.2范式1、第一范式〔1NF〕:关系的每个分量必须是不可再分的数据项。记作R1NF。〔每个属性必须是原子的〕2、说明:属性不可再分〔不允许出现嵌套的属性定义〕属性下的值不可再分〔不允许出现多个值〕这是对关系的最起码的要求,但远远不够。〔满足1NF的关系称为标准关系〕【例2-11】职工情况表职工号部门……工资基本工资奖金【例2-12】借书表借书人所借书名借书日期张三B1B2B3D1D2D3李四B2B5D3这两个表都可变为标准关系25两个表变为标准关系:职工号部门……基本工资奖金借书人所借书名借书日期张三B1D1张三B2D2张三B3D3李四B2D3李四B5D326第二范式〔2NF〕定义:假设R1NF,且每一非主属性都完全函数依赖于R的码,那么称R是第二范式,记作R2NF。【例2-13】属于1NF但不属于2NF的例子:关系模式W〔工号,日期,姓名,工种,定额,超额,车间,车间主任〕关系模式S_L_C〔S#,SD,SL,C#,G〕学生宿舍楼,且每个系学生只住一栋楼27第三范式〔3NF〕定义:假设关系模式R<U,F>1NF,并且R中不存在码X、属性组Y和非主属性Z〔ZY〕使得X→Y〔Y→X〕,Y→Z成立,那么称R3NF。【例2-14】关系模式R〔S,T,J〕学生教师课程每个教师只教一门课,每门课有假设干教师,学生选定某门课就对应固定的教师。28【例2-15】将学生简历及选课等数据设计成一个关系模式STUDENT,其表示为:STUDENT(SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME,CNO,CNAME,SCORE,CREDIT)假设该关系模式满足以下函数依赖:F={SNOSNAME,SNOAGE,SNOSEX,SNOCLASS,CLASSDEPTNO,DEPTNODEPTNAME,CNOCNAME,SNO.CNOSCORE,CNOCREDIT}该关系模式的每一属性对应的域为简单域,非主属性对码存在局部函数依赖,所以STUDENT关系模式仅为第一范式。29将STUDENT中对码完全依赖的属性和局部函数依赖的属性分别组成关系。即将STUDENT关系模式分解成三个关系模式:STUDENT1(SNO,SNAME,AGE,SEX,CLASS,DEPTNO,DEPTNAME)COURSE(CNO,CNAME,CREDIT)SC(SNO,CNO,SCORE〕在分解后的每个关系模式中,非主属性对码是完全函数依赖,所以上述三个关系模式均为2NF。关系模式STUDENT1属性间还存在传递依赖,它不是3NF。30将STUDENT1分解为以下模式:STUDENT2(SNO,SNAME,AGE,SEX,CLASS)CLASS(CLASS,DEPTNO)DEPARTMENT(DEPTNO,DEPTNAME)连同COURSE(CNO,CNAME,CREDIT)SC(SNO,CNO,SCORE〕关系模式属于3NF。312.3.3E-R模型向关系数据库转换

一个1:1联系转换为一个独立的关系模式,也可以与任意一端的关系模式合并一个1:n联系转换为一个独立的关系模式,也可以与n端的关系模式合并一个m:n转换为一个关系模式,各实体的码和联系本身的属性均为关系的属性,各实体码的组合为关系的码。多元联系转换为一个关系模式,各实体的码和联系本身的属性均为关系的属性,各实体码的组合为关系的码。32【例2-16】将学生-课程E-R模型转换为关系模式在此E-R模型中描述了四个实体型,每个实体型转换为一个关系模式;“选修〞联系是两个实体间的多对多联系,转换为一个关系模式;“讲授〞联系是教师、课程和参考书三个实体间的一对多联系,由于该联系有自己的属性,故应该将其转换为一个独立的关系模式。33学生-课程关系模式学生(学号,姓名,性别,年龄,专业号,联系,…,家庭地址)课程(课程号,课程名,学时,学分,直接先行课)教师(教师号,姓名,性别,出生日期,…,职称)参考书(书号,书名,作者,出版社,出版年月)选修(学号,课程号,成绩)讲授(教师号,课程号,书号,教授时间,讲授地点)34数据库标准化设计1.关系模式的操作异常例设“学生选课〞关系模式R(sno,sname,sex,cno,cname,score)存在问题:数据冗余、修改异常、插入异常、删除异常。2.关系模式的标准化将所有属性组成的关系模式称为泛关系模式,将关系r称为泛关系。一般R(U)和r必须用ρ={R1,…,Rk}代替,那么ρ称为数据库模式,其中每一个关系模式Ri实例的集合σ=<r1,…,rk>称为数据库实例〔简称数据库〕。35【例2-17】假设车间考核职工完成生产定额的关系模式如下:W〔工号,日期,姓名,工种,定额,超额,车间,车间主任〕比方设某工号某年月超额完成定额的20%,其记录的内容为:〔1001,98年11月,张三,车工,180,20%,金工车间,李四〕该关系的主键为?工号日期该关系模式存在以下四个严重问题:对同一个人来说,其姓名、工种、车间、车间主任等屡次重复…………1001,98年08月,张三,车工,,,金工车间,李四1001,98年09月,张三,车工,,,金工车间,李四1001,98年10月,张三,车工,,,金工车间,李四1001,98年11月,张三,车工,,,金工车间,李四…………〔1〕数据冗余大36〔2〕插入异常假设新调来一个职工并将他分配到某个车间,根据上述关系模式,在对该职工统计工作之前,他的信息是装不进数据库中的。因为他的日期值是空值,而日期是主键的属性之一,不允许为空。〔1005,NULL,天然,车工,NULL,NULL,金工车间,李四〕应该存储的信息无法存储〔3〕删除异常不该删除的信息被删除假设想删除某人的所有定额完成情况,那么该职工的其他信息也都被删除。比方在98年底要删除97年以前的所有定额完成信息,那么98年由于种种原因未参加现实工作的职工的所有信息全部被删除。37〔4〕修改困难,容易造成数据的不一致性假设某车间换了主任,那么该车间所有职工的上述记录都要修改;又如某人换了车间,那么其工种、车间、车间主任等信息都要修改。修改工作量大;即使漏改一处都会造成数据的不一致性;〔也称更新异常〕上例充分说明对关系模式假设随意设计,其后果是严重的。本章将要讨论产生上述问题的原因以及解决方法,即如何改造一个不好的关系模式。这就是标准化理论要解决的主要问题。38例:车间考核职工完成生产定额的关系模式:W〔工号,日期,姓名,工种,定额,超额,车间,车间主任〕主属性非主属性显然W1NF,但第一节中我们已讨论知它有四个严重问题工号函数决定非主属性姓名、工种、车间、车间主任。因此,关键字〔工号,日期〕局部函数决定这些属性。这显然是产生冗余的一个主要原因。3、仅属于1NF的关系模式可能会产生的问题:数据冗余插入异常删除异常修改困难因此仅是第一范式的关系模式完全不能满足需要。分析出现问题的原因:39函数依赖:〔S#,C#〕GS#SL〔S#,C#〕SD〔S#,C#〕SL关键字:〔S#,C#〕fpp传递S#SD,SDSL,GSDSLS#C#关键字完全局部对关系模式S_L_C,同样存在数据冗余大、插入异常、删除异常、修改困难等问题。〔产生问题的原因同W〕40解决方法:用投影分解消除非主属性对关键字的局部函数依赖转换为2NFGSDSLS#C#关键字部分GS#C#SDSLS#S_LSC2NF2NF分解之后,与S_L_C相比,SC和S_L性质如何??41分解之后,与S_L_C相比:数据冗余减小〔原来伴随学生所学的每门课都要存储一遍SD、SL的值〕;没选课的学生信息可以存储;删除选课记录不会误删学生其他信息;冗余数据的减少使得修改变得容易些。S_L还有问题吗?1NF的上述四个问题得到了局部解决分解前S_L_C〔S#,SD,SL,C#,G〕分解后SC〔S#,C#,G〕S_L〔S#,SD,SL〕424、仅属于2NF的关系模式可能会产生的问题〔4〕修改困难〔2〕插入异常〔3〕删除异常〔1〕数据冗余S_L〔S#,SD,SL〕数据冗余仍然较大:SL的值重复严重假设一个系刚成立但尚无学生,该系名称等无法存储假设一个系的学生全部毕业,删除全部学生数据的同时把该系的数据〔如系名等〕也都删除了数据冗余大势必造成修改困难〔这可以说是个必然联系〕可能的原因:存在传递函数依赖S#SL43例:关系模式R〔

温馨提示

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

评论

0/150

提交评论