《数据库原理与系统开发教程第04章-关系数据库设计规范化理论》由会员分享,可在线阅读,更多相关《数据库原理与系统开发教程第04章-关系数据库设计规范化理论(29页珍藏版)》请在金锄头文库上搜索。
1、数据库系统概论数据库系统概论An Introduction to Database System第四章第四章 关系数据库设计关系数据库设计规范化理论规范化理论“数据库原理及安全数据库原理及安全”课程课程第四章第四章 关系数据库设计规范化理论关系数据库设计规范化理论4.1 规范化问题的提出规范化问题的提出4.2 函数依赖函数依赖4.3 码(键)的概念码(键)的概念4.4 关系模式的范式关系模式的范式 4.5 小结小结2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.1 规范化问题的提出规范化问题的提出银行存款借贷系统中有一张表如下。Lend(Branch_na
2、meBranch_name,Branch_city,Assets,Customer_no,Customer_name,Loan_no, Amount)贷款表(银行机构名称银行机构名称,机构所在城市,资产, 用户代码,用户名字,贷款号码,贷款金额)2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君稍加分析,就会稍加分析,就会发现这个关系模式存在个关系模式存在问题。4.1 规范化问题的提出规范化问题的提出v(1)数据冗余由于要在一个支行的每一笔贷款信息中重复存储该支行的资产值和所在城市名称等信息,所以造成了大量的数据冗余。v(2)插入异常如果新成立了一个支行,由于该
3、支行还没有客户和贷款,这时就无法把该支行的基本信息(branch_name, branch_ city, assets)加入Lend表中。v(3)删除异常当某一支行所有的贷款都偿还后,在删除贷款信息的同时也删除了该支行的基本信息。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.1 规范化问题的提出规范化问题的提出v(4)更新异常因为可能有很多人向该支行贷款,所以表中会有很多条Assets记录。如果某支行的资产发生变化,Lend表中所有有关该支行的元组都要修改。这就有可能出现一部分数据被修改,而另一部分没有被修改的情况,从而出现一致性问题。以上的这些问题统称
4、为存储异常,在数据库模式的设计中应该尽量避免。之所以会出现上面的种种问题,是因为这个关系模式没有设计好,在它的一些属性之间存在不良函数依赖关系。规范化理论就是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决上面出现的数据冗余、插入异常、删除异常、更新异常等问题。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君第四章第四章 关系数据库设计规范化理论关系数据库设计规范化理论4.1 规范化问题的提出规范化问题的提出4.2 函数依赖函数依赖4.3 码(键)的概念码(键)的概念4.4 关系模式的范式关系模式的范式 4.5 小结小结2024年8月18日
5、北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2 函数依赖函数依赖4.2.1 函数依赖的定义函数依赖的定义 4.2.2 平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖4.2.3 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖4.2.4 传递函数依赖传递函数依赖2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2.1 函数依赖的定义函数依赖的定义v函数依赖通俗地说就是:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。举个简单例子,知道了一个人的学号,就能知道他的姓名,这就是学号属性决定姓名属性。下面给出函数依赖的定
6、义。v若对于R(U),U是R的属性集合,X、Y是U中的子集,则对于R(U)任意一个可能的关系r,不可能存在两个元组在X上的属性值相等,而在Y上的属性值不同,则称X决定Y或者Y依赖于X,记作XY。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2.1 函数依赖的定义函数依赖的定义v(1)函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。v(2)函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。例如,“姓名年龄”这个函数依赖只有在不允许有同名人的条件下成立。2024年8月18日北京电子科技学院计算机
7、系北京电子科技学院计算机系 张克君张克君4.2 函数依赖函数依赖4.2.1 函数依赖的定义函数依赖的定义 4.2.2 平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖4.2.3 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖4.2.4 传递函数依赖传递函数依赖2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2.2 平方函数依赖与非平凡函数依赖平方函数依赖与非平凡函数依赖v当关系中的属性集合Y是属性集合X的子集(YX)时,存在函数依赖XY,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。v当关系中的属性集合Y不是属性集合X的子集时
8、,存在函数依赖XY,则称这种函数依赖为非平凡函数依赖。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2 函数依赖函数依赖4.2.1 函数依赖的定义函数依赖的定义 4.2.2 平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖4.2.3 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖4.2.4 传递函数依赖传递函数依赖2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2.3 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖v设X、Y是关系R的两个属性集合,X是X的真子集,存在XY,但对于每一个X都有X!Y
9、,则称Y完全函数依赖于X。即只要X这个属性集合少一个属性,Y就不依赖于X。v设X、Y是关系R的两个属性集合,存在XY,若X是X的真子集,存在XY,则称Y部分函数依赖于X。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2 函数依赖函数依赖4.2.1 函数依赖的定义函数依赖的定义 4.2.2 平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖4.2.3 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖4.2.4 传递函数依赖传递函数依赖2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.2.4 完全函数依赖与部分函
10、数依赖完全函数依赖与部分函数依赖v设X,Y,Z是关系R中互不相同的属性集合,存在XY(Y !X),YZ,有XZ,则称Z传递函数依赖于X。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君第四章第四章 关系数据库设计规范化理论关系数据库设计规范化理论4.1 规范化问题的提出规范化问题的提出4.2 函数依赖函数依赖4.3 码(键)的概念码(键)的概念4.4 关系模式的范式关系模式的范式 4.5 小结小结2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.3 码(键)的概念码(键)的概念v码通俗地说就是能够唯一标识关系中每个元组的属性
11、或属性集合。候选码是码的集合。下面给出码的定义。v在关系模式R(U,F)中,K是U中的属性或属性集合,若K完全决定U,则称K为R的一个候选码(Candidate Key)。若关系模式R有多个候选码,则选定其中的一个作为主码(Primary Key)。v主属性是指在任一候选键中出现的属性。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君第四章第四章 关系数据库设计规范化理论关系数据库设计规范化理论4.1 规范化问题的提出规范化问题的提出4.2 函数依赖函数依赖4.3 码(键)的概念码(键)的概念4.4 关系模式的范式关系模式的范式 4.5 小结小结2024年8月
12、18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.4 关系模式的范式关系模式的范式2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君图4.1 范式关系范式关系图4.4 关系模式的范式关系模式的范式v关系模式:2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君SLC(Sno,Sdepartment,Slocation,Cno,Result)学生学生-宿舍宿舍-课程(学号,院系,宿舍,课程编号,成绩)课程(学号,院系,宿舍,课程编号,成绩)v主码为:Sno、Cnov其中的函数依赖如下。v(1)Sno、Cno完全决
13、定Result,部分决定Sdepartment,部分决定Slocation。v(2)Sno决定Sdepartment。v(3)Sno决定Slocation。v(4)Sdepartment决定Slocation(同一个系的学生住在一起)。有没有有没有问题问题?4.4 关系模式的范式关系模式的范式v1插入异常(1)假如新生刚刚入学,没有选课,没有课程编号,又因为码不能为空,所以新生信息不能插入。(2)假如一个学院刚刚成立没有学生,这么院系的信息也无法插入。v2删除异常(1)假如选修同一门课程的学生全部毕业,删除所有毕业学生信息的同时,也把选课信息一并删除了,导致删除异常。(2)同样地,所有的学生都
14、毕业后,院系的信息也被删除了。v3数据冗余大v4修改复杂2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.4 关系模式的范式关系模式的范式2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君图4.2 范式解决范式解决问题图4.4.1 第一范式(第一范式(1NF)v如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF。即1NF 规范化的就是消除关系模式中的非原子属性。v在任何一个关系数据库系统中,1NF是最起码的要求,不满足1NF的数据库就不能称作关系数据库。2024年8月18日北京电子科技学院计算机系北京电子科技学院计
15、算机系 张克君张克君4.4.2 第二范式(第二范式(2NF)虽然关系模式示例SLC满足1NF能称其为关系数据库了,但是会存在上述的种种问题。将SLC分解成如下几个关系模式。(1)SC(Sno,Cno,Result)主码为Sno、Cno。函数依赖关系为:Sno、Cno决定Result。(2)SL(Sno,Sdepartment,Slocation)主码为Sno。函数依赖关系为:Sno决定Sdepartment,Slocation;Sdepartment决定Slocation。上述(1)的问题有所解决,是因为取消了关系模式中的部分函数依赖关系。2NF的定义如下。若关系模式R1NF,并且每一个非主属
16、性都完全依赖于R的码,则R2NF。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.4.3 第三范式(第三范式(3NF)关系模式示例SLC经过分解成SL和SC解决了(1)的问题,但是依旧存在(2)的问题。进一步将SL分解成:(1)SD(Sno,Sdepartment)主码为Sno函数依赖关系为:Sno决定Sdepartment。(2)DL(Sdepartment,Slocation)主码为Sdepartment。函数依赖关系为:Sdepartment决定Slocation。上述(2)的问题有所解决,是因为消除了SLocation依赖于Sdepartment依
17、赖于Sno的这种传递依赖关系。3NF3NF的定义如下。的定义如下。如果关系模式如果关系模式R R(U U,F F)中,不存在候选码)中,不存在候选码X X,属性组,属性组Y Y以及非主属性组以及非主属性组Z Z(Z Z不属于不属于Y Y),使得),使得X X决定决定Y Y,Y Y决定决定Z Z和和Y Y不决定不决定X X成立,则成立,则R R3NF3NF。简单来说就是在。简单来说就是在R R2NF2NF的基础上,非主属性都不的基础上,非主属性都不传递依赖于任何候选码。传递依赖于任何候选码。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.4.4 BC范式(范
18、式(BCNF)v设关系模式R(U,F)属于1NF,对于R的每个函数依赖XY,若Y不属于X,则X中必含有候选码,那么R属于BCNF。简单来说,就是比3NF更进一步,所有的属性包括主属性和非主属性都不能传递依赖于候选码。v如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴中,这个关系数据库已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常的问题。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君第四章第四章 关系数据库设计规范化理论关系数据库设计规范化理论4.1 规范化问题的提出规范化问题的提出4.2 函数依赖函数依赖4.3
19、码(键)的概念码(键)的概念4.4 关系模式的范式关系模式的范式 4.5 小结小结2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.5 小结小结v(1)第一范式(1NF)如果一个关系模式R的所有属性的域都是原子的,则称R是属于1NF的关系模式。v(2)第二范式(2NF)因为我们没有理由设计一个属于2NF但不属于3NF或更高范式的数据库模式,所以这里就不再讨论它了。v(3)第三范式(3NF)如果关系模式R(U, F)中的所有非主属性都不传递依赖于R的任何候选码,则称R是属于3NF的关系模式。v(4)Boyce-Codd范式(BCNF)如果关系模式R(U, F)
20、的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选键,则称R是属于BCNF的关系模式。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君4.5 小结小结v规范化的优点是明显的,它避免了大量的数据冗余,节省了空间,保持了数据的一致性,在进行插、删、改时减少了I/O次数,加快了插、删、改的速度。如果一个数据库的记录经常改变,这个优点就更加明显了。它最大的缺点是,由于关系模式分解很细,在实际应用中很多经常一起使用的信息放在数据库的不同表中,在进行查询操作时,要把多个表连接在一起才能获得所需的信息,而表和表的连接花费是非常大的。在当今信息爆炸增长的时代,在多个表连接查询效率上出现了很大的问题,因此现在常常采取用空间换时间的方法,允许数据有大量的冗余,以加快查询的效率。这时数据库满足第一范式即可。2024年8月18日北京电子科技学院计算机系北京电子科技学院计算机系 张克君张克君