资源简介 (共21张PPT)关系数据库规范化理论第4章目录01关系规范化的引入02函数依赖03函数依赖的公理系统04关系模式的规范化05多值依赖与4NF06关系模式分解及规范化步骤本章主要内容通过第2、3章的学习,学生可以完成数据库关系模型的设计及实现。每种关系模型对应一种关系模式,关系模式的好坏直接决定数据的完整性、准确性、一致性和操作性。然而,是不是所有满足关系模型的关系模式设计都是“最好”的设计?不同的关系模式设计会出现什么样的问题?有没有什么理论标准来评价或者优化该关系模式,使其成为“更好”的关系模式设计?本章重点内容是学习如何针对具体的应用项目,从概念模型设计出发,通过不断优化,实现一个“较好”的数据库关系模式设计。其内容包括关系模式设计存在的常见问题,关系模式中属性间依赖关系及函数依赖的公理系统理论,最小函数依赖集及其求解算法,范式及其转换步骤和多属性之间的依赖关系。关系模式的规范化第4章044.4.1 第一范式由于关系模式中各属性间存在多种依赖关系,导致关系模式存在多种问题,如数据冗余、数据插入、数据删除、数据修改异常等问题。关系模式规范化的根本目的是消除关系模式中的数据冗余,消除不合适的数据依赖部分,解决数据更新异常现象。在关系数据库中,关系模式规范化对不同程度的规范化要求设立不同的标准,称为范式。4.4.1 第一范式范式是满足某一种规范化程度的关系模式的集合。1971—1972年,其概念最早是由科德在提出,之后他又先后提出了第一范式(First Normal Form,1NF)、第二范式(Second Normal Form,2NF)、第三范式(Third Normal Form,3NF)的概念。1974年,科德和博伊斯又共同提出了Boyce-Codd范式,简称BC范式(Boyce-Codd Normal Form,BCNF)。1976年,罗纳德·费金(Ronald Fagin)提出了第四范式(Fourth Normal Form,4NF)的概念。随后又有人给出第五范式(Fifth Normal Form,5NF)的概念。4.4.1 第一范式根据规范化程度,各个范式之间的关系如图4.1所示:5NF4NFBCNF3NF2NF1NF4.4.1 第一范式由于关系模式中各属性间存在多种依赖关系,导致关系模式存在多种问题,如数据冗余、数据插入、数据删除、数据修改异常等问题。关系模式规范化的根本目的是消除关系模式中的数据冗余,消除不合适的数据依赖部分,解决数据更新异常现象。在关系数据库中,关系模式规范化对不同程度的规范化要求设立不同的标准,称为范式。4.4.1 第一范式定义4.11 若关系模式R中每个属性值都是一个原子属性,不可再分,则称该关系模式为第一范式,记为R1NF。满足第一范式的关系模式中的属性值都是原子属性,排除了属性值为元组、数组或某种复合数据的可能,这是对每个规范化关系的基本要求。例如:教学关系模式TC中的属性集为{SNo,SN,Sex,DNo,DN,CScore};组合属性不属于1NF4.4.1 第一范式消除组合属性属于1NF存在大量的数据冗余根据语义,表4.7函数依赖集F有{SNo→SN,SNo→Sex,SNo→DNo,DNo→DN,(SNo,CN)→Score},根据码的定义可知,该关系模式中的码为{SNo,CN},是主属性。根据函数依赖的分类,用函数依赖图表示函数依赖关系,如图4.2所示。4.4.1 第一范式由图4.2可知,表4.7的教学管理关系模式中,既存在完全函数依赖,又存在部分函数依赖和传递函数依赖,这种情况在数据库中一般是要避免的,也正是因为这种复杂关系的存在,导致关系数据中出现各类问题。要解决问题,可以通过关系模式分解的方式,去掉不合理的函数依赖关系,向更高一级范式转化。4.4.2 第二范式定义4.12 如若关系模式R1NF,且它任意一个非主属性都完全函数依赖于R的任一候选码,则称该关系模式为第二范式,记为R2NF。例如:在教学管理关系模式TC中,主属性为(SNo,CN),非主属性为(SN,Sex,DNo,DN,Score);由图4.2可知,关系模式TC中存在非主属性对主属性的部分函数依赖,因此TC2NF,且这样会使关系模式存在大量的数据冗余,引起更新异常。4.4.2 第二范式非主属性对主码完全函数依赖。因此,SD∈2NF,SC∈2NF。为解决数据冗余的问题,采用投影分解,将TC分解为学生实体SD和学生选课实体SC.学生SD(SNo,SN,Sex,DNo,DN)学生选课实体SC(SNo,CN,Score)TC4.4.2 第二范式第二范式的特点:从1NF关系中消除非主属性对主码的部分函数依赖,则可得到2NF关系如果R的主码为单属性,或R的全体属性均为主属性,则R∈2NF4.4.2 第二范式从表4.8、表4.9和图4.3中又可以看出,2NF虽然解决了1NF存在的部分问题,但是仍然存在一些问题,例如关系SD中,仍然存在以下问题。其主要原因是关系SD中存在非主属性对主属性的传递函数依赖关系。在关系SD中,函数依赖有:SNo→SN,SNo→Sex,SNo→DNo,DNo→DN。其中,SNoDN,非主属性DNSNo。因此,为了消除以上问题,关系模式SD还需进一步向高一级范式转化,消除传递函数依赖。4.4.3 第三范式定义:如若关系模式R2NF,且任意一个非主属性都不传递函数依赖于R的主属性,则称该关系模式为第三范式,记为R3NF。例如:SC(SNo,CN,Score)函数依赖为(SNo,CN)→Score,非主属性Score 不 传 递 函 依 赖 于 数主 码 ( SNo ,CN),因此,SC∈3NF。例如:SD(SNo,SN,Sex,DNo,DN)SNo→DNo和DNo→DNSNo非主属性DN与主属性SNO之间存在传递函数依赖关系,因此,SD3NF4.4.3 第三范式学生关系S(SNo,SN,Sex,DNo)院系关系D(DNo,DN)SD消除传递函数依赖,将SD实体分解为学生实体和院系实体,即为学生关系S(SNo,SN,Sex,DNo)和院系关系D(DNo,DN),其表结构分别如表4.10和表4.11所示。对于关系S,其主属性为SNo,非主属性为SN、Sex、DNo,不存在非主属性对主属性的传递函数依赖,因此,S3NF。同理,关系D中也不存在非主属性对主属性的传递函数依赖,因此,D3NF。4.4.4 BC范式定义: 如若关系模式R1NF,对R的任何函数依赖X→Y(YX),都有属性组X是超码,则称该关系模式为BC范式,记为RBCNF。由BCNF的定义可知,BCNF的关系模式具有以下3个性质。4.4.4 BC范式【例4.11】关系模式R(U,F),U={A,B,C},F={AC→B,AB→C,B→C},判断该关系模式是否属于BCNF。4.4.4 BC范式【例4.12】假设存在关系模式SC(SNo,SN,CN,Score),其中,SNo为学号,SN为学生姓名,且明确规定不能重名,CN为课程名称,Score为课程成绩,函数依赖集F为{(SNo,CN)→Score,(SN,CN)→Score,SNo→SN}。判断SC是否为BCNF。4.4.4 BC范式将SC转化为BCNF,通过投影分解;将SC分为关系S(SNo,SN)和C(SNo,CN,Score)。在关系S中,SNo、SN都为超码,不存在非主属性,因此SBCNF;在关系C中,SNo和CN是超码,Score为非主属性,不存在任何属性(主属性和非主属性)对主属性的部分函数依赖和传递函数依赖,因此CBCNF。关系SC、S和C的函数依赖关系如图4.4所示。关系S(SNo,SN)关系C(SNo,CN,Score)SC 展开更多...... 收起↑ 资源预览