




已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 关系数据库理论,2.1 关系模型 2.2 关系代数 2.3 规范化理论 2.4 本章小结,2.1 关系模型,E.F. Codd,1970 关系模型的三要素 关系数据结构 关系数据操作 关系的完整性约束条件,2.1.1 关系模型的三要素,关系数据结构 关系模型的数据结构非常单一,即关系。 现实世界中的实体以及实体之间的各种联系统一用关系表示。 在用户看来,一个关系就是一张二维表。,2.1.1 关系模型的三要素(续),关系数据操作 查询和更新(插入、删除、修改) 集合操作方式(set-at-a-time) 高度非过程化 种类,2.1.1 关系模型的三要素(续),关系的完整性约束条件 实体完整性 参照完整性 用户自定义的完整性 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性,应由关系系统自动支持。 具体的应用领域还可能存在一些特定的语义约束,用户可以相应地自定义一些完整性约束条件,这些完整性约束条件一经定义也应由关系系统自动支持。,2.1.2 关系数据结构,域(Domain) 一组具有相同数据类型的值的集合。 在关系中,域用来作为属性的取值范围。 例如 学号属性所取的最大长度为11个字节的字符串集合。 年龄属性所取的大于14且小于36的正整数集合。 性别属性所取的由“男”和“女”组成的集合。 笛卡尔积(Cartesian Product) 给定了一组域 ,这些域的笛卡尔积定义为: 每一个元素称为一个n-元组(n-tuple),简称元组(Tuple)。 元组中的每一个值称为一个分量(Component)。,2.1.2 关系数据结构(续),若干域的笛卡尔积可表示成一张二维表,表中的每一行对应于笛卡尔积的每一个元组,表中的每一列对应于笛卡尔积的每一个域。 例如,给定了以下三个域: 姓名集合(name)=张勇,李明 年龄集合(age)=20,21 专业集合(major)=计算机,信息管理 则它们的笛卡尔积为: (张勇,20,计算机),(张勇,20,信息管理), (张勇,21,计算机),(张勇,21,信息管理), (李明,20,计算机),(李明,20,信息管理), (李明,21,计算机),(李明,21,信息管理),2.1.2 关系数据结构(续),该笛卡尔积一共有 个元组,可表示成如表2.1所示的一张二维表。 显然,如表2.1所示的笛卡尔积中有很多元组是没有任何实际意义的。,2.1.2 关系数据结构(续),关系(Relation) 笛卡尔积的一个有实际意义的有限子集。 作为笛卡尔积的子集,关系同样可以表示成二维表的形式。 假设所有学生都不会重名,且每名学生只属于一个专业,那么表2.1中只有两个元组具有实际意义。 假设张勇和李明的年龄分别为21岁和20岁,都是信息管理专业的学生,相应的两个元组就构成了描述学生年龄及其所属专业的一个关系,如表2.2所示。,2.1.2 关系数据结构(续),关系中的每一行就是关系的一个元素或元组,描述一个具体的客观对象或联系,通常用t表示。 关系中的每一列就是关系的一个属性,其值来自相应的域。 在关系的所有属性中,可以惟一确定一个元组的属性或属性的最小组合称为该关系的码(键,Key)或候选码(候选键,Candidate Key)。 如果候选码多于一个,则选取其中一个候选码作为主码(主键,Primary Key)。 包含在任一候选码中的属性称为主属性(Primary Attribute)。 不包含在任何候选码中的属性称为非主属性(Non-Primary Attribute)或非码属性(Non-Key Attribute)。,2.1.2 关系数据结构(续),关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,满足这些规范条件的规范化的关系称为范式(Normal Form,简称NF)。 最基本的规范条件就是关系的每一个分量都必须取不可再分的原子值。,2.1.2 关系数据结构(续),关系模式(Relation Schema) 对关系的结构及其特征的抽象描述。 相对稳定。 形式化表示为一个五元组 R (U, D, dom, F) R为关系名; U为组成该关系的属性名集合; D为U中各属性来自的域集合; dom为属性到域的映射集合,用来确定U中的每一个属性分别来自D中的哪一个域; F为属性间的数据依赖集合,用来限定组成该关系的各元组必须满足的完整性约束条件,体现了关系的元组语义。,2.1.2 关系数据结构(续),关系模式通常简记为 R (U) 或 R (A1, A2, , An) 其中, A1, A2, , An为关系R的所有属性名。 例如,表2.2中的stu_info关系可描述为 stu_info (name, age, major) 关系是关系模式在某一时刻的状态或内容,即关系模式的值(Value)。 关系模式则是对关系的抽象描述,即关系的型(Type)。,2.1.2 关系数据结构(续),关系数据库和关系数据库模式 在一个具体的应用领域中,所有实体以及实体之间的各种联系统一用关系表示,这些关系的集合就构成了一个关系数据库。 作为关系的集合,关系数据库也会随着时间不断地变化,人们通常用相对稳定的关系数据库的型来描述关系数据库,这就是关系数据库模式。 关系的集合构成了关系数据库,对应的关系模式的集合也就构成了关系数据库模式。,2.1.3 关系的完整性约束条件,实体完整性(Entity Integrity) 若属性A是关系R的主属性,则属性A不能取空值。 所谓空值是指“不知道”或“不存在”的值。由于主属性是用来标识实体的基本属性,若主属性取空值,就说明这个实体不可标识,这与现实世界的要求是背离的。 实体完整性规定的是所有主属性都不能取空值。 例如 stu_info (name, age, major) 选修(学号,课程号,成绩),2.1.3 关系的完整性约束条件(续),参照完整性(Referential Integrity) 现实世界中实体与实体之间往往存在着某种联系,表现在关系数据库中就是关系与关系之间的属性引用。例如 学生(学号,姓名,性别,年龄,专业号) 专业(专业号,专业名,专业负责人) 学生和专业之间的“属于”联系就表现为这两个关系之间的属性引用,即学生关系的“专业号”属性引用了专业关系的主码“专业号”。 学生关系中的“专业号”值必须是确实存在的某个专业的专业号,即专业关系中的某个“专业号”值,专业关系中不存在的“专业号”值是毫无意义的。 此外,学生关系的“专业号”属性也可以取空值,表示该生尚未分配专业或不知道他的专业。,2.1.3 关系的完整性约束条件(续),在学生关系中,“专业号”属性虽然不是码,但它却引用(或参照)了专业关系的主码,这样的属性引用不但可以表达学生和专业之间的“属于”联系,而且还使它的取值受到了一定的限制(需要参照专业关系中主码“专业号”的取值),这样的属性称为外码。 外码:设F是关系R的一个(或一组)属性,但不是关系R的码,若F引用(或参照)了关系S的主码Ks,则称F是R的外码(外键,Foreign Key)。 显然,外码F和相应的主码Ks必须定义在同一个(或同一组)域上。,2.1.3 关系的完整性约束条件(续),参照完整性:若属性(或属性组)F是关系R的外码,引用(或参照)的是关系S的主码Ks,则R中每个元组在F上的取值 要么为空值; 要么为S中某个元组的Ks值。 和实体完整性不同,参照完整性约束的是外码的取值,用来保证外码对主码的正确引用,以体现客观对象之间的各种联系。 按照参照完整性,学生关系的“专业号”属性要么取空值,表示该生尚未分配专业或不知道他的专业;要么取专业关系中的某个“专业号”值,表示该生已属于某个确实存在的专业。,2.1.3 关系的完整性约束条件(续),例如 学生(学号,姓名,性别,年龄,专业号) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) 选修关系和学生、课程关系之间都存在属性的引用 “学号”属性引用了学生关系的主码“学号”; “课程号”属性引用了课程关系的主码“课程号”。 因此,选修关系有两个外码:学号和课程号。,2.1.3 关系的完整性约束条件(续),按照参照完整性 选修关系的“学号”属性要么取空值,要么取学生关系中的某个“学号”值,即某名学生的学号; 选修关系的“课程号”属性要么取空值,要么取课程关系中的某个“课程号”值,即某门课程的课程号。 当然,这两个属性都不能取空值。为什么?,2.1.3 关系的完整性约束条件(续),同一个关系内部也可能存在属性的引用。例如 学生(学号,姓名,性别,年龄,专业号,班长) “班长”属性表示该生所在班级的班长的学号,显然,它引用了主码“学号”,因此是学生关系的外码。 该属性引用表达了学生内部存在的“领导”联系。 按照参照完整性,“班长”属性要么取空值,表示该生所在班级尚未选出班长;要么取学生关系中的某个“学号”值,即某名学生(即该生所在班级的班长)的学号。,2.1.3 关系的完整性约束条件(续),用户自定义的完整性(User-defined Integrity) 除了实体完整性和参照完整性外,具体的应用领域还可能存在一些特定的语义约束。例如 大学生的年龄限定在14岁36岁之间; 大学生的不及格门次限定在3门以下; 28岁以上的大学生其政治面貌只能是“党员”或“群众”; 郑州市的固定电话号码前四位限定为0371。 为了使数据能正确反映这些语义约束,从而真实地模拟现实世界,用户可以相应地自定义一些完整性约束条件。 这些完整性约束条件一经定义,也应和实体完整性、参照完整性一样由关系系统自动支持,而不应由应用程序来承担这一功能。,第2章 关系数据库理论,2.1 关系模型 2.2 关系代数 2.3 规范化理论 2.4 本章小结,2.2 关系代数,用对关系的运算即代数方式来表达查询的一种抽象的查询语言。 是关系数据库管理系统使用的查询语言以及查询优化的理论基础。 关系代数的运算对象是一个或多个关系(二维表),运算结果也是一个新的关系(二维表),关系的运算如表2.4所示。,2.2.1 传统的集合运算,并(Union) 条件:R和S具有相同的属性个数,并且对应的属性来自同一个域,即它们的结构是兼容的。 例如,由所有2006级学生构成的关系为Students_2006,如表2.5所示;由所有获一等奖学金的学生构成的关系为Students_First,如表2.6所示。,2.2.1 传统的集合运算(续),若要查询所有2006级学生和所有获一等奖学金的学生,则需要这两个关系的并,其结果如表2.7所示。,2.2.1 传统的集合运算(续),交(Intersection) 条件:R和S具有相同的属性个数,并且对应的属性来自同一个域,即它们的结构是兼容的。 若要查询所有获一等奖学金的2006级学生,则需要这两个关系的交,其结果如表2.8所示。,2.2.1 传统的集合运算(续),差(Difference) 条件:R和S具有相同的属性个数,并且对应的属性来自同一个域,即它们的结构是兼容的。 若要查询没有获一等奖学金的所有2006级学生,则需要这两个关系的差,其结果如表2.9所示。 注意: , , 但 。,2.2.1 传统的集合运算(续),广义笛卡尔积(Extended Cartesian Product),2.2.2 专门的关系运算,选择(Selection) 又称限制(Restriction),是一个单目运算。 F为选择条件,是由逻辑运算符(and)、(or)或(not)连接各比较表达式组成的一个逻辑表达式。 就是从关系R中选择使逻辑表达式F为真的那些元组。,2.2.2 专门的关系运算(续),假设有一个学生选课数据库,包括学生关系、课程关系和选修关系。,2.2.2 专门的关系运算(续),2.2.2 专门的关系运算(续),例1 查询计算机专业所有学生的基本情况。 或,2.2.2 专门的关系运算(续),例2 查询年龄小于19岁的计算机专业学生的基本情况。 或,2.2.2 专门的关系运算(续),投影(Projection) A为R中的属性(或属性组)。 和选择操作不同,投影操作是从属性(列)的角度进行的运算(可能涉及行)。 例3 查询所有学生的学号和姓名。 或,2.2.2 专门的关系运算(续),例4 查询学生关系stu_info中都有哪些专业。 或 由于只保留了关系的部分列,因此可能会出现重复行,投影结果应消除这些重复行,如表2.16所示。,2.2.2 专门的关系运算(续),连接(Join) 由于广义笛卡尔积会产生大量的无效元组,为了能实现关系的有效合并,元组之间应按一定的条件进行组合,这就是连接操作。 连接,也称 连接,是从两个关系的广义笛卡尔积中选择属性间满足一定条件的元组构成的一个新关系。 或者说,两个关系的元组只有在相应属性上的取值满足一定条件时才能组合成为新关系的元组。,2.2.2 专门的关系运算(续),A和B分别为R和S中可比较的属性(组)。 是比较运算符,如 等。 R中元组在属性(组)A上的取值 和S中元组在属性(组)B上的取值 只有满足条件 时才能组合成为 中的元组 。 两种最常用的连接 等值连接(Equi-Join) 自然连接(Natural Join) 自然连接是一种特殊的等值连接,它要求两个关系中进行等值比较的属性(组)必须是相同的属性(组),不但数据类型可比较,而且属性名也应相同;此外,自然连接的结果还要把重复的属性去掉。,2.2.2 专门的关系运算(续),例6 查询选修了课程的学生及其选修课程的基本情况。,2.2.2 专门的关系运算(续),除(Division) 若要查询选修了某些课程的学生,并且这些课程只是具有给定特征的一组不能明确列举出来的课程,用选择操作是远远不够的,因为选择条件无法明确给出,这时可以用除运算。 给定关系R (X, Y)和S (Y, Z),即R和S具有相同的属性(组)Y,R与S的除运算得到一个新关系P (X),P是R中满足以下条件的元组在属性(组)X上的投影:元组在X上取值x对应的Y值集合(称为象集Yx)包含S在Y上投影的集合。记作:,2.2.2 专门的关系运算(续),例7 查询选修了C2号课程和C3号课程的学生学号。 若要用选择运算,需要用到集合的交运算,即有: 若要用除运算,需要先将查询条件中的不同课程号组建为一个临时关系(集合)K :,2.2.3 综合实例,例8 查询选修了“C1”号课程的学生学号。,2.2.3 综合实例(续),例9 查询至少选修了一门其先行课为“C1”号课程的学生姓名。,2.2.3 综合实例(续),例10 查询选修了全部课程的学生学号和姓名。 例11 查询没有选修“C1”号课程的学生学号。 在以上八种关系代数运算中,并、差、广义笛卡尔积、选择和投影是基本运算,其它三种运算(交、连接和除)都可以用这五种基本运算来表达,引进它们只是为了简化表达,并没有增加语言的能力。,第2章 关系数据库理论,2.1 关系模型 2.2 关系代数 2.3 规范化理论 2.4 本章小结,2.3 规范化理论,关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,满足这些条件的规范化的关系称为范式(NF)。 最基本的规范条件就是每一个分量都必须取不可再分的原子值,满足这一规范条件的关系属于第1范式(1NF),是规范化程度最低的关系。 这样的关系可能会存在一些潜在的异常问题,因此还不能称其为一个“好”的关系。,2.3 规范化理论(续),针对一个具体应用,在设计数据库的逻辑结构时,首先要考虑到的基本问题就是,应该设计几个关系模式,每个关系模式应该由哪些属性组成,设计好的关系模式是不是一个合适的关系模式等。 针对这些问题,人们提出了关系数据库的规范化理论。该理论可用来判断一个关系模式设计得是否合理,如何通过提高其规范化程度来降低潜在的异常问题等,从而成为指导数据库逻辑设计的一个有力工具。 现实世界的已知事实限定了关系模式必须满足一定的完整性约束条件,这些约束或者通过对属性取值范围的限定(见2.1.3节),或者通过属性间的相互关联反映出来,后者称为数据依赖,是关系模式设计的关键。,2.3 规范化理论(续),数据依赖是通过一个关系中各属性间值的相等与否体现出来的数据间的相互关系。 是对现实世界中各属性间相互联系的抽象。 是数据语义的体现。 例如,在stu_info关系中,stu_id能惟一确定name、sex、age和major。 如果存在两个元组在stu_id上的取值相等,那么在name、sex、age和major上的取值也必定相等。 体现了学号的惟一性以及每名学生都只属于一个专业这样的数据语义。,2.3 规范化理论(续),数据依赖的种类 函数依赖(Functional Dependency,简称FD) 多值依赖(Multivalued Dependency,简称MVD) 连接依赖(Join Dependency,简称JD) 函数依赖 例如,stu_id能惟一确定name、sex、age和major。 称stu_id函数决定name、sex、age和major。 或称name、sex、age和major函数依赖于stu_id。 记作:stu_idsame,stu_idsex,stu_idage, stu_idmajor。 在关系模式的5元组R (U, D, dom, F)中,F就是属性间 的数据依赖集合,这里把关系模式简记为R (U, F)。,2.3.1 问题的提出,针对一个具体问题,可以设计单一的关系模式,也可以设计若干个关系模式,哪种设计会更“好”一些?一个“不好”的关系模式会存在哪些问题?如何将“不好”的关系模式改造成“好”的关系模式?下面以一个例子进行说明。 假设要建立一个描述学生基本情况的数据库,涉及的对象包括:学生的学号stu_id、姓名name、所属的专业major、专业负责人manager、选修的课程号course_id、课程名course_name和成绩grade。 如果采用单一的关系模式 stu_major_course_grade (U, F) 则有: U=stu_id, name, major, manager, course_id, course_name, grade,2.3.1 问题的提出(续),现实世界的已知事实告诉我们: 每名学生都只有惟一的一个学号; 每个专业都只有一名专业负责人; 每门课程都只有惟一的一个课程号; 一个专业有若干名学生,但一名学生只属于一个专业; 一名学生可以选修若干门课程,每门课程可供若干名学生选修; 每名学生选修每门课程只会有一个成绩。 从而得到了U上的一组数据依赖(具体地,函数依赖): F=stu_idname, stu_idmajor, majormanager, course_idcourse_name, (stu_id, course_id)grade,2.3.1 问题的提出(续),根据以上信息,可以确定该关系模式只有(stu_id, course_id)这么一个候选码。 单一的关系模式stu_major_course_grade (U, F)会存在以下问题: 插入异常 删除异常 数据冗余度大和更新异常 按“一个关系存放一个事实”的原则将其分解为以下四个关系模式(其中,主码用下划线标明): stu_info (stu_id, name, major, stu_idname, stu_idmajor) major_info (major, manager, majormanager) course_info (course_id, course_name, course_idcourse_name) stu_grade (stu_id, course_id, grade, (stu_id, course_id)grade),2.3.1 问题的提出(续),可以看出,通过对关系模式的分解,使一个关系只描述一个实体或实体间的一种联系,从而可以提高其规范化程度,达到消除异常的目的,这一过程就是规范化,从理论上讲,就是用一组等价(不破坏原有数据)的关系模式代替原来的关系模式,消除其中不合适的数据依赖。,2.3.2 规范化,关系模式规范化程度的判定取决于其中存在什么样的数据依赖,是否存在不合适的数据依赖,如果存在,是哪些不合适的数据依赖。 函数依赖 假设存在一个关系模式R (U),X和Y是U的子集,若对于任一元组在X上的每一个值,都有Y上的惟一值与之对应,或者说,不存在两个元组在X上的值相等但在Y上的值不等,则称X函数决定Y,或称Y函数依赖于X,记作:XY。其中,X称为决定属性集或决定因子(Determinant)。 若XY,且YX。则X与Y等价,记作:XY。 若X不函数决定Y,或Y不函数依赖于X,记作:XY。 函数依赖是语义范畴的概念,需要根据具体语义来确定函数依赖。,2.3.2 规范化(续),函数依赖表示的是各属性之间的相互联系,不同的联系类型决定了不同的函数依赖: 若属性X和Y之间具有一对一联系,则有XY; 若属性X和Y之间具有一对多联系,则有YX,但XY; 若属性X和Y之间具有多对多联系,则X和Y之间不存在任何函数依赖。 所以,确定函数依赖可以从分析属性间的联系类型入手。 由函数依赖的定义可知,函数依赖具有以下性质: 若XY,XZ,则XYZ(合并性); 若XYZ,则XY,XZ(分解性); 若XY,YZ,则XZ(传递性); 若XY,则XZYZ(增广性)。,2.3.2 规范化(续),若XY,且 ,则称XY是非平凡的函数依赖;而若XY,且 ,则称XY是平凡的函数依赖。 例如,在关系stu_grade (stu_id, course_id, grade)中,存在以下函数依赖: (stu_id, course_id)stu_id (stu_id, course_id)course_id (stu_id, course_id)(stu_id, course_id) (stu_id, course_id)grade 除了最后一个函数依赖是非平凡的函数依赖外,前三个函数依赖都是平凡的函数依赖,在任何一个关系中都必然成立,不反映任何新的语义。,2.3.2 规范化(续),在关系模式R (U)中,若XY,并且对于X的任何一个真子集X,都有XY,则称Y对X完全函数依赖,记作:XY ;而若XY,但Y不完全函数依赖于X,即存在X的一个真子集X,有XY,则称Y对X部分函数依赖,记作:XY 。,F,P,2.3.2 规范化(续),在上一节提到的stu_major_course_grade关系中,存在以下函数依赖: stu_idname stu_idmajor majormanager course_idcourse_name (stu_id, course_id)grade 这些函数依赖都是完全函数依赖。根据这些函数依赖,我们还可以推导出以下函数依赖: (stu_id, course_id)name (stu_id, course_id)major (stu_id, course_id)manager (stu_id, course_id)course_name 但这些函数依赖都是部分函数依赖。,2.3.2 规范化(续),在关系模式R (U)中,若XY( ),YX,YZ( ),则称Z对X传递函数依赖。 加上条件YX,是因为如果YX,则有XY,那么Z对X就是直接函数依赖,而非传递函数依赖。 加上条件 和 ,说明Y对X和Z对Y都是非平凡的函数依赖。 例如,在stu_major_course_grade关系中存在 stu_idmajor majormanager 则有 stu_idmanager 因为majorstu_id,所以manager对stu_id是传递函数依赖。,2.3.2 规范化(续),在关系模式R (U, F)中,若存在属性(或属性组)K,使KU成立,则称K是R的候选码。 这一定义和前面的定义是相吻合的。 例如,在关系stu_grade (stu_id, course_id, grade)中存在(stu_id, course_id)grade 则有(stu_id, course_id)(stu_id, course_id, grade), 因此,(stu_id, course_id)是stu_grade关系的候选码。 包含在任一候选码中的属性称为主属性。 如stu_grade关系中的stu_id和course_id。 不包含在任何候选码中的属性称为非主属性或非码属性。 如stu_grade关系中的grade。,F,F,F,2.3.2 规范化(续),范式 满足不同规范条件的关系模式具有不同的规范级别。符合某一规范级别的关系模式的全体称为范式。 如果关系模式R满足第x范式(记作xNF)的规范条件,则称R属于xNF,记作:RxNF。 若R不属于xNF,记作:RxNF。 满足最低规范条件(即所有属性都不可再分)的关系模式的全体称为第1范式,记作:1NF。 范式级别较低的关系模式会存在一些不合适的数据依赖,从而产生前述的异常问题。通过模式分解可以将其转换为等价的具有较高范式级别的若干个关系模式,以消除这些异常问题,这一过程就称为规范化。,2.3.2 规范化(续),2NF 若R1NF,且每一个非主属性都完全函数依赖于候选码,则R2NF。 例如,关系stu_grade (stu_id, course_id, grade) 候选码只有一个,即:(stu_id, course_id)。因此,只有grade是非主属性; 因为(stu_id, course_id)grade,所以stu_grade2NF。,F,2.3.2 规范化(续),再如,关系stu_major_grade (stu_id, major, manager, course_id, grade) 每名学生(stu_id)都只属于一个专业(major),每个专业都只有一名专业负责人(manager),每名学生选修每门课程(course_id)只会有一个成绩(grade),因此存在以下函数依赖: stu_idmajor, majormanager, (stu_id, course_id)grade stu_major_grade关系的候选码也只有一个,即:(stu_id, course_id)。因此,它的非主属性有major、manager和grade。 由于stu_idmajor,则有(stu_id, course_id)major; 由于stu_idmajor和majormanager, 则有stu_idmanager, 因此有(stu_id, course_id)manager。 非主属性major和manager都部分函数依赖于候选码 (stu_id, course_id),因此,stu_major_grade2NF。,P,P,2.3.2 规范化(续),由于stu_major_grade关系不属于2NF,因此会产生以下问题: 插入异常 删除异常 数据冗余和修改复杂 存在以上问题的原因在于,非主属性major和manager并不完全函数依赖于候选码(stu_id, course_id),而只是完全函数依赖于候选码中的一个属性stu_id,和course_id无关,但现在却不得不依赖于course_id。,2.3.2 规范化(续),解决的办法就是对该关系模式进行分解,以消除非主属性对候选码的部分函数依赖: stu_major (stu_id, major, manager) stu_grade (stu_id, course_id, grade) stu_major2NF,stu_grade2NF。 通过分解,以上问题就可以得到部分解决。,2.3.2 规范化(续),解决的办法就是对该关系模式进行分解,以消除非主属性对候选码的部分函数依赖: stu_major (stu_id, major, manager) stu_grade (stu_id, course_id, grade) stu_major2NF,stu_grade2NF。 通过分解,以上问题就可以得到部分解决,但依然会存在以下问题: 插入异常 删除异常 数据冗余和修改复杂 存在以上问题的原因在于,在stu_major关系中,非主属性manager传递函数依赖于候选码stu_id,和stu_id只是间接相关,并非直接相关。,2.3.2 规范化(续),3NF 若R2NF,且每一个非主属性都不传递函数依赖于候选码,则R3NF。 也就是说,属于3NF的关系模式中不存在任何非主属性对候选码的部分或传递函数依赖。 例如,在关系stu_major (stu_id, major, manager)中,非主属性manager对候选码stu_id传递函数依赖,因此, stu_major3NF。 从上面的讨论可知,stu_major还存在着一些异常问题,解决的办法就是将其分解,以进一步消除非主属性对候选码的传递函数依赖: stu_info (stu_id, major) major_info (major, manager) 可以证明,stu_info3NF,major_info3NF,从而解决了以上问题。,2.3.2 规范化(续),对于一般的数据库应用来说,设计出属于3NF的关系模式就够了,已经能够消除数据冗余和各种异常问题,获得比较满意的效果。但是,2NF和3NF都没有涉及到主属性对候选码的依赖关系,所以有时还会产生一些异常问题。,2.3.2 规范化(续),BCNF 修正的3NF。 若R1NF,且R的每一个决定因子都含有候选码(这样的属性集合称为超码),也就是说,不存在任何属性(包括主属性和非主属性)对不包含它的候选码的部分或传递函数依赖,则RBCNF。 这里说的决定因子指的只是那些非平凡函数依赖的决定因子。 若RBCNF,则R3NF。 若R3NF,则R未必属于BCNF。,2.3.2 规范化(续),例如,stu_major (stu_id, major, manager) stu_major BCNF 再如,stu_ grade (stu_id, course_id, grade) stu_ grade BCNF 假设存在关系模式STJ (S, T, J),其中,S表示学生,T表示教师,J表示课程。 每位教师只讲授一门课程,每门课程可由若干位教师讲授,某名学生选修了某门课程,就确定了一位教师。因此,存在以下函数依赖: TJ (S, J)T STJBCNF,2.3.2 规范化(续),例如,stu_major (stu_id, major, manager) stu_major BCNF 再如,stu_ grade (stu_id, course_id, grade) stu_ grade BCNF 假设存在关系模式STJ (S, T, J),其中,S表示学生,T表示教师,J表示课程。 每位教师只讲授一门课程,每门课程可由若干位教师讲授,某名学生选修了某门课程,就确定了一位教师。因此,存在以下函数依赖: TJ,(S, J)T STJBCNF 在函数依赖的范畴内,BCNF是规范化程度最高的范式,能实现信息的彻底分离,从而也彻底消除了由函数依赖带来的异常问题。,2.3.2 规范化(续),多值依赖 假设存在关系模式 Teaching (C, T, B) 。 在某学校,一门课 程可由多位教师讲 授,他们使用相同 的一套参考书;每 位教师可以讲授多 门课程,每种参考 书也可供多门课程 使用。,2.3.2 规范化(续),TeachingBCNF 显然,Teaching关系还存在以下问题: 大量的数据冗余 数据的更新和维护很不方便 产生这一问题的原因在于,Teaching关系中存在一种有别于函数依赖的数据依赖,这就是多值依赖。,2.3.2 规范化(续),假设存在一个关系模式R (U),X、Y和Z是U的子集,且Z=U-X-Y(即Z是除X和Y之外的剩余属性组)。关系模式R (U)中多值依赖XY成立,当且仅当对R (U)的任一关系r,给定(X, Z)的一个取值(x, z),有一组Y的值与之对应,但这组值只取决于x值,而与z值无关。 或者说,在R (U)的任一关系r中,对于在X上取值相等的任何两个元组,交
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年奥特莱斯行业当前发展趋势与投资机遇洞察报告
- 2025年别墅行业当前发展趋势与投资机遇洞察报告
- 2025年额温枪行业当前发展现状及增长策略研究报告
- 2025年专业技术人员继续教育公需科目考试试题及答案
- (2025)辐射安全与防护培训考试题库及参考答案
- 2025年贵州省六盘水市国家公务员公共基础知识预测试题含答案
- 2025年保育员(高级)操作证考试试题及答案
- 2024年湖南街道解放里社区工作人员考试模拟试题及答案
- 摩托车基础知识培训课件
- 2025至2030年中国化妆工具套装市场竞争态势及行业投资潜力预测报告
- 车间拆除及场地土壤治理与地下水修复工程项目技术方案工程方案和设备方案
- 无跨越架封网装置计算程序(直接求解)
- 《病理检验技术》课程标准
- 茶树斜纹夜蛾的特征习性、暴发原因及防治措施
- 航海英语听力与会话第四版答案
- 氯化铵安全技术说明书MSDS
- DB33∕T 1189-2020 装配式建筑结构构件编码标准
- 《投资学》课程教学大纲
- 上海市小学语文学科学习准备期教学指导意见
- 三相三线两元件电能表48种接线功率对3
- 西北工业大学考试试题空间解析几何
评论
0/150
提交评论