




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理与应用,高等院校计算机教材系列,第7章关系数据库规范化理论,数据库设计是数据库应用领域的主要研究课题。数据库设计的任务是在给定的应用环境下,创建满足用户需求且性能良好的数据库模式,建立数据库及其应用系统,使之能有效地存储和管理数据,满足用户需求。数据库设计需要理论指导,这个理论就是关系数据库规范化理论。关系数据库规范化理论研究:关系模式中各属性的依赖关系以及对关系模式性能的影响。-探讨好的关系模式的标准,第7章关系数据库规范化理论,7.1函数依赖7.2关系规范化7.3关系模式的分解准则,7.1函数依赖,直观的函数依赖定义:如果有一个关系模式R(A1,A2,An),X和Y为A1,A2,
2、An的子集,那么对于关系R中的任意一个X值,都只有一个Y值与之对应,则称X函数决定Y,或Y函数依赖于X。记着:XY例:Student(Sno,SName,Sdept,Sage)SnoSName,SnoSdept,SnoSage(Sno决定Sname,Sname依赖Sno)例:SC(Sno,Cno,Grade)(Sno,Cno)Grade,7.1函数依赖,定义:设有关系模式R(A1,A2,An),X和Y为A1,A2,An的子集,r是R的任一具体关系,t1t2是r中的任意2个元组。如果t1X=t2X可以推导出t1Y=t2Y,则称X函数决定Y,或Y函数依赖于X。记为XY,一些术语和符号,1.如果XY
3、,但Y不包含于X,则称XY是非平凡的函数依赖。如不作特别说明,我们总是讨论非平凡函数依赖。2.如果Y不函数依赖于X,则记作X/Y。3.如果XY,则称X为决定因子。4.如果XY,并且YX,则记作XY。,一些术语和符号,5.如果XY,并且对于X的一个任意真子集X都有X/Y,则称Y完全函数依赖于X,记作:,6.如果XY(非平凡函数依赖,并且Y/X)、YZ,则称Z传递函数依赖于X。,如果XY成立,则称Y部分函数依赖于X,记作:,示例,例1:有关系模式:SC(Sno,Sname,Cno,Grade)主码为(sno,cno)则函数依赖关系有:SnoSname(Sno决定Sname,Sname依赖Sno)(
4、Sno,Cno)Sname姓名部分依赖学号和课程号(Sno,Cno)Grade成绩完全依赖学号和课程好,示例,例2:有关系模式:S(Sno,Sname,Dept,Dept_master)学号、姓名、系、系主任,主码为sno函数依赖关系有:Sno(Sno完全决定Sname,Sname完全依赖Sno),由于:SnoDept,DeptDept_master所以有:SnoDept_master,Sname,7.1.3为什么讨论依赖关系讨论属性依赖关系的意义,先看一个例子:S-L-C(sno,sdept,sloc,cno,grade)学号、系、宿舍楼、课程号、成绩,假设每个系的学生都住一个宿舍楼,主码为
5、(sno,cno),存在问题,从上面的表中可以看出如下问题:数据冗余问题:在这个关系中,有关每个学生的系和其所住的宿舍楼的信息有冗余,因为每个系有多少个学生,这个系所对应的宿舍楼的信息就要重复存储过少遍。数据更新问题:如果有一个学生转系了,那么不但要修改sdept列还要修改sloc列,使修改复杂化,存在问题,从上面的表中可以看出如下问题:数据插入问题:如果某个学生还没有选课,但已经知道sdept,sloc的信息,我们不能将此学生的信息登记。因为cno为空,而cno是主码,不能为空,因此,也就丢掉了该学生的其他信息数据删除问题:如果一个同学只选了一门课,而后来又不选了,则应该删除该同学的选此门课
6、记录。但该同学只选了一门课,那么删掉该同学选课记录的同时也删掉了该1同学的其他信息,存在问题,上面的问题我们统称-操作异常为什么出现这些问题?-这是因为关系模式没有设计好,某些属性之间存在着不良的函数依赖解决这些问题-进行模式分解,即把一个关系模式分解成2个或者多个关系模式,在分解的过程中,消化那些不良的函数依赖,7.2关系规范化,7.2.1关系模式中的码7.2.2范式,7.2.1关系模式中的码,候选码:能够惟一标识关系中的一个元组的一个属性或最小属性组。(能够唯一标示一条记录的字段,或者字段的组合)主码(主键、KEY):指定候选码中的一个作为主码。全码:候选码为整个属性组。,7.2.1关系模
7、式中的码,主属性与非主属性:主属性:在R(U,F)中,包含在任一候选码中的属性称为主属性;非主属性:不包含在任一候选码中的属性称为非主属性;,7.2.1关系模式中的码,1候选码:设K为R(U,F)中的属性或属性组,若KfU,则K为R候选码。(K为决定R全部属性值的最小属性组)。主码:关系R(U,F)中可能有多个候选码,则选其中一个作为主码。全码:候选码为整个属性组。主属性与非主属性:在R(U,F)中,包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性,示例,例:SC(SNO,CNO,Grade)候选码:(SNO,CNO),也为主码主属性:SNO,CNO,非主属性:Gra
8、de例:R(P,W,A),P演奏者,W作品,A听众语义:一个演奏者可演奏多个作品,某一作品可被多个演奏者演奏;听众也可欣赏不同演奏者个不同作品。候选码:(P,W,A)全码(演奏者、作品、听众一场音乐会),7.2.1关系模式中的码(续),外码(外部关键字、外键):如果某个属性不一定是所在关系的码,但是其他关系的码,则称该属性为外码。,7.2.1关系模式中的码(续),外码:用于关系表之间建立关联的属性(组)。定义:若R(U,F)的属性(组)X(X属于U)是另一个关系S的主码,则称X为R的外码。,7.2.2范式,关系数据库中的关系要满足一定的要求,满足不同程度要求的为不不同的范式。满足最低要求的关系
9、属于第一范式,简称1NF(FirstNormalForm)。在第一范式中进一步满足一些要求的关系属于第二范式,简称2NF,依次类推,3NF、BCNF、4NF、5NF所谓第几范式是表示关系模式满足的条件,所以经常称某一关系模式为第几范式的关系模式,R为第二范式的关系模式写为R2NF,7.2.2范式,对关系模式的属性间的函数依赖加以不同的限制就形成了不同的范式。1NF的表比不是1NF的要好2NF的表比1NF的要好范式越高、规范化的程度越高,关系模式就越好。,7.2.2范式,规范化的理论首先由E.F.CODD于1971年提出,其目的是要设计“好的”关系数据库模式。关系规范化实际就是对有问题(操作异常
10、)的关系进行分解,从而消去这些异常。,第一范式,第一范式:不包含重复组的关系(即不包含非原子项的属性)。,将非第一范式的关系转换为第一范式的关系:只需要将所有数据项都分解为不可再分的最小数据项即可。,第二范式,2.第二范式:如果R(U,F)1NF,并且R中的每个非主属性都完全函数依赖于主码,则R(U,F)2NF若某个1NF的关系的主码只由一个列组成,那么这个关系就是2NF关系若某个1NF的关系的主码是由多个属性列构成的复合主码,并且存在非主属性对主属性的部分函数依赖则这个关系就不是2NF例:S-L-C(Sno,Sdept,SLOC,Cno,Grade)不是2NF。因为(SNO,CNO)是主码,
11、而又有SNO决定SDEPT,因此有(Sno,cno)PSdept,非主码属性对主码部分依赖,不是2NF。,分解办法,前面已经介绍S-L-C(Sno,Sdept,SLOC,Cno,Grade)不是2NF,这个关系存在异常操作,而这些异常操作就是因为存在部分函数依赖关系造成的。可以用模式分解的办法将非2NF的关系模式分解为多个2NF的关系模式。,分解办法,分解过程:首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。然后,将依赖于这些主码的属性放置到相应的表中。最后,去掉只由主码的子集构成的表。,分解示例,对于S-L-C表,首先分解为如下形式的三张表:S-L(Sno,)C(Cno,)
12、S-C(Sno,Cno,)然后,将依赖于这些主码的属性放置到相应的表中S-L(Sno,Sdept,Sloc)C(Cno)S-C(Sno,Cno,Grade)最后,去掉只由主码的子集构成的表,最终分解为:S-L(Sno,Sdept,Sloc)S-C(Sno,Cno,Grade)这2个表都是2NF,S-L(Sno,Sdept,Sloc)存在问题,分解之后形成2个2NF的表也存在问题:数据冗余:有多少个学生就有多少个重复的Sdept和SLOC;插入异常:当新建一个系时,若还没有招收学生,则无法插入;因为,2NF的表也可能存在操作异常问题,还需要进一步分解,第三范式,定义:如果R(U,F)2NF,并且
13、所有非主属性都不传递依赖于主码,则R(U,F)3NF。从定义可以看到,如果存在非主属性对主码的传递依赖,则相应的关系模式不是3NF对S-L(Sno,Sdept,SLOC)SNOSDEPT,SDEPTSLOCSno传递SLOC,不是3NF当关系模式中存在传递函数依赖时,这个关系模式仍然有操作异常,需要进一步分解,分解过程,(1)对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性;(去掉SLOC)(2)新建一个表,新表中包含在原表中所有依赖于该决定因子的属性;新建D-L(Sdept,Sloc)(3)将决定因子作为新表的主码。D-L(Sdept,Sloc)S-L分解后的关系模式为:S-D(S
14、no,Sdept)D-L(Sdept,Sloc)这2个表都是3NF,由于3NF关系模式中不存在非主码属性对主码的部分依赖和传递依赖关系,因而在很大程度上消去了数据冗余和更新异常,因此在通常的数据库设计中,一般要求要达到3NF,BCNF,BCNF也叫Boyce-codd范式,它是3NF的进一步规范化,其限制条件更严格。首先分析3NF中存在的问题。在3NF的关系模式中可能存在能够决定其他属性取值的属性组,而该属性组非码。例:关系模式:CSZ(City,Street,Zip)语义:城市和街道可以决定邮政编码,邮政编码可以决定城市。候选码:(City,Street),(Street,Zip)F:(Ci
15、ty,Street)Zip,ZipCity是3NF:此关系模式中没有非主属性,因此为3NF存在的问题:插入异常,删除异常,关系模式:CSZ(City,Street,Zip)存在的问题:插入异常,删除异常假如取(City,Street)为主码,则当插入数据时,如果没有街道信息,则一个邮政编码是哪个城市的信息就无法保存在数据库中,因为STREET不能为空。由此可见3NF的表也有可能操作异常。操作异常的原因是因为存在ZipCity,ZIP是决定因子,但ZIP不是码。,BCNF(续),BCNF定义:R1NF,且能决定其它属性取值的属性(组)必定包含码,则其是BCNF如果一个关系的每个决定因素都是候选码
16、,则其是BCNF如果一个关系的每个函数依赖的左部都是候选码,则其是BCNF如果R3NF,并且不存在主属性对非主属性的函数依赖,则其是BCNF,BCNF和3NF的关系,若RBCNF,则R3NF若R3NF,则R不一定属于BCNF,规范化举例,设有关系模式:Student(学号,姓名,导师号,导师名,课程号,课程说明,成绩)语义:一名学生只有一个导师,学生可选多门课。将其规范化成3NF的。,1此表是1NF,没有可再分的数据项其函数依赖为:学号p姓名(学号决定姓名),学号p导师号,学号p导师名,课程号p课程说明,(学号,课程号)成绩主码为(学号,课程号)因为主码为(学号,课程号),所以姓名部分依赖主码
17、,存在部分函数依赖关系,不是2NF,首先将其分解为2NF。(以关键字去分解:学号一个表,课程号一个表,(学号,课程号)一个表),学生(学号,姓名,导师号,导师名),课程(课程号,课程说明),成绩(学号,课程号,成绩)均为2NF,2判是否为3NF“学生”表不是3NF,其函数依赖为:学号姓名,学号导师号,导师号p导师名,学号传递导师名消除依赖于决定者的属性(导师名),把它们放在一个单独的表中,得到2个表:学生(学号,姓名,导师号),导师(导师号,导师名),7.3关系模式的分解准则,关系模式的分解准则:为了提高规范化程度,通常将范式程度低的关系模式分解为若干个范式程度高的关系模式。每个规范化的关系应
18、该只对应一个主题,如果某个关系描述了2个或多个主题,就应该把它分解为多个关系,使每个关系只对应一个主题例如:Student(学号,姓名,导师号,导师名,课程号,课程说明,成绩)说明了3件事情,学生、老师、选课这样3个主题,7.3关系模式的分解准则,关系模式的分解准则:例如:S-L-C(Sno,Sdept,SLOC,Cno,Grade)也是说了3件事,学生(Sno,Sdept)、宿舍(Sdept,SLOC)、选课(Sno,Cno,Grade)当我们发现一个关系存在操作异常时,就应该把关系分解成2个或多个关系,使每个关系只描述一个主题,从而消去异常操作,7.3关系模式的分解准则,关系模式的分解准则
19、:分解前后的模式要等价模式分解要满足:模式分解具有无损连接性;模式分解能够保持函数依赖。无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。保持函数依赖分解是指在模式的分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。,关系模式的分解准则(续),例:S-D-L(Sno,Dept,Loc)有函数依赖:SnoDept,DeptLocsno传递决定LOC,所以不是第三范式的。一个关系里说明了2个主题学生(Sno,Dept),宿舍(Dept,Loc)(一个系的学生都住同个宿舍楼),关系模式的分解准则(续),例:
20、S-D-L(Sno,Dept,Loc)至少可以有三种分解方案,分别为:方案1:S-L(Sno,Loc),D-L(Dept,Loc)方案2:S-D(Sno,Dept),S-L(Sno,Loc)方案3:S-D(Sno,Dept),D-L(Dept,Loc)这三种分解方案得到的关系模式都是第三范式的,那么如何比较这三种方案的好坏呢?由此在将一个关系模式分解为多个关系模式时除了提高规范化程度之外,还需要考虑其他的一些因素。,关系模式的分解准则(续),将一个关系模式R分解为若干个关系模式R1,R2,Rn,意味着将存储在一张二维表r中的数据分散到了若干个二维表r1,r2,rn中。这样的分解应该不丢失信息,
21、即能通过对关系r1,r2,rn的自然连接运算重新得到关系r中的所有信息。事实上,将关系r投影为r1,r2,rn时不会丢失信息,关键是对r1,r2,rn做自然连接时可能产生一些r中原来没有的元组(也就是记录增加了),从而无法区别哪些元组是r中原来有的,即数据库中应该存在的数据,哪些是不应该有的。在这个意义上就丢失了信息。,关系模式的分解准则(续),这三种分解方案是否都满足分解要求呢?假设此关系模式的数据如表所示,此关系用r表示。4个学生,来自3个系,住在2个宿舍楼里,关系模式的分解准则(续),若按方案1将S-D-L投影到S-L和D-L的属性上,得到如左边两个表所示的关系。做自然连接得到结果如右表
22、所示(自然连接用的LOC字段,因2个表的关连是LOC,表1.LOC=表2.LOC),以前表里只有4条记录,现在连接之后有6条记录,多出2条,(S01D3L1),(S04D1L1)不是原来R中的记录,因此我们这种分解破坏了-模式分解具有无损连接性,关系模式的分解准则(续),无损连接性将关系模式R分解为个关系模式R1,R2,Rn,若对于R中的任何一个可能的r,都有rr1*r2*rn,即r在R1,R2,Rn上的投影的自然连接等于r,则称关系模式R的这个分解具有无损连接性。,关系模式的分解准则(续),再分析方案2。将S-D-L投影到S-D,S-L的属性上,得到的关系如左边两个表所示。做自然连接得到的关系右表所示。(自然连接用的SON字段,因2个表的关连是SON,表1.SON=表2.SON),关系模式的分解准则(续),方案2自然连接后恢复成了原来的关系,因此,分解方案2具有无损连接性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论