第2章关系数据库PPT讲稿.ppt
第第2章关系数据库章关系数据库第1页,共90页,编辑于2022年,星期一2.1 关系模型关系模型2.2 关系模式关系模式 2.3 关系代数关系代数 2.4 关系数据库规范化理论关系数据库规范化理论小结小结 内内 容容第2页,共90页,编辑于2022年,星期一2.1 关系模型关系模型2.1.1 关系数据结构关系数据结构 2.1.2 关系操作关系操作2.1.3 完整性约束完整性约束 第3页,共90页,编辑于2022年,星期一2.1.1 关系数据结构关系数据结构 一个关系模型的逻辑结构是一张二维表,它由行和列组成。一个关系模型的逻辑结构是一张二维表,它由行和列组成。关系:关系:对应通常所说的二维表;元组:元组:表中的一行即为一个元组;属性:属性:表中的一列即为一个属性;主关键字:主关键字:表中的某个属性组,它可唯一确定一个元组;域:域:属性的取值范围;分量:分量:元组中的一个属性值;关系模式:关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,属性n)第4页,共90页,编辑于2022年,星期一学生登记表学生登记表 在关系模型中,实体以及实体间的联系都是用关系来表示的。在关系模型中,实体以及实体间的联系都是用关系来表示的。例如:学生、课程、考试关系的关系模型表示如下:学生(学好,姓名,性别,年龄,班级号)课程(课程号,课程名,周学时,学分)考试(学好,课程号,成绩)关系模型中要求关系必须是规范化的,也就是说关系模式必须满足一定的规范条件关系模型中要求关系必须是规范化的,也就是说关系模式必须满足一定的规范条件,其,其中最重要的一条就是分量必须是一个最小的数据项。中最重要的一条就是分量必须是一个最小的数据项。第5页,共90页,编辑于2022年,星期一2.1.2 关系操作关系操作关系操作采用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一个集合的方式。非关系数据模型的数据操作则为一次一个记录的方式。常用的关系操作包括:常用的关系操作包括:查询操作(选择、投影、连接、除、并、交、差等)和更新操作(增、删、改等)两部分操作。第6页,共90页,编辑于2022年,星期一关系模型中关系操纵早期是用代数方法或逻辑方法来表示,称为:关系代数:用对关系的运算来表达查询要求的方式。关系演算:用谓词来表达查询要求的方式。关系演算又分为:元组关系演算、域关系演算 第7页,共90页,编辑于2022年,星期一关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价。关系语言是一种高度非过程化的语言,用户不必请求数据管理员为他建立特殊的存取路径,存取路径的选择由DBMS的优化机制来完成。介于关系代数和关系演算之间的语言称为:结构化查询语言SQL。SQL不仅具有丰富的查询功能,而且还具有数据定义和数据控制功能,是集查询、DDL和数据控制语言集成于一体的关系数据语言。SQL充分体现了关系数据语言的特点和优点,是RDB的标准语言。第8页,共90页,编辑于2022年,星期一 第9页,共90页,编辑于2022年,星期一2.1.3 完整性约束完整性约束关系模式关系模式设有一个名字为R的关系,它有属性A1,A2,An,其对应的域分别为D1,D2,Dn,则关系模式可表示为:R=(A1,A2,An)上式是对关系R的型的描述,称关系R的模式。其中:其中:n是R的属性的个数称为关系的目;Ai(1in)是属性名,在同一关系中不能同名。例如:学生学生(学号,姓名,性别,年龄,班级号学号,姓名,性别,年龄,班级号)为学生关系模式为学生关系模式 第10页,共90页,编辑于2022年,星期一 完整性约束:完整性约束:在RDB中,完整性约束用于确保数据的准确性和一致性。1.域完整性约束 2.实体完整性约束(必须满足)3.参照完整性约束(必须满足)4.4.用户定义完整性约束用户定义完整性约束 第11页,共90页,编辑于2022年,星期一1.1.域完整性约束域完整性约束限定属性的取值范围,并由语义决定一个属性值是否允许为空值“NULL”。空值“NULL”用来说明在数据库中某些属性值可能是未知的,即“不知道”或在某些场合下是不适应即“无意义”的一种标记。空值不是空格值,它是跳过或暂不输入的属性值。例:例:教师(教师号,教师名,年龄,职称,系部号)关系中,对一个新调入的教师在未分配具体单位之前,属性系部号一列可取空值(NULL)。域完整性约束是最简单、最基本的约束。在当今的RDBMS中,一般都有域完整性约束检查功能。第12页,共90页,编辑于2022年,星期一2.2.实体完整性约束实体完整性约束实体完整性约束:实体完整性约束:指任一关系中主关键字的值不能为空值指任一关系中主关键字的值不能为空值“NULL”NULL”并且取并且取值惟一。值惟一。实体完整性约束能保证实体的唯一性。实体完整性约束能保证实体的可区分性。大部分DBMS支持实体完整性约束检查。如果用户的数据模式中说明了主关键字,则DBMS可以进行这项检查。第13页,共90页,编辑于2022年,星期一3.3.参照完整性约束参照完整性约束现实世界中的实体之间存在着某种关系,在关系模型中实体及实体间的联系都是用关系来描述的,因此就自然存在着关系与关系间的引用。参照完整性约束定义外部关键字与主关键字之间的引用规则。当两个关系存在关系间的引用时,要求不能引用不存在的元组。第14页,共90页,编辑于2022年,星期一例例1 1:学生管理数据库中有关系:学生学生(学号学号,姓名,性别,年龄,姓名,性别,年龄,班级号班级号):参照关系参照关系 班级班级(班级号班级号,班级名,人数,专业号,班级名,人数,专业号):被参照关系被参照关系学生关系与班级关系之间存在属性引用,学生关系中的某个属性的取值需要参照班级关系的属性取值。“班级号班级号”属性只能取:空值“NULL”或非空值。“班级号班级号”属性是学生关系的外部关键字。第15页,共90页,编辑于2022年,星期一例例2 2:学生管理数据库中有关系:学生学生(学号学号,姓名,性别,年龄,班级号,姓名,性别,年龄,班级号):被参照关系被参照关系 课程课程(课程号课程号,课程名,学分,周学时,课程名,学分,周学时):被参照关系被参照关系 考试考试(学号学号,课程号课程号,成绩,成绩):参照关系参照关系学生、课程与考试三个关系之间存在属性的引用。“学号”和“课程号”属性是考试关系的外部关键字。第16页,共90页,编辑于2022年,星期一4.4.用户定义完整性约束用户定义完整性约束用户定义的完整性约束是针对某一具体RDB的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。例:例:学生考试成绩必须大于或等于零,职工的工龄应小于年龄,人的身高不能超过3米等,都是针对具体关系而提出的完整性约束条件。RDBMS应提供定义和检验这类完整性的机制,以便能用统一的方法处理他们,而不是由应用程序承担这一功能。在有些DBMS中,允许用户对个别数据说明一些约束及违反约束时的处理过程,但迄今还没有一个RDBMS产品,全面实现用户定义完整性约束检查。第17页,共90页,编辑于2022年,星期一2.2 关系模式关系模式2.2.1 关系概念模式关系概念模式 2.2.2 关系内模式关系内模式 2.2.3 关系外模式关系外模式 第18页,共90页,编辑于2022年,星期一关系模式是对关系的描述。关系是关系模式在某一时刻的状态或内容。关系模式是型型,关系是它的值值。关系模式是静态的、稳定的,关系是动态的、随时间不断变化的,因为关系操作在不断地更新着DB中的数据。RDBRDB具有三级模式:具有三级模式:概念模式概念模式、内模式内模式、外模式外模式。第19页,共90页,编辑于2022年,星期一2.2.1 关系概念模式关系概念模式 关系概念模式主要包括出现在DB中的每个关系的说明,它包括对关系名、属性名和属性取值范围(类型)的说明。在关系数据模型中,关系与关系间的联系是通过连接属性实现的。例:例:有如下两个关系:班级班级(班级号班级号,班级名,人数,班级名,人数)学生学生(学号学号,姓名,性别,年龄,姓名,性别,年龄,班级号班级号)相应属性取值类型和宽度如下表所示。第20页,共90页,编辑于2022年,星期一班级与学生关系说明班级与学生关系说明分级图分级图第21页,共90页,编辑于2022年,星期一2.2.2 关系内模式关系内模式从原理上讲,关系内模式与其他类型DBS的内模式没有什么不同,RDB中的每个基本表都应对应一个存储文件。基于主关键字进行直接存取,一般可根据主关键字建立相应索引。在关系内模式中不用说明存储文件,存储文件的说明由RDBMS根据基本表的定义自动映射产生。在关系内模式主要内容中要说明的是索引。分级图分级图第22页,共90页,编辑于2022年,星期一2.2.3 关系外模式关系外模式外模式是概念模式的逻辑子集,是用户与DBS的接口,是对用户所用到的那部分数据的描述。在RDB中,外模式被称作视图(VIEW)。分级图分级图第23页,共90页,编辑于2022年,星期一DBDB分级结构图分级结构图 应用程序应用程序A应用程序应用程序B应用程序应用程序C外模式外模式外模式外模式内模式内模式模式模式外模式外模式/模式模式映射映射模式模式/内模式内模式映射映射外模式外模式/模式模式映射映射DBMS用户用户用户用户用户用户2.2.1 2.2.2 2.2.3第24页,共90页,编辑于2022年,星期一2.3 关系代数关系代数 2.3.1 传统的集合运算传统的集合运算2.3.2 特殊的关系运算特殊的关系运算 第25页,共90页,编辑于2022年,星期一关系代数是一种抽象的查询语言,通过对关系的运算来表达查询,关系代数的运算对象和运算结果是关系。关系代数的运算按运算符不同分为传统集合运算和特殊关系运算两类。关系代数的作用如下:关系代数的作用如下:模型化查询客观现实关系型数据库模型关系代数请按键请按键第26页,共90页,编辑于2022年,星期一2.3.1 传统的集合运算传统的集合运算1.并运算并运算2.交运算交运算 3.差运算差运算 4.笛卡尔积运算笛卡尔积运算 第27页,共90页,编辑于2022年,星期一传统的集合运算是二元运算,它将关系看作是元组的集合,参与运算的关系具有相同的目(度),相应的属性取自同一个域,且两个关系具有相同的结构。设关系R和S均是n元关系,且相应的属性值取自同一个值域,则可则可以定义:以定义:并运算、交运算、并运算、交运算、差运算差运算、笛卡尔积运算、笛卡尔积运算第28页,共90页,编辑于2022年,星期一关系关系R与与关系关系S第29页,共90页,编辑于2022年,星期一1.并运算并运算是指将一个关系的元组加到另一个关系中,生成新的关系。是指将一个关系的元组加到另一个关系中,生成新的关系。元组在新的关系中出现的顺序是无关紧要的,但必须消除重复元组。关系R和S的并运算记为RS。为使操作有意义,关系在并运算上必须是兼容的,即关系R和关系S必须要有相同的属性,且在对应列中的属性必须是相同的域;例:例:若一个关系中的第四个属性取自年龄域,则第二个关系的第四个属性也必须取自年龄域。第30页,共90页,编辑于2022年,星期一R R与与S S的并集及的并集及结果结果 第31页,共90页,编辑于2022年,星期一2.交运算交运算 是包含同时出现在第一和第二个关系中的元组的新关系。是包含同时出现在第一和第二个关系中的元组的新关系。这些关系也必须是在并运算上兼容的。关系R和S的交运算记为RS。R R与与S S的交集及结果的交集及结果第32页,共90页,编辑于2022年,星期一3.差运算差运算指包括在第一个关系中出现而在第二个关系中不出现的元组的新关系。指包括在第一个关系中出现而在第二个关系中不出现的元组的新关系。差运算使用的关系也必须是在并运算上兼容的。如在算术运算中那样,减法是有顺序的,R-S和S-R是不同的。R R与与S S的差及结果的差及结果第33页,共90页,编辑于2022年,星期一4.笛卡尔积运算笛卡尔积运算一个关系中的每个元组和第二个关系的每个元组的连接。一个关系中的每个元组和第二个关系的每个元组的连接。关系R(含m个元组)和关系S(含n个元组)的积有mn个元组。记为:记为:RXS=(al,a2,am,b1,b2,bn)|(al,a2,am)R(b1,b2,bn)SRXS=(al,a2,am,b1,b2,bn)|(al,a2,am)R(b1,b2,bn)S 第34页,共90页,编辑于2022年,星期一关系关系R R与与S S笛卡尔笛卡尔积积的结果的结果第35页,共90页,编辑于2022年,星期一2.3.2 特殊的关系运算特殊的关系运算 1.选择运算选择运算 2.投影运算投影运算 3.连接运算连接运算第36页,共90页,编辑于2022年,星期一1.选择运算选择运算一元关系操作,按给定的选择条件选出符合条件的元组。可表示为:可表示为:其中:其中:选择条件是逻辑表达式,取值为“真”或假”。()第37页,共90页,编辑于2022年,星期一 例例3 3:在学生关系中选择年龄为19岁的男生。选择操作的结果:性别=男AND年龄=19(学生)学号学号姓名姓名性性别别年年龄龄班班级级号号010125曲波男1901001010126高天男2001002010138张新女2101001000234关笑男2200011020308王乐女1802010001025李明男1800005020016张铁男1902001001004刘芳女2000011第38页,共90页,编辑于2022年,星期一2.投影运算投影运算一元关系操作。选取关系的某些属性。是对一个关系进行垂直分割,消去某些属性,并重新安排属性的顺序,再删去重复的元组,生成一个新关系。投影运算表示为:投影运算表示为:其中,其中,属性表是要选择的属性,各属性间用逗号间隔。(属性表)()第39页,共90页,编辑于2022年,星期一例例4 4:查询学生关系在学号、姓名、年龄三个属性上的投影,可表示为:投影运算的结果:投影运算的结果:(学号,姓名,年龄)(学生)第40页,共90页,编辑于2022年,星期一3.连接运算连接运算二元关系操作,以 符号表示。定义为:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。连接条件为两个关系中对应属性的比较,不一定同名,但域相同。常用的连接运算:常用的连接运算:等值连接:等值连接:从两个关系(R、S)的笛卡尔积中选取属性(A、B)值相等的元组;自然连接:自然连接:特殊的等值连接,在等值连接中取消重复属性。(连接条件)(RS)S=(连接条件)R 第41页,共90页,编辑于2022年,星期一例例5 5:对学生与考试关系进行等值连接、自然连接和迪卡尔积运算,结果为:第42页,共90页,编辑于2022年,星期一 连接与笛卡尔积的区别:连接与笛卡尔积的区别:笛卡尔乘积包含两关系的所有元组的组合,连接只包含那些满足连接条件的元组的组合。没有连接条件,即无条件连接,则连接变成笛卡尔乘积。连接等价于先进行笛卡尔乘积,再进行一次选择运算。第43页,共90页,编辑于2022年,星期一2.4 RDB规范化理论规范化理论 2.4.1 关系模式规范化的必要性关系模式规范化的必要性2.4.2 数值依赖数值依赖 2.4.3 范式与规范化范式与规范化 2.4.4 关系分解原则关系分解原则 第44页,共90页,编辑于2022年,星期一RBD规范化理论的目的是要设计“好的”RBD模式。要设计好的关系模式,必须是关系满足一定的约束条件,此约束形成了规范。范式:范式:衡量DB规范的层次或深度,DB规范化层次由范式来决定。根据关系模式满足的不同性质和规范化的程度,将关系模式分为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF),范式越高规范化程度越高,关系模式越好。规范化:规范化:低级关系模式通过模式分解转换为若干高级范式的关系模式集合的过程。规范化是在RBD中减少数据冗余的过程。第45页,共90页,编辑于2022年,星期一2.4.1 关系模式规范化的必要性关系模式规范化的必要性1.关系模式应满足的条件关系模式应满足的条件2.关系可能出现的问题关系可能出现的问题3.模式分解是关系规范化的主要方法模式分解是关系规范化的主要方法第46页,共90页,编辑于2022年,星期一1.1.关系模式应满足的条件关系模式应满足的条件 RDB是根据关系模式设计的。关系模式除了能满足信息存储和查询基本要求外,还应满足以下要求:元组每个分量必是不可再分的数据项元组每个分量必是不可再分的数据项(不能有表中表不能有表中表)RDB特别强调,关系中的属性不能是组合属性,必须是基本项。否则,会使关系结构变为多层次的混合结构,增加关系操作的表达、优化及执行的复杂度。第47页,共90页,编辑于2022年,星期一 DB DB中的数据冗余应尽量少中的数据冗余应尽量少“数据冗余数据冗余”会使:会使:DB中的数据量巨增,系统负担过重,并浪费大量存储空间;造成数据的不完整,增加数据维护的代价。造成数据查询和统计困难,导致错误结果。RDB RDB不能因为数据更新操作而引起数据不一致性不能因为数据更新操作而引起数据不一致性对于“数据冗余大”的RDB,当执行数据修改时,冗余的数据可能出现数据不一致问题。影响了数据的完整性,使得DB中数据的可信度降低。第48页,共90页,编辑于2022年,星期一当执行数据插入时,当执行数据插入时,DBDB中的数据不能产生插入异常现象中的数据不能产生插入异常现象所谓“插入异常”是指希望插入的信息由于不能满足数据完整性的某种要求而不能正常地被插入的DB中的异常问题。原因:原因:DB设计时没有按“一事一地”的原则进行。因多种信息混合放在一个表中,可造成因一种信息被捆绑在其他信息上而产生的信息之间相互依附存储的问题,使得信息不能独立插入。第49页,共90页,编辑于2022年,星期一 DB DB中数据不能在执行删除操作时产生中数据不能在执行删除操作时产生“删除异常删除异常”问题问题“删除异常”是指在删除某种信息的同时把其它信息也删除了。“删除异常”是DB结构不合理产生的问题。若关系中多种信息捆绑在一起,当被删除信息中含有关系的主关键字时,因关系要满足实体完整性,整个元组将全部从DB中被删除,即出现“删除异常”。第50页,共90页,编辑于2022年,星期一 DB DB设计应考虑查询要求,数据组织应合理设计应考虑查询要求,数据组织应合理在DB设计时,不仅要考虑到数据自身的结构完整性,还要考虑到数据的使用要求。为使数据查询和数据处理高效简洁,特别是对查询实时性要求高、操作频度大的数据,有必要通过视图、索引和适量增加数据冗余的方法,增加DB的方便性和可用性。第51页,共90页,编辑于2022年,星期一2.2.关系可能出现的问题关系可能出现的问题如果一个关系没有经过规范化,可能会出现数据冗余大、数据更新造成不一致、数据插入异常和删除异常。例例6:该学生关系存在的问题:数据冗余(系主任名)、更新异常(换系主任)、插入异常(系没有招生系主任不能插入)、删除异常(学生毕业)。第52页,共90页,编辑于2022年,星期一3.3.模式分解是关系规范化的主要方法模式分解是关系规范化的主要方法对于有问题的关系模式,可通过模式分解的方法使之规范化。前面的学生关系可分解为以下三个关系:学生(学号,姓名,所在系)系(所在系,系主任姓名)考试(学号,课程名,成绩)新关系克服了学生关系存在的问题,更加合理和实用。第53页,共90页,编辑于2022年,星期一2.4.2 数据依赖数据依赖 相关概念相关概念1.函数依赖函数依赖2.平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖 3.完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖 4.传递函数依赖传递函数依赖 第54页,共90页,编辑于2022年,星期一在DB中,数据之间存在着密切的联系。在DB技术中,把数据之间存在的联系称为“数据依赖数据依赖”。DB中出现的数据异常现象与数据依赖有着紧密的关联。在数据依赖中,函数依赖是最基本的一种依赖形式。认识和掌握函数依赖知识,对于DB的约束设计和规范化设计具有重要意义。第55页,共90页,编辑于2022年,星期一1、候选键 若关系中的某一个属性或属性组能够唯一地标识一个元组,则称该属性或属性组为候选键。2、主键 若一个关系中有多个候选键,则选定其中的一个为主键。3、主属性 若关系中的某一个属性是构成某一个候选键的属性集中一个属性,则称该属性为主属性。4、外键 设F是关系R的一个属性或属性组,但不是R的键(主键或候选键),如果F与关系S的主键相对应,则称F是R的外键。back第56页,共90页,编辑于2022年,星期一1.函数依赖函数依赖假设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。函数依赖反映了关系模式中属性间的决定关系,体现了数据间的相互关系。第57页,共90页,编辑于2022年,星期一例例7:学生(学号,姓名,性别,年龄,班级号)存在以下的函数依赖:学号姓名 学号性别 学号年龄 学号班级号说明:说明:(1)函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。(2)函数依赖是RDB用以表示数据语义的机制。人们只能根据数据的语义来确定函数依赖。例:例:“姓名年龄”这个函数依赖只有在没有相同姓名人的条件下成立。若有相同姓名的人,则“年龄”就不再函数依赖于“姓名”了。第58页,共90页,编辑于2022年,星期一(3)若XY,则X称为这个函数依赖的决定属性集。(4)(4)若若XY,并且YX,则记为XY。(5)(5)若Y不函数依赖于X,则记为X Y。第59页,共90页,编辑于2022年,星期一2.平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡函数依赖非平凡函数依赖。若Y X,则称XY为平凡函数依赖平凡函数依赖。对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。第60页,共90页,编辑于2022年,星期一3.完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖完全函数依赖:完全函数依赖:在关系模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y完全函数依赖于X,记作X Y。部分函数依赖:部分函数依赖:若XY,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X Y。fp 第61页,共90页,编辑于2022年,星期一例例8 8:学生(学号,姓名,所在系,系主任姓名,课程号,成绩)学生关系模式存在的部分函数依赖:学生关系模式存在的部分函数依赖:(学号,课程号)姓名 (学号,课程号)所在系 (学号,课程号)系主任姓名ppp第62页,共90页,编辑于2022年,星期一4.传递函数依赖传递函数依赖在关系模式R(U)中,如果XY,YZ,且Y X,Z Y,Y X,则称Z传递函数依赖于X。例例9 9:学生(学号,姓名,所在系,系主任姓名,课程名,成绩),存在如下的函数依赖:学号所在系 所在系系主任姓名 学号系主任姓名第63页,共90页,编辑于2022年,星期一2.4.3 范式与规范化范式与规范化1.第一范式第一范式(1NF)2.第二范式第二范式(2NF)3.第三范式第三范式(3NF)4.规范化规范化第64页,共90页,编辑于2022年,星期一1.第一范式第一范式(1NF)若一个关系模式R的所有属性都是不可分的基本数据项,则该关系属于1NF。在任何一个RDBS中,1NF是对关系模式的一个的基本要求,不满足1NF的DB模式不能称为RDB。DBDB模式:模式:多个关系模式的集合。满足1NF的关系模式并不一定是好的关系模式。例如:例如:学生(学号,姓名,所在系,系主任姓名,课程名,成绩)它显然满足1NF,但本身存在插入异常、删除异常、更新异常和数据冗余问题,所以它不是一个好的关系模式。第65页,共90页,编辑于2022年,星期一2.2.第二范式第二范式(2NF)若关系模式R属于1NF,且每个非主属性都完全函数依赖于主关键字,则R属于2NF。2NF不允许关系模式中的非主属性部分函数依赖于主关键字。第66页,共90页,编辑于2022年,星期一例例1010:学生(学号,姓名,所在系,系主任姓名,课程名,成绩)学生关系模式存在部分依赖:(学号,课程名)姓名 (学号,课程名)所在系 (学号,课程名)系主任姓名不满足“每个非主属性都完全函数依赖于主关键字”的条件。故不属于2NF。对学生关系模式进行分解,使其满足2NF的条件,即要消除非主属性对主关键字的部分依赖。ppp第67页,共90页,编辑于2022年,星期一关系分解关系分解把R的属性分开,以构成两个新的关系模式;通过对R的元组进行投影而产生两个新的关系。学生关系模式分解成:学生关系模式分解成:学生-系(学号,姓名,所在系,系主任姓名)考试(学号,课程名,成绩)学生-系、考试属于2NF。第68页,共90页,编辑于2022年,星期一 学生关系模式:学生关系模式:学生-系(学号,姓名,所在系,系主任姓名)存在:存在:学号所在系 所在系系主任姓名 学号系主任姓名仍有数据冗余(从学生-系关系模式的实例可以看出,当一个系有很多学生时,“系主任姓名”会大量重复出现)和更新异常。所以应进一步对其进行规范化。第69页,共90页,编辑于2022年,星期一3.第三范式第三范式(3NF)若关系模式R属于1NF,且每个非主属性都不传递依赖于主关键字,则R属于3NF。将学生-系(学号,姓名,所在系,系主任姓名)关系模式分解为:关系模式分解为:学生(学号,姓名,所在系)系(所在系,系主任姓名)关系模式学生与系均已满足3NF。第70页,共90页,编辑于2022年,星期一3NF是一个可用的关系模式应满足的最低范式。一个关系模式如果不满足3NF,实际上是不能使用的。把关系模式分解到3NF,可在相当程度上减轻原关系中的异常和信息冗余,但也不能保证完全消除关系模式中的各种异常和信息冗余。要想使DB性能得到进一步的改善,就要把关系模式进一步规范化。第71页,共90页,编辑于2022年,星期一规范化时应考虑的问题规范化时应考虑的问题确定关系的主键、主属性、非主属性;确定关系的主键、主属性、非主属性;找出属性间的函数依赖;找出属性间的函数依赖;根据应用特点,确定应该规范化的第几范式;根据应用特点,确定应该规范化的第几范式;分解关系时,分解必须是无损的,不得丢失信息;分解关系时,分解必须是无损的,不得丢失信息;分解关系时,分解必须是无损的,不得丢失信息;分解关系时,分解必须是无损的,不得丢失信息;分解后的关系力求相对独立,即对一个关系内容的修改不要影响到其分解后的关系力求相对独立,即对一个关系内容的修改不要影响到其它的关系。它的关系。第72页,共90页,编辑于2022年,星期一实例一实例一 假设某单位考核职工完成生产定额的关系为假设某单位考核职工完成生产定额的关系为W(日期日期,工号工号,姓名姓名,工种工种,定额定额,超额超额,车间车间,车间主任车间主任),样值见下表,试分析,样值见下表,试分析W中存在哪些异常?将中存在哪些异常?将关系关系W分解成分解成3NF的过程如何?的过程如何?关系规范化实例关系规范化实例日期工号姓名工种定额超额车间车间主任9006101丁一车工8022%金工黎明9006102王二车工8017%金工黎明9006103张三钳工7514%工具赵洁9006104李四铣工7020%金工黎明9006101丁一车工8022%金工黎明9006102王二车工8017%金工黎明9006103张三钳工7514%工具赵洁9006104李四铣工7020%金工黎明第73页,共90页,编辑于2022年,星期一分析:分析:每个职工每月超额的情况是不同的,而定额一般是固定的。因此为了每个职工每月超额的情况是不同的,而定额一般是固定的。因此为了识别不同职工以及同一个职工不同月份的超额情况,决定了主键只能识别不同职工以及同一个职工不同月份的超额情况,决定了主键只能是是“日期日期”与与“工号工号”组合。组合。W(日期,工号日期,工号,姓名,工种,定额,超额,车间,车间主任,姓名,工种,定额,超额,车间,车间主任)()()“超额超额”完全依赖于主键;()姓名,工种,车间部分依赖于主键中的完全依赖于主键;()姓名,工种,车间部分依赖于主键中的“工工号号”;();()“定额定额”,“车间主任车间主任”传递依赖于传递依赖于“工号工号”一、确定函数依赖一、确定函数依赖 确定主键,并分别确定所有非主属性对主键的函数依赖关系。确定主键,并分别确定所有非主属性对主键的函数依赖关系。第74页,共90页,编辑于2022年,星期一一、确定函数依赖一、确定函数依赖 确定主键,并分别确定所有非主属性对主键的函数依赖关系。确定主键,并分别确定所有非主属性对主键的函数依赖关系。二、存在异常二、存在异常 1、数据冗余:每当考核一次职工的超额情况,表中就会重复出现每个、数据冗余:每当考核一次职工的超额情况,表中就会重复出现每个人的个人信息和所在车间信息。人的个人信息和所在车间信息。2、修改异常:王二改了工种从金工车间调到工具车间,则应对王二的、修改异常:王二改了工种从金工车间调到工具车间,则应对王二的所有元组逐一修改,若遗漏,数据不一致。所有元组逐一修改,若遗漏,数据不一致。3、插入异常:若有一个新工人调入某车间,因为他一天工作也没做,、插入异常:若有一个新工人调入某车间,因为他一天工作也没做,日期为日期为“空空”,缺少主键,违背试题完整性约束,无法插入。,缺少主键,违背试题完整性约束,无法插入。4、逐一样值中的、逐一样值中的“张三张三”,删除之,车间方面的信息也一并删除。为,删除之,车间方面的信息也一并删除。为了保留工具车间的信息只好不删除。了保留工具车间的信息只好不删除。第75页,共90页,编辑于2022年,星期一关系规范化的过程关系规范化的过程非规范关系1NF2NF3NFBCNF使每个决定因素都为候选键使每个属性都是不可再分的数据项消除非主属性对主键的部分依赖消除非主属性对主键的传递依赖消除主属性对主键的部分或传递依赖第76页,共90页,编辑于2022年,星期一三、关系分解三、关系分解 1、消除所有非主属性对主键的部分、消除所有非主属性对主键的部分依赖。分解应该是无损的。依赖。分解应该是无损的。W W1+W2W1(日期,工号日期,工号,超额);,超额);w2(工号工号,姓名,工种,定额,车间,姓名,工种,定额,车间,车间主任)车间主任)分解后的样值见右图分解后的样值见右图日期日期工号工号超额超额90.510122%90.510217%90.510314%90.510420%90.610119%90.610225%90.610316%90.610426%分解W1关系样值关系样值W2关系样值关系样值工号工号姓名姓名工种工种定额定额车间车间车间主任车间主任101丁一丁一车工车工80金工金工李明李明102王二王二车工车工80金工金工李明李明103张三张三钳工钳工75工具工具赵杰赵杰104李四李四铣工铣工70金工金工李明李明第77页,共90页,编辑于2022年,星期一分析分析w2关系,仍然存在各种异常。如:金工车间主任重复关系,仍然存在各种异常。如:金工车间主任重复3次,有冗余;次,有冗余;另外删除另外删除103号工人,则工具车间信息将从数据库中消失,故攒在删除异号工人,则工具车间信息将从数据库中消失,故攒在删除异常。常。对对w2关系继续分解:关系继续分解:w2(,姓名,工种,定额,车间,车间主任)(,姓名,工种,定额,车间,车间主任)其中存在两个传递依赖,将其消除的如下关系:其中存在两个传递依赖,将其消除的如下关系:W2 w21+w22+w23W21(工号工号,姓名,工种,车间);,姓名,工种,车间);w22(工种工种,定额),定额)W23(车间车间,车间主任),车间主任)至此,至此,w1、w21、w22、w23均为均为3NF第78页,共90页,编辑于2022年,星期一2.4.4 关系分解原则关系分解原则1.1.无损连接无损连接 2 2.保持依赖保持依赖 第79页,共90页,编辑于2022年,星期一 对关系模式进行分解的目的:对关系模式进行分解的目的:使关系模式更加规范化,从而减少以至消除数据冗余和更新异常。要使关系模式的分解有意义,模式分解需要满足一些约束条件使分解不能破坏原来的语义,即模式分解要符合无损连接和保持函数依赖的原则。第80页,共90页,编辑于2022年,星期一BCNF范式范式 在某些情况下,在某些情况下,3NF范式的关系也会出现异常范式的关系也会出现异常.因为它没有、或传因为它没有、或传递依赖于主键,那么也会使关系性能变坏。递依赖于主键,那么也会使关系性能变坏。BCNF定义:设定义:设R是一个规范化的关系,若是一个规范化的关系,若R的每个决定因素都是后的每个决定因素都是后选键,则选键,则R是是 BCNF。第81页,共90页,编辑于2022年,星期一BCNF范式范式 例如:假设有一个关系模式例如:假设有一个关系模式SCT。假定一个学生学习多门课程,。假定一个学生学习多门课程,一个教师只讲一门课程,但是同一门课程可以有多名教师讲授。一个教师只讲一门课程,但是同一门课程可以有多名教师讲授。SCT关关系的样值如下,判定系的样值如下,判定SCT是否为是否为BCNF范式?范式?学生学生课程课程教师教师张东英语陈明许强英语陈明李伟英语古克刘萍pascal郭捷刘萍os方敏王凤数据结构孙侠第82页,共90页,编辑于2022年,星期一BCNF范式范式第一步:找候选键第一步:找候选键 (学生,教师),(学生,课程)。故关系(学生,教师),(学生,课程)。故关系SCT不存在非主属性。不存在非主属性。第二步:找决定因素第二步:找决定因素 决定因素除了上面两个候选键以外,还有决定因素除了上面两个候选键以外,还有“教师教师”属性。由于决属性。由于决定因素多余候选键,所以定因素多余候选键,所以SCT不是不是BCNF。学生学生课程课程教师教师张东英语陈明许强英语陈明李伟英语古克刘萍pascal郭捷刘萍os方敏王凤数据结构孙侠第83页,共90页,编辑于2022年,星期一BCNF范式范式SCT关系可以分解如下:关系可以分解如下:ST(学生,教师)和(学生,教师)和TC(教师,课程)(教师,课程)或者或者SC(学生,课程)和(学生,课程)和TC(教师,课程)(教师,课程)第84页,共90页,编辑于2022年,星期一1.无损连接无损连接 如果对新的关系进行自然连接得到的元组的集合与原关系完全一致,则称为无损连接。无损连接保证分解前后关系模式的信息不能丢失和增加,保持原有的信息不变。反映了模式分解的数据等价原则。第85页,共90页,编辑于2022年,星期一例例11:工人(工号,工种,定额)工人关系中存在的函数依赖如下:工人关系中存在的函数依赖如下:工号工种 工种定额 工号定额(传递函数依赖)分解方案如下:分解方案如下:第86页,共90页,编辑于2022年,星期一2.保持依赖保持依赖分解前所有的函数依赖要由分解后的所有关系模式中的函数依赖反映。分解后的关系不能破坏原来的函数依赖(不能破坏原来的语义),即保持分解前后原有的函数依赖依然成立。保持依赖反映了模式分解的依赖等价原则。依赖等价保证分解后的模式与原有的模式在数据语义上的一致性。第87页,共90页,编辑于2022年,星期一例例1212:成绩(学号,课程名,教师姓名,成绩)函数依赖集函数依赖集:(学号,课程名)教师姓名,成绩 (学号,教师姓名)课程名,成绩 教师姓名课程名分解为:分解为:学课教(学号,课程名,成绩)、学教(学号,教师姓名)丢失函数依赖:丢失函数依赖:教师姓名课程名,不能