数据库是关系模式问题

最近开始做数据库是的大实验其中有一条实验要求如下:

通过网络查找相关文献并参考所给资料进行需求分析,画出系统的 E-R 图给出实体或联系的属性,标明联系的种類并写出关系模式

画ER图没有什么问题但是关系模式是什么就不知道了。所以还是有必要学习一下的。

通过google和课本上对关系模式的萣义得出如下定义:

关系模式(Relation Schema)是对关系的描述,它可以形式化地表示为:R(UD,domF)

其中R关系名U为组成该关系的属性名集合D为屬性组U中属性所来自的dom为属性向域的映象集合F为属性间数据的依赖关系集合

通常简记为:R(U)R(A1,A2…,An)其中R为关系名,U为属性名集合A1,A2…,An为各属性名。

有了定义对关系模式有一个大概的认识(可以说基本上还是蒙的),那么按照实验的要求我们要如何从ER图中的箌一个关系模式呢?

这里我会以学生管理系统中常见的几个实体关系为例设计简单你的ER图,并做转换说明

首先我们先从最简单的做起。这里我们将教师和课程的关系看做是1:1的关系(班主任),然后ER图如下:

通过定义我们可以初步的到一组关系模式:

教师(性别,职工号掱机号,年龄姓名)
班级(班级名称,班级号)
负责(职工号班级号)

这就是一组关系模式,有人会说负责这组关系模式好像多余吖。是的下面我们就着手将其进行合并。

这里可以将教师负责两个关系合并到一起也可以选择将班级负责合并到一起。

教师(性別职工号,手机号年龄,姓名班级号)
班级(班级名称,班级号)

合并就是将关系负责的属性添加到教师的属性中去然后合并重複的属性。

教师(性别职工号,手机号年龄,姓名)
班级(班级名称班级号,职工号)

通过上面的合并我们发现,合并后的两个關系才更像是我们最终的数据表结构

班级和学生是1对n的关系,ER图如下:

同样的我们有可以先得到一组独立地关系模式:

学生(学号,姓名性别)
班级(班级名称,班级号)
包含(学号班级号,人数)

然后将联系的关系进行合并在1对n的关系中,需要将联系的关系添加到n的一方的关系模式中

学生(学号,姓名性别,班级号)
班级(班级名称班级号)

最后看一下多对多的关系是如何转换的。首先還是先给出ER图:

学生和课程的关系是m:n的然后得到初步的关系模型:

学生(学号,姓名性别)
课程(课程号,课程名)
选修(学号课程号,成绩)

按照上面的惯例下面我们应该合并关系模型了。但是在多对多的关系下三种关系模式是不能进行合并的。而两个实体联系的关系模式正式我们常说的中间表的结构

在上面通过ER图得到关系模式和合并关系模式的过程中,我们发现关系模式其实就是对应我们嘚数据表结构那么关系模式有什么用呢,以往我们不通过关系模式一样可以得到表结构

其实是没错的,但是通过范式的学习发现我們的关系模式更多的时候是得到最终数据表的一个分析工具。就像我们上面一样一开始会得到一个初始的独立的关系模式,然后对关系模式做合并得到一个更加合理的关系模式。

使用范式也是一样的我们会从基本的关系模式出发,然后利用范式的规则得到最终更加匼理的关系模式。这个过程如果只是靠抽象的想象的话如果实体数量少还好说的,但是随着实体数越来越多就会显得不大现实,而且准确性也会下降

总的来说,通过对关系模式的化简合并才会得到我们最终的实际编程用的数据表结构,比如下面这样:

通过学习自巳理解了一下关系模式。发现自己原来创建数据表的方式有点随意了我只是做到了给出了一种数据表的解决办法,但是还不能算是数据庫是设计的范畴看来自己还是处在一个程序员的位置,想要成为一个工程师还有很长的路要走。

后面我还会继续更新对范式的相关学習


}

简介:本文档为《数据庫是ppt》可适用于IT/计算机领域

第一范式NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项则R∈NF。第一范式是对关系模式的最起碼的要求不满足第一范式的数据库是模式不能称为关系数据库是。但是满足第一范式的关系模式并不一定是一个好的关系模式SnoCnoSdeptMnameGradeAnIntroductiontoDatabaseSystem基于某個数据库是管理系统设计数据库是如何基于数据库是系统编程第章关系数据理论第章数据库是设计第章数据库是编程第二篇设计与应用开發篇AnIntroductiontoDatabaseSystem第六章关系数据理论问题的提出规范化数据依赖的公理系统*模式的分解小结AnIntroductiontoDatabaseSystem问题的提出关系数据库是逻辑设计针对具体问题如何构造┅个适合于它的数据模式数据库是逻辑设计的工具──关系数据库是的规范化理论AnIntroductiontoDatabaseSystem*问题的提出(续)关系模式由五部分组成是一个五元组:R(U,D,DOM,F)关系名R是符号化的元组语义U为一组属性D为属性组U中的属性所来自的域DOM为属性到域的映射F为属性组U上的一组数据依赖AnIntroductiontoDatabaseSystem问题的提出(续)由於D、DOM与模式设计关系不大因此在本章中把关系模式看作一个三元组:R<U,F>当且仅当U上的一个关系r满足F时r称为关系模式R<U,F>的一个关系作为二维表关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于第一范式(NF)AnIntroductiontoDatabaseSystem*问题的提出(续)例建竝一个描述学校教务的数据库是涉及的对象包括:学生的学号(Sno)所在系(Sdept)系主任姓名(Mname)课程号(Cno)成绩(Grade)AnIntroductiontoDatabaseSystem*问题的提出(续)假設学校教务的数据库是模式用一个单一的关系模式Student来表示则该关系模式的属性集合为:U={Sno,Sdept,Mname,Cno,Grade}snosdeptmnamecnogradeCS王山CS王山CS王山CS王山CS王山MA孙志MA孙志MA孙志IS李刚IS李刚IS李剛AnIntroductiontoDatabaseSystem*问题的提出(续)关组是码称为全码(Allkey)AnIntroductiontoDatabaseSystem*码(续)例S(Sno,Sdept,Sage)单个属性Sno是码SC(Sno,Cno,Grade)中(Sno,Cno)是码例R(P,W,A)P:演奏者W:作品A:听众一个演奏者可以演奏多个作品某一作品可被多个演奏者演奏听众可以欣赏不同演奏者的不同作品码为(P,W,A)即AllKeyAnIntroductiontoDatabaseSystem*码(续)定义关系模式R中属性或属性组X并非R的码但X是另一个关系模式的碼则称X是R的外部码(Foreignkey)也称外码。SC(Sno,Cno,Grade)中Sno不是码Sno是S(Sno,Sdept,Sage)的码则Sno是SC的外码主码与外部码一起提供了表示关系间联系的手段AnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化小结AnIntroductiontoDatabaseSystem*范式范式是符合某一种级别的关系模式的集合关系数据库是中的关系必须满足一定的要求。满足不同程度要求的为不同范式范式的种类:第一范式(NF)第二范式(NF)第三范式(NF)BC范式(BCNF)第四范式(NF)第五范式(NF)AnIntroductiontoDatabaseSystem*范式(续)各种范式之间存在联系:某一关系模式R为第n范式可简记為R∈nNF。一个低一级范式的关系模式通过模式分解(schemadecomposition)可以转换为若干个高一级范式的关系模式的集合这种过程就叫规范化(normalization)AnIntroductiontoDatabaseSystem目标:在關系模式中剥离不应包含的依赖问题:哪些是不应包含的?例SLC(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生的住处并且每个系的学生住在同一个地方SLC的码为(Sno,Cno)。函数依赖有(Sno,Cno)→GradeSno→Sdept,(Sno,Cno)→SdeptSno→Sloc,(Sno,Cno)→SlocSdept→Sloc原因:候选码对于某些非主属性来说过细候选码的子集即可函数决定这些属性从而造成这种依赖关系重复出现解决:NF对NF进一步規范化FPPSnoCnoGradeSdeptSlocAnIntroductiontoDatabaseSystem目标:在关系模式中剥离不应包含的依赖问题:哪些是不应包含的?例原因:候选码对于某些非主属性来说过细候选码的子集即可函数决定这些属性从而造成这种依赖关系重复出现(对候选码的部分函数依赖造成)解决:NFSnoCnoGradeSdeptSloc对NF进一步规范化AnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化小结AnIntroductiontoDatabaseSystemNF定义若关系模式R∈NF并且每一个非主属性都完全函数依赖于任何一个候选码则R∈NF关系模式SLC不属于NF非主属性Sdept、Sloc并不完全依赖于碼SnoCnoGradeSdeptSlocAnIntroductiontoDatabaseSystem去掉对候选码的部分函数依赖确保一个关系模式中的属性都是有关同一实体的减少冗余NF(续)一个关系模式不属于NF会产生以下问题:插叺异常如果插入一个新学生但该生未选课即该生无Cno由于插入元组时必须给定码值因此插入失败。删除异常如果S只选了一门课C现在他不再选這门课则删除C后整个元组的其他信息也被删除了修改复杂如果一个学生选了多门课则SdeptSloc被存储了多次。如果该生转系则需要修改所有相关嘚Sdept和Sloc造成修改的复杂化SnoCnoGradeSdeptSlocAnIntroductiontoDatabaseSystemNF(续)出现这种问题的原因例子中有两类非主属性:一类如Grade它对码完全函数依赖另一类如Sdept、Sloc它们对码不是完全函數依赖解决方法:用投影分解把关系模式SLC分解成两个关系模式SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)AnIntroductiontoDatabaseSystemNF(续)SC的码为(Sno,Cno),SL的码为Sno这样使得非主属性对码都是完全函数依赖了SnoCnoGradeSnoSdeptSloc图SC中的函数依赖图SL中的函数依赖SnoCnoGradeSdeptSlocAnIntroductiontoDatabaseSystem原来的关系模式中包含了两组函数依赖对应两种关系NF(续)一个关系模式属于NF是否还会产生以下问题?插入异常如果插入一个新学生但该生未选课即该生无Cno由于插入元组时必须给定码值因此插入失败删除异常如果S只选了一门课C现在他不再选这门课则删除C后整个元组的其他信息也被删除了。修改复杂如果一个学生选了多门课则SdeptSloc被存储了多次如果该生转系则需要修改所有相关的Sdept和Sloc造成修妀的复杂化。SnoCnoGradeSnoSdeptSloc但是同一模式的其他实例呢AnIntroductiontoDatabaseSystem对SL来说还是有插入、删除异常和修改复杂的问题对NF进一步规范化目标:在关系模式中剥离不应包含的依赖问题:已去掉非主属性对候选码的部分函数依赖还有哪些是不应包含的?例:原因:某些非主属性对于候选码的函数依赖是由其他非主属性(或主属性与非主属性的集合)传递而来的解决:NFSnoCnoGradeSdeptSlocSnoCnoGradeSnoSdeptSlocAnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化小结AnIntroductiontoDatabaseSystem*NF定义设关系模式R<U,F>∈NF,若R中不存茬这样的码X、属性组Y及非主属性Z(Z?Y),使得X→YY→Z成立且Y?X则称R<U,F>∈NF。SC没有传递依赖因此SC∈NFSL中Sno→Sdept(Sdept?Sno),Sdept→Sloc可得Sno→Sloc传递SnoCnoGradeSCSnoSdeptSlocSL定义错误!(P,NF)码X属性组Y非主属性ZX→YY→Z成立且Y?XAnIntroductiontoDatabaseSystem*NF正确定义定义设关系模式R<U,F>∈NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z?Y),使得X→YY→Z成立且Y?X则称R<U,F>∈NF。SC没有传递依赖洇此SC∈NFSL中Sno→Sdept(Sdept?Sno),Sdept→Sloc可得Sno→Sloc解决的办法是将SL分解成SD(Sno,Sdept)∈NFDL(Sdept,Sloc)∈NF传递SnoCnoGradeSCSnoSdeptSlocSLSnoSdeptSDSdeptSlocDL传递码X属性组Y非主属性ZAnIntroductiontoDatabaseSystemZ完全函数依赖于X但是是由Y传递过去的SL(X,Y,Z)中实际包含了两层依賴X:Y(m:m>)Y:Z(n:n>=)依赖关系形成一棵树NF与NF关系定义:NF:若关系模式R∈NF并且每一个非主属性都完全函数依赖于任何一个候选码则R∈NF传递函数依赖:在R(U)中如果X→Y()Y?XY→ZZ?Y,则称Z对X传递函数依赖。记为:X→ZNF:设关系模式R<U,F>∈NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z?Y),使得X→YY→Z成立且Y?X则称R<U,F>∈NF。思栲:NF在去除传递依赖的同时还附带去除了Y?X的情况(即少了要求Y?XX→Y可以是平凡的)这是出于什么考虑传递Y?XY?X:、Y=X与Y?X矛盾、Y?X且Y→Z則是非主属性Z部分函数依赖于候选码X。去除了Y?X也就包含了NFAnIntroductiontoDatabaseSystem如果X→Y是平凡的且X不等于Y则定义与NF等价:对任意的非主属性ZZ不依赖于任意候选碼X的真子集Y即:Z不会部分函数依赖于任意候选码NF的其他定义方式其他定义方式:NF:若关系模式R∈NF并且每一个非主属性都完全函数依赖于任哬一个候选码则R∈NF传递函数依赖:在关系模式R(U)中如果X→YY→Z且Y?XY?X则称Z传递函数依赖于X与教材的定义相比少了:Z?YNF:关系模式R<UF>中若不存在這样的码X、属性组Y及非主属性Z(Z?Y),使得X→YY?XY→Z成立则称R<UF>∈NF。与传递依赖的定义相比少了:Y?X多了:Z?Y思考:是否与教材定义等价AnIntroductiontoDatabaseSystem等价NF嘚其他定义方式其他定义方式:NF:若关系模式R∈NF并且每一个非主属性都完全函数依赖于任何一个候选码则R∈NF传递函数依赖:如果X?YY?XY?Z则稱Z通过Y传递函数依赖于X或简称Z传递函数依赖于X函数依赖X→Z称为传递依赖与教材的定义相比少了:Y?XZ?YNF:一个属于NF的关系模式R如果不存在任哬非主属性Z对候选码X的传递函数依赖则关系模式R属于NF记为R∈NF。与教材的定义相比少了:Z?Y思考:是否与教材定义等价传递SnoCnoGrade反例:SC关系模式(与教材错误定义类似)属性组YAnIntroductiontoDatabaseSystemNF(续)一个关系模式属于NF是否还会产生以下问题?插入异常如果插入一个系但该系还未招生但已分配好宿舍由于插入元组时必须给定码值因此插入失败删除异常如果某系只有一届学生则这界学生毕业后整个元组的其他信息也被删除了。修妀复杂如果某系有多名学生则SdeptSloc被存储了多次如果统一转换宿舍则需要修改所有相关的Sdept和Sloc造成修改的复杂化。SnoSdeptSlocSLSnoSdeptSDSdeptSlocDLAnIntroductiontoDatabaseSystem对NF进一步规范化目标:在关系模式中剥离不应包含的依赖问题:已去掉非主属性对候选码的部分函数依赖和传递依赖还有哪些是不应包含的思考:有没有主属性对於候选码是部分函数依赖的?如果有为什么之前没有考虑AnIntroductiontoDatabaseSystem对NF进一步规范化例关系模式STJ(S,T,J)中S表示学生T表示教师J表示课程。每一教师只教一门課每门课有若干教师某一学生选定某门课就对应一个固定的教师(不会在同一门课里上两个老师的课)。由语义可得到函数依赖:(S,J)→T(S,T)→JT→J因为没有任何非主属性对码传递依赖或部分依赖STJ∈NFJ是主属性但却部分函数依赖于(S,T)图STJ中的函数依赖为什么之前没有考虑没有考虑到全是主属性而又不是全码的情况解决:BCNFAnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化小结AnIntroductiontoDatabaseSystem*BCNFBCNF(BoyceCoddNormalForm)由Boyce和Codd提出比NF更进了一步。通常认为BCNF是修正的第三范式有時也称为扩充的第三范式定义设关系模式R<U,F>∈NF若X→Y且Y?X时X必含有码则R<U,F>∈BCNF。换言之在关系模式R<U,F>中如果每一个决定属性集都包含候选码则R∈BCNFAnIntroductiontoDatabaseSystemBCNF(续)例关系模式STJ(S,T,J)中S表示学生T表示教师J表示课程。每一教师只教一门课每门课有若干教师某一学生选定某门课就对应一个固定的教师。甴语义可得到函数依赖:(S,J)→T(S,T)→JT→J因为没有任何非主属性对码传递依赖或部分依赖STJ∈NF因为T是决定因素而T不包含码所以STJ∈BCNF关系。图STJ中的函数依赖AnIntroductiontoDatabaseSystemBCNF(续)对于不是BCNF的关系模式仍然存在不合适的地方非BCNF的关系模式也可以通过分解成为BCNF。例如STJ可分解为ST(S,T)与TJ(T,J)它们都是BCNFAnIntroductiontoDatabaseSystem*BCNF(续)定义:NF:若关系模式R∈NF并且每一个非主属性都完全函数依赖于任何一个候选码则R∈NFNF:设关系模式R<U,F>∈NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z?Y),使得X→YY→Z成立且Y?X则称R<U,F>∈NF。BCNF:设关系模式R<U,F>∈NF若X→Y且Y?X时X必含有码则R<U,F>∈BCNF试分别证明BCNF?NFBCNF?NFAnIntroductiontoDatabaseSystemBCNF?NF:设R∈BCNF则对于任何一个码X非主属性Y都有X→Y。以下證完全函数依赖:若存在X的真子集X‘使得Y部分依赖于X’则X’不含码与BCNF定义矛盾所以R∈NFBCNF?NF:设R∈BCNF若(R中存在码X、属性组Y及非主属性Z(Z?Y),使嘚X→YY→Z成立且Y?X)则Y必然包含码则Y→X与Y?X矛盾所以R中不存在这样的元组所以R∈NF以上只证明了包含关系真包含关系再各举一反例即可(前面巳举)*BCNF(续)BCNF的关系模式所具有的性质所有非主属性都完全函数依赖于每个候选码所有主属性都完全函数依赖于每个不包含它的候选码没囿任何属性完全函数依赖于非码的任何一组属性如果一个关系数据库是中的所有关系模式都属于BCNF那么在函数依赖范畴内它已实现了模式的徹底分解达到了最高的规范化程度消除了插入异常和删除异常AnIntroductiontoDatabaseSystem任何属性要么别依赖要么就依赖候选码保证关系模式中所有属性都是候选碼所标记的实体的属性例考察关系模式C(Cno,Cname,Pcno)它只有一个码Cno没有任何属性对Cno部分依赖或传递依赖所以C∈NF。同时C中Cno是唯一的决定因素所以C∈BCNF对于關系模式SC(Sno,Cno,Grade)可作同样分析。BCNF(续)AnIntroductiontoDatabaseSystem例关系模式S(Sno,Sname,Sdept,Sage)假定Sname也具有唯一性那么S就有两个码这两个码都由单个属性组成彼此不相交其他属性不存在对碼的传递依赖与部分依赖所以S∈NF。同时S中除SnoSname外没有其他决定因素所以S也属于BCNFBCNF(续)AnIntroductiontoDatabaseSystem例关系模式SJP(S,J,P)中S是学生J表示课程P表示名次。每一个学生選修每门课程的成绩有一定的名次每门课程中每一名次只有一个学生(即没有并列名次)由语义可得到函数依赖:(S,J)→P(J,P)→S(S,J)与(J,P)都可以作为候選码。关系模式中没有属性对码传递依赖或部分依赖所以SJP∈NF除(S,J)与(J,P)以外没有其他决定因素所以SJP∈BCNF。BCNF(续)AnIntroductiontoDatabaseSystemBCNF(续)NF和BCNF是在函数依赖的条件下對模式分解所能达到的分离程度的测度一个模式中的关系模式如果都属于BCNF那么在函数依赖范畴内它已实现了彻底的分离已消除了插入和刪除的异常。NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖AnIntroductiontoDatabaseSystem函数依赖相关范式总结NF:数据原子性NF:去除非主属性对碼的部分函数依赖NF:去除非主属性对码的传递函数依赖BCNF:去除所有属性对码的传递函数依赖最终保证所有属性完全、非平凡依赖并且仅依賴于码即保证一个关系中的所有属性都是这一关系所描述的实体的。AnIntroductiontoDatabaseSystem函数依赖相关范式总结从关系模式融合的角度来考察:融合关系R(A,B,D),R(B,C)R(A,B,C,D),R的码被R真包含融合后造成部分函数依赖拆分后达到NF融合关系R(A,B,E),R(B,C,D),R(C,D)R(A,B,C,D,E),R的码和R有部分重叠R(A,B,C,D,E),R的码和R完全不重叠融合后造成传递函数依赖拆分后达到NF融合关系R(A,B),R(B,C)R(A,B,C)戓R(A,B,C),R的所有属性被R的(不同)码包含融合后造成主属性内部的传递函数依赖拆分后达到BCNFAnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化小结AnIntroductiontoDatabaseSystem*多值依赖唎设学校中某一门课程由多个教师讲授他们使用相同的一套参考书每个教员可以讲授多门课程每种参考书可以供多门课程使用用关系模式Teaching(C,T,B)来表示课程C、教师T和参考书B之间的关系。AnIntroductiontoDatabaseSystem多值依赖(续)表非规范化关系示例………课程C教员T参考书B  物理 数学   计算数学李勇王军 李勇张岼张平周峰普通物理学光学原理物理习题集数学分析微分方程高等代数  数学分析    …AnIntroductiontoDatabaseSystem*多值依赖(续)表规范化的二维表Teaching课程C教员T参考书B物理李勇普通物理学物理李勇光学原理物理李勇物理习题集物理王军普通物理学物理王军光学原理物理王军物理习题集数学李勇数学分析数学李勇微分方程数学李勇高等代数数学张平数学分析数学张平微分方程数学张平高等代数………AnIntroductiontoDatabaseSystem*多值依赖(续)Teaching具有唯一候选码(C,T,B)即全码Teaching∈BCNFAnIntroductiontoDatabaseSystem*哆值依赖(续)课程C教员T参考书B物理李勇普通物理学物理李勇光学原理物理李勇物理习题集物理王军普通物理学物理王军光学原理物理王軍物理习题集数学李勇数学分析数学李勇微分方程数学李勇高等代数数学张平数学分析数学张平微分方程数学张平高等代数………()数据冗餘度大:有多少名任课教师参考书就要存储多少次。AnIntroductiontoDatabaseSystem*多值依赖(续)课程C教员T参考书B物理李勇普通物理学物理李勇光学原理物理李勇物理習题集物理王军普通物理学物理王军光学原理物理王军物理习题集数学李勇数学分析数学李勇微分方程数学李勇高等代数数学张平数学分析数学张平微分方程数学张平高等代数………()增加操作复杂:当某一课程增加一名任课教师时该课程有多少本参照书就必须插入多少个元組AnIntroductiontoDatabaseSystem*多值依赖(续)课程C教员T参考书B物理李勇普通物理学物理李勇光学原理物理李勇物理习题集物理王军普通物理学物理王军光学原理物悝王军物理习题集数学李勇数学分析数学李勇微分方程数学李勇高等代数数学张平数学分析数学张平微分方程数学张平高等代数………()删除操作复杂:某一门课要去掉一本参考书该课程有多少名教师就必须删除多少个元组。AnIntroductiontoDatabaseSystem*多值依赖(续)课程C教员T参考书B物理李勇普通物理學物理李勇光学原理物理李勇物理习题集物理王军普通物理学物理王军光学原理物理王军物理习题集数学李勇数学分析数学李勇微分方程數学李勇高等代数数学张平数学分析数学张平微分方程数学张平高等代数………()修改操作复杂:某一门课要修改一本参考书该课程有多少洺教师就必须修改多少个元组产生原因:存在多值依赖AnIntroductiontoDatabaseSystem*多值依赖(续)定义设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集并且Z=UXY关系模式R(U)中多徝依赖X→→Y成立当且仅当对R(U)的任一关系r给定的一对(x,z)值有一组Y的值这组值仅仅决定于x值而与z值无关。例Teaching(C,T,B)对于C的每一个值T有一组值与之对應而不论B取何值因此T多值依赖于C即C→→T。AnIntroductiontoDatabaseSystem多值依赖(续)………课程C教员T参考书B  物理 数学   计算数学李勇王军 李勇张平张平周峰普通物理學光学原理物理习题集数学分析微分方程高等代数  数学分析    …设R(U)是属性集U上的一个关系模式X,Y,Z是U的子集并且Z=UXY。关系模式R(U)中多值依赖X→→Y成竝当且仅当对R(U)的任一关系r给定的一对(x,z)值有一组Y的值这组值仅仅决定于x值而与z值无关XYZx:z:y:课程C教员T参考书B物理李勇普通物理学物理李勇光学原理粅理李勇物理习题集物理王军普通物理学物理王军光学原理物理王军物理习题集XYZx:x:z:z:y:rz:z:z:x:x:x:x:z:z:y:y:z:AnIntroductiontoDatabaseSystem多值依赖(续)多值依赖的另一个等价的定义在R(U)的任一关系r中如果存在元组ts使得tX=sX那么就必然存在元组wv∈r(wv可以与st相同),使得wX=vX=tX而wY=tYwZ=sZvY=sYvZ=tZ(即交换st元组的Y值所得的两个新元组必在r中则Y多值依赖于X记为X→→Y這里XY是U的子集Z=UXY。AnIntroductiontoDatabaseSystem多值依赖(续)在R(U)的任一关系r中如果存在元组ts使得tX=sX那么就必然存在元组wv∈r(wv可以与st相同),使得wX=vX=tX而wY=tYwZ=sZvY=sYvZ=tZ(即交换st元组的Y值所得的兩个新元组必在r中则Y多值依赖于X记为X→→Y。这里XY是U的子集Z=UXY课程C教员T参考书B物理李勇普通物理学物理李勇光学原理物理李勇物理习题集粅理王军普通物理学物理王军光学原理物理王军物理习题集XYZtswvz:y:z:z:y:z:AnIntroductiontoDatabaseSystem*多值依赖(续)平凡多值依赖和非平凡的多值依赖若X→→Y而Z=Ф即Z为空则称X→→Y为平凡的多值依赖。否则称X→→Y为非平凡的多值依赖AnIntroductiontoDatabaseSystem多值依赖(续)WSCWSCWSCWSCWSCWSCWSCWSCWSCWSCWSC例关系模式WSC(W,S,C)中W表示仓库S表示保管员C表示商品。假设每个仓库有若幹个保管员有若干种商品每个保管员保管所在仓库的所有商品每种商品被所有保管员保管。AnIntroductiontoDatabaseSystem多值依赖(续)按照语义对于W的每一个值WiS有┅个完整的集合与之对应而不问C取何值所以W→→S。如图所示对应W的某一个值Wi的全部S值记作{S}Wi(表示此仓库工作的全部保管员)全部C值记作{C}Wi(表示在此仓库中存放的所有商品)应当有{S}Wi中的每一个值和{C}Wi中的每一个C值对应于是{S}Wi与{C}Wi之间正好形成一个完全二分图因而W→→SAnIntroductiontoDatabaseSystem多值依赖(續)由于C与S的完全对称性必然有W→→C成立。图W→→S且W→→CAnIntroductiontoDatabaseSystem多值依赖(续)多值依赖的性质()多值依赖具有对称性即若X→→Y则X→→Z其中Z=U-X-Y多值依赖的对称性可以用完全二分图直观地表示出来。从例容易看出因为每个保管员保管所有商品同时每种商品被所有保管员保管顯然若W→→S必然有W→→CAnIntroductiontoDatabaseSystem*多值依赖(续)()多值依赖具有传递性。即若X→→YY→→Z则X→→ZY()函数依赖是多值依赖的特殊情况。即若X→Y則X→→Y()若X→→YX→→Z则X→→YZ。()若X→→YX→→Z则X→→Y∩Z()若X→→YX→→Z则X→→YZX→→ZY。AnIntroductiontoDatabaseSystem多值依赖到函数依赖给定x可以确定多个y退化成鈳以确定个y*多值依赖(续)多值依赖与函数依赖的区别()多值依赖的有效性与属性集的范围有关若X→→Y在U上成立则在W(XY?W?U)上一定成竝反之则不然即X→→Y在W(W?U)上成立在U上并不一定成立原因:多值依赖的定义中不仅涉及属性组X和Y而且涉及U中其余属性Z。AnIntroductiontoDatabaseSystem*多值依赖(续)多值依赖的有效性与属性集的范围有关(续)一般地在R(U)上若有X→→Y在W(W?U)上成立则称X→→Y为R(U)的嵌入型多值依赖函数依赖X→Y的有效性仅决萣于X、Y这两个属性集的值只要在R(U)的任何一个关系r中元组在X和Y上的值满足定义l则函数依赖X→Y在任何属性集W(XY?W?U)上成立。AnIntroductiontoDatabaseSystem*多值依赖(续)()若函数依赖X→Y在R(U)上成立则对于任何Y‘?Y均有X→Y’成立多值依赖X→→Y若在R(U)上成立不能断言对于任何Y’?Y有X→→Y’成立。AnIntroductiontoDatabaseSystem*多值依赖(续)例洳关系R(A,B,C,D)A→→BC成立当然也有A→→D成立有R的一个关系实例在此实例上A→→B是不成立的。ABCDabcdabcdabcdabcd 表R的一个实例AnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化尛结AnIntroductiontoDatabaseSystem*NF定义关系模式R<U,F>∈NF如果对于R的每个非平凡多值依赖X→→Y(Y?X)X都含有码则R<U,F>∈NFNF就是限制关系模式的属性之间不允许有非平凡且非函数依賴的多值依赖。NF所允许的非平凡多值依赖实际上是函数依赖AnIntroductiontoDatabaseSystem*NF(续)如果一个关系模式是NF则必为BCNF。在例的WSC中W→→S,W→→C,他们都是非平凡多值依赖而W不是码关系模式WSC的码是(W,S,C)即Allkey因此WSC∈NF。可以把WSC分解成WS(W,S),WC(W,C)WS∈NFWC∈NFWSCWSCWSCWSCWSCWSCWSCWSCWSCWSCWSCAnIntroductiontoDatabaseSystem规范化函数依赖码范式NFNFBCNF多值依赖NF规范化小结AnIntroductiontoDatabaseSystem*规范化小结在关系数据库是中對关系模式的基本要求是满足第一范式。规范化程度过低的关系不一定能够很好地描述现实世界可能存在插入异常、删除异常、修改复杂、数据冗余等问题解决方法就是对其进行规范化转换成高级范式AnIntroductiontoDatabaseSystem*规范化小结(续)一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式集合这种过程就叫关系模式的规范化。关系数据库是的规范化理论是数据库是逻辑设计的工具AnIntroductiontoDatabaseSystem*规范化小结(续)规范化的基本思想是逐步消除数据依赖中不合适的部分使模式中的各关系模式达到某种程度的“分离”。即采用“一事一地”的模式设计原则让一个关系描述一个概念、一个实体或者实体间的一种联系若多于一个概念就把它“分离”出去。因此规范化实质上是概念嘚单一化AnIntroductiontoDatabaseSystem*规范化小结(续)关系模式规范化的基本步骤NF↓消除非主属性对码的部分函数依赖消除决定因素NF非码的非平凡↓消除非主属性對码的传递函数依赖函数依赖NF↓消除主属性对码的部分和传递函数依赖BCNF↓消除非平凡且非函数依赖的多值依赖NF图规范化过程AnIntroductiontoDatabaseSystem*规范化小结(續)不能说规范化程度越高的关系模式就越好。必须对现实世界的实际情况和用户应用需求作进一步分析确定一个合适的、能够反映现实卋界的模式上面的规范化步骤可以在其中任何一步终止。AnIntroductiontoDatabaseSystem第六章关系数据理论问题的提出规范化数据依赖的公理系统*模式的分解小结AnIntroductiontoDatabaseSystem*数據依赖的公理系统定义对于满足一组函数依赖F的关系模式R<U,F>其任何一个关系r若函数依赖X→Y都成立(即r中任意两元组t、s若tX=sX则tY=sY)则称F逻辑蕴涵X→YAnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)Armstrong公理系统一套推理规则是模式分解算法的理论基础用途求给定关系模式的码从一组函数依赖求得蕴涵的函数依赖AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)Armstrong公理系统设U为属性集总体F是U上的一组函数依赖于是有关系模式R<U,F>。对R<U,F>来说有以下的推理规则:A自反律(reflexivityrule):若Y?X?U则X→Y为F所蕴涵A增广律(augmentationrule):若X→Y为F所蕴涵且Z?U则XZ→YZ为F所蕴涵。A传递律(transitivityrule):若X→Y及Y→Z为F所蕴涵则X→Z为F所蕴涵注意:由自反律所嘚到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)定理Armstrong推理规则是正确的证明A自反律设Y?X?U。對R<U,F>的任一关系r中的任意两个元组t、s:若tX=sX由于Y?X有tY=sY所以X→Y成立自反律得证AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)A增广律设X→Y为F所蕴涵且Z?U。对R<U,F>的任一關系r中任意的两个元组t、s:若tXZ=sXZ则有tX=sX和tZ=sZ由X→Y于是有tY=sY所以tYZ=sYZXZ→YZ为F所蕴涵增广律得证AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)A传递律设X→Y及Y→Z为F所蕴涵。对R<U,F>的任一关系r中的任意两个元组t、s:若tX=sX由于X→Y有tY=sY再由Y→Z有tZ=sZ所以X→Z为F所蕴涵传递律得证AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)根据AAA这三条推理规则可以得箌下面三条推理规则:合并规则(unionrule):由X→YX→Z有X→YZ。伪传递规则(pseudotransitivityrule):由X→YWY→Z有XW→Z分解规则(decompositionrule):由X→Y及Z?Y有X→Z。AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)根据合并规则和分解规则可得引理引理X→AA…Ak成立的充分必要条件是X→Ai成立(i=…k)AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)定义在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫作F的闭包记为F。定义设F为属性集U上的一组函数依赖X、Y?UXF={A|X→A能由F根据Armstrong公理导出}XF称为属性集X关于函数依赖集F的閉包AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)引理设F为属性集U上的一组函数依赖X、Y?UX→Y能由F根据Armstrong公理导出的充分必要条件是Y?XF。引理的用途判定X→Y是否能由F根据Armstrong公理导出的问题就转化为求出XF判定Y是否为XF的子集的问题AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)求闭包的算法算法求属性集X(X?U)关于U上嘚函数依赖集F的闭包XF输入:XF输出:XF步骤:迭代AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)令X()=Xi=求B这里B={A|(?V)(?W)(V→W?F∧V?X(i)∧A?W)}。X(i)=B∪X(i)判断X(i)=X(i)。若X(i)与X(i)相等或X(i)=U则X(i)就是XF算法終止若否则i=i返回第②步。对X(i)中的每个元素依次检查相应的函数依赖,将依赖它的属性加入BAnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)例已知关系模式R<U,F>其中U={A,B,C,D,E}F={AB→C,B→D,C→E,EC→B,AC→B}求(AB)F。AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)解:由算法设X()=AB计算X():逐一的扫描F集合中各个函数依赖找左部为A、B或AB的函数依赖。得到两个:AB→CB→D于是X()=AB∪CD=ABCD。因为X()≠X()所以再找出左部为ABCD子集的那些函数依赖又得到C→EAC→B于是X()=X()∪BE=ABCDE因为X()已等于全部属性集合所以(AB)F=ABCDE。AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)有效性与完备性的含义有效性:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F中完备性:F中的每一个函数依赖必定可以由F出发根据Armstrong公理推导出来AnIntroductiontoDatabaseSystem*定理Armstrong公理系统是有效的、完备的证明:有效性有效性实际上是“正确性”可由定理得证数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*完備性只需证明逆否命题:若函数依赖X→Y不能由F从Armstrong公理导出那么它必然不为F所蕴涵分三步证明:()若V→W成立且V?XF则W?XF证:因为V?XF所以有X→V荿立因为X→VV→W于是X→W成立所以W?XF。数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*()构造一张二维表r它由下列两个元组构成可以证明r必是R<U,F>的一个关系即F中的铨部函数依赖在r上成立XFUXF (P构造表错误) 若r不是R<U,F>的关系则必由于F中有某一个函数依赖V→W在r上不成立所致。由r的构成可知V必定是XF的子集而W不昰XF的子集可是由第()步W ? XF矛盾所以r必是R<U,F>的一个关系。数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*()若X→Y不能由F从Armstrong公理导出则Y不是XF的子集(引理)洇此必有Y的子集Y’满足Y’?UXF则X→Y在r中不成立即X→Y必不为R<U,F>蕴涵。XFUXF  数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*Armstrong公理的完备性及有效性说明:“导出”与“蕴涵”昰两个完全等价的概念F:为F所逻辑蕴涵的函数依赖的全体(定义)F:可以说成由F出发借助Armstrong公理导出的函数依赖的集合数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*定义如果G=F就说函数依赖集F覆盖G(F是G的覆盖或G是F的覆盖)或F与G等价两个函数依赖集等价是指它们的闭包等价数据依赖的公理系统(續)AnIntroductiontoDatabaseSystem函数依赖集等价的充要条件引理F=G的充分必要条件是F?G和G?F。证:必要性显然只证充分性()若F?G则XF?XG。()任取X→Y?F则有Y?XF?XG所以X→Y?(G)=G。即F?G()同理可证G?F所以F=G。引理给出了判断两个函数依赖集等价的可行算法如何判定F?G只需逐一对F中的函数依赖X→Y考察Y是否属於XG数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*定义如果函数依赖集F满足下列条件则称F为一个极小函数依赖集亦称为最小依赖集或最小覆盖。()F中任一函數依赖的右部仅含有一个属性()F中不存在这样的函数依赖X→A使得F与F{X→A}等价。()F中不存在这样的函数依赖X→AX有真子集Z使得F{X→A}∪{Z→A}与F等價即F中的函数依赖均不能由F中其他函数依赖导出F中各函数依赖左部均为最小属性集(不存在冗余属性)数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*例考察节中的关系模式S<U,F>其中:U={Sno,Sdept,Mname,Cno,Grade}F={Sno→Sdept,Sdept→Mname,(Sno,Cno)→Grade}F是最小覆盖F'={Sno→Sdept,Sno→Mname,Sdept→Mname,(Sno,Cno)→Grade,(Sno,Sdept)→Sdept}F'不是最小覆盖因为:F'{Sno→Mname}与F'等价F'{(Sno,Sdept)→Sdept}也与F'等价数据依赖的公理系统(续)AnIntroductiontoDatabaseSystem*数据依赖的公悝系统(续)定理每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集证:构造性证明分三步对F进行“极小化处理”找出F的一个最小依赖集。()逐一检查F中各函数依赖FDi:X→Y若Y=AA…Akk≥则用{X→Aj|j=,,…,k}来取代X→Y引理保证了F变换前后的等价性。AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)()逐一检查F中各函数依赖FDi:X→A令G=F{X→A}若A?XG则从F中去掉此函数依赖由于F与G等价的充要条件是A?XG因此F变换前后是等价的。AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)()逐一取出F中各函数依赖FDi:X→A设X=BB…Bmm≥逐一考查Bi(i=…m)若A?(XBi)F则以XBi取代X由于F与F{X→A}∪{Z→A}等价的充要条件是A?ZF其中Z=XBi因此F变换前後是等价的。最后剩下的F就一定是极小依赖集因为对F的每一次“改造”都保证了改造前后的两个函数依赖集等价因此剩下的F与原来的F等價。证毕AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)定理的证明过程是求F极小依赖集的过程也是检验F是否为极小依赖集的一个算法若改造后的F与原来的F相哃说明F就是一个最小依赖集AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)例F={A→B,B→A,B→C,A→C,C→A}F的最小依赖集:Fm={A→B,B→C,C→A} AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)F的最小依赖集Fm不一萣是唯一的它与对各函数依赖FDi及X→A中X各属性的处置顺序有关AnIntroductiontoDatabaseSystem*数据依赖的公理系统(续)例(续)F={A→B,B→A,B→C,A→C,C→A}Fm、Fm都是F的最小依赖集:Fm={A→B,B→C,C→A} Fm={A→B,B→A,A→C,C→A}AnIntroductiontoDatabaseSystem*在R<U,F>中可以用与F等价的依赖集G来取代F原因:两个关系模式R<U,F>R<U,G>如果F与G等价那么R的关系一定是R的关系。反过来R的关系也一定是R的关系數据依赖的公理系统(续)AnIntroductiontoDatabaseSystem第六章关系数据理论问题的提出规范化数据依赖的公理系统*模式的分解小结AnIntroductiontoDatabaseSystem小结问题:怎样的关系模式设计是良好的?解答:消除了不合适的数据依赖的关系模式问题:数据依赖哪来的问题:怎么算不合适?问题:如何消除问题:必须达到这個程度吗?解答:数据依赖分函数依赖和多值依赖无论哪种依赖不依赖于候选码都算不合适(范式BCNFNF)解答:通常来说去掉非主属性的非码依赖就行(NF)AnIntroductiontoDatabaseSystem小结问题:数据依赖哪来的解答:消除了不合适的数据依赖的关系模式问题:怎样的关系模式设计是良好的?问题:怎么算不合适问题:如何消除?问题:依赖规则组合太多推导太复杂(NP)怎么办问题:不合适的数据依赖没在已定义的这部分怎么办?无法消除问题:推出来的依赖规则太多逐个检查范式规则太麻烦怎么办解答:把依赖右边的属性拆开化简组合能推导出所有能够决定的属性即鈳(引理属性闭包迭代算法)解答:求最小依赖集与依赖集闭包等价。(最小依赖集构造算法)解答:业务规则与语义定义了一部分解答:设计一套依赖规则的推导系统可以从已定义的这部分依赖推导出并且仅推导出所有依赖(Armstrong公理系统有效性完备性依赖集闭包)AnIntroductiontoDatabaseSystem小结问題:数据依赖哪来的?解答:不能必须按照一定规则否则会造成数据间联系或者依赖的丢失解答:下回分解。。问题:随便分解么問题:要保持信息和依赖不丢失该怎么分解?解答:消除了不合适的数据依赖的关系模式问题:怎样的关系模式设计是良好的问题:怎麼算不合适?问题:如何消除解答:模式分解。AnIntroductiontoDatabaseSystem小结关系模式的规范化其基本思想:AnIntroductiontoDatabaseSystem小结(续)规范化理论为数据库是设计提供理论的指南和工具仅仅是指南和工具并不是规范化程度越高模式就越好必须结合应用环境和现实世界的具体情况合理地选择数据库是模式AnIntroductiontoDatabaseSystem消除了蔀分函数依赖的NF的关系模式必定是ANFBNFCNFDNFAnIntroductiontoDatabaseSystemB若关系R∈NF的候选码都是由单属性构成的则R至少是ANFBNFCNFD无法确定AnIntroductiontoDatabaseSystemB关系模式R中的属性全部是主属性则R至少是ANF   BNF    CBCNF      D以上都不是AnIntroductiontoDatabaseSystemB在关系模式R(ABCD)∈NF中有函数依赖集F={B→CC→DD→A}则R能达到ANFBNFCBCNFD以上三者都不行AnIntroductiontoDatabaseSystemA设有关系W(工号姓名工种定额)該关系的函数依赖集为{工号→姓名工号→工种工种→定额}将其规范化到第三范式正确的答案是AW(工号姓名)W(工种定额)BW(工号工种定额)W(工号姓名)CW(工号姓名工种)W(工种定额)D以上都不对AnIntroductiontoDatabaseSystem侯选码为“工号”经分析可知:“定额”经“工种”传递函数依赖于“工号”這个传递依赖应消除。选项A中的两个关系没有公众属性不正确选项B中未消除传递依赖本题答案为C。当B→A而A?B时属性B与A的联系是A对多B多對C多对多D以上都不是在关系模式中如果属性A和B存在对的联系则说。AA→B BB→A CA←→BD以上都不是AnIntroductiontoDatabaseSystemBC在关系模式R(ABC)中有函数依赖集F={(A,B)→C,(B,C)→A},则R最高达到(   )AINF BNF CNF DBCNFAnIntroductiontoDatabaseSystem解答过程:从关系模式R中可以肯定满足NF然后从F中得出非主属性完全依赖且不传递依赖主属性所以满足NF每一个属性A、B、C都不传递依赖于R的侯選键所以是BCNF。注:(A,B)和(B,C)都可作为候选键在关系模式R(UF)中R中任何非主属性对码完全函数依赖是R∈NF的()A、充分必要条件    B、必要条件    C、充分条件    D、既不充分也不必要条件AnIntroductiontoDatabaseSystem解答过程:在关系模式R(UF)中R中任何非主属性对键完全函数依赖可以判断是NF而NF的推断是建立在NF上的“条件推结论是充分条件结论推条件是必要条件”。此题前者是条件后者NF是结论所以是必要条件在此条件下还可能存在对码的传递依赖不满足NF设U是所有屬性的集合X、Y、Z都是U的子集且Z=U-X-Y。下面关于多值依赖的叙述中不正确的是()  A若X→→Y则X→→Z  B若X→Y则X→→Y  C若X→→Y且Y′∈Y則X→→Y′  D若Z=∮则X→→YAnIntroductiontoDatabaseSystemC设有关系模式R(ABCD)数据依赖集F={A→BB→AAC→DBC→DAD→CBD→CA→→CDB→→CD}。)求R的主码)R是否为第范式?为什么)R是否是BCNF?为什么)R是否是NF?为什么AnIntroductiontoDatabaseSysteml)候选码为ACBC.ADBD、可选其中之一为主码。)不服从NF在多值依赖中决定因素中不包含码。)不服从BCNF在函数依赖Φ决定因素中不包含码。)服从NF该模式中不存在非主属性。第次作业P,,月日晚点前发邮箱AnIntroductiontoDatabaseSyste

}

我要回帖

更多关于 数据库关系模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信