关系数据库规范化理论

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c2 c3 c1 c3 c4 c9 c8
成绩 80
89 78 90 87 76 90
4.1 问题导入
结论:
该关系模式不是一个好的模式。 “好”的模式:不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少。 原因:在该例中系主任属性不仅函数依赖于系名,而且还依赖 于学号。由于属性间约束关系太强才造成了上述异常现象。 解决方法:通过分解关系模式来消除其中不合适的依赖。 如:将SA分解为三个关系模式: S(学号,姓名,系名) D(系名,系主任) SC(学号,课号,成绩)
可以用函数依赖图来表示属性间的不同依赖情况。图中 虚线表示为部分函数依赖。
月供应量 商品编号 产地
供应商名
供应商编号
主负责人
W关系由于存在部分函数依赖、传递函数依赖,因此会出 现插入异常、删除异常、更新异常以及数据冗余大的问题。
4.2 函数依赖及关系的范式
3.码 设k为R(U,F)中的属性或属性组合,k'是k的真子集,若 k→U,且不存在k'→U成立,则k为R的候选码(candidate key), 简称为码。 若候选码多于一个,则选定其中的一个为主码。 包含在任何一个候选码中的属性,称为主属性。
由已知事实可以得知上述对象之间有如下对应关系: (l)一个系有若干学生,但一个学生只属于一个系; (2)一个系只有一名系主任; (3)一个学生可选修多门课程,每门课程有若干学生选修; (4)每个学生学习每一门课程有一个成绩。 如何设计一个合理的关系数据库模式?
4.1 问题导入
方案1:采用一个总的关系模式,将这些对象都放在SA中。 SA(学号,姓名,系名,系主任,课号,成绩) example (1)数据冗余 每个学生的系信息重复出现,既浪费存储空间,又易造成数据 的不一致性。 (2)插入异常 插入异常指的是应该插入的信息不能正常插入,例如:新生 未入学,就无法把该系及相应系主任信息插入到数据库。 (3)删除异常 删除异常指的是不该删除的信息被删除了,例如:当一个系 的全部学生毕业了,删除学生时该系及系主任信息也删除了。
课程(课程号,课程名) 选课(学号,课程号,成绩)
4.2 函数依赖及关系的范式
关于BCNF的以下结论:
若R∈BCNF,则R中所有非主属性对每一个码都完全函数依赖。
(2)如果两属性集X、Y之间是N:1联系,则存在函数依赖:X→Y。
4.2 函数依赖及关系的范式
2.函数依赖的分类 1)完全函数依赖 设有R(U),X’是X的真子集,如果X→Y,并且对于X的任 何一个真子集X’,都不存在X’→Y,则称Y对X完全函数依赖, 记为 2)部分函数依赖 设R(U),X’是X的真子集,如果X→Y,并且对于X的任何 一个真子集X’,都存在X’→Y成立,则称Y对X部分函数依赖, 也就是 Y不完全函数依赖于X,记为
可是S1中存在非主属性对码的传递依赖,故不属于3NF。 为优化设计将关系模式S1再分解为: S11(学号,姓名,系名) S12(系名,系主任) 分解后的关系模式S11与S12都∈3NF。
对比理解1NF、2NF、3NF
1NF是指关系模式中的所有属性都满足原子性。
2NF是指关系模式中不存在非主属性(组)对码的部分依赖。 3NF是指关系模式中不存在非主属性(组)对码的传递依赖。
4.1 问题导入
总结: 关系模型中用关系来描述实体及其联系,对同一现实世界可用 不同的关系模式来描述,但不同的关系模式的效果却有很大差异。 判断是否存在插入异常、删除异常、数据冗余的大小是一种直观
判断一个关系模式设计质量的方法。
如何消除不合理的数据依赖,将一个“不好”的关系模式改 造为一个“好”的关系模式,这就是关系数据库设计过程中要讨
4.2 函数依赖及关系的范式
3)传递函数依赖 在R(U)中,X,Y,Z是U的子集,如果X→Y,( YX ), Y→Z,且Y→X不成立,则称Z对X传递函数依赖,记为 。 需要注意的是:
如果Y→X成立,而X→Y,即X↔Y,则Z直接依赖于X;
如果 ,则Z直接依赖于X。
例如在SA(学号,姓名,系名,系主任,课号,成绩)中,有: 学号 → 系名,系名 → 系主任,则学号 T 系主任
4)BCNF BCNF:如果关系模式R(U,F)∈1NF。若F中任一函数依赖 X→Y且YX 时X必含有R的一个码,则R∈BCNF。 通常,BCNF的条件有多种等价的描述,换言之,若关系模 式R属于第一范式,且每个属性都不部分依赖和传递函数依赖 于码,则R属于BCNF。
4.2 函数依赖及关系的范式
(5)X→Y,但Y X,则称X→Y是平凡的函数依赖。
(6)若X→Y,Y→X,则X与Y相互依赖,记为X↔Y。 (7)若Y不函数依赖于X,则记为X → Y。
4.2 函数依赖及关系的范式
确定函数依赖关系,可以通过属性之间的联系加以确
定。属性间的3种联系,并不是每一种联系中都存在函数依赖。
(1)如果两属性集X、Y间是1:1联系,则存在函数依赖:X↔Y。 (3)如果两属性集X、Y间是M:N联系,则不存在函数依赖。 例如:学号→系名 学号→课号
2NF存在问题:数据冗余度大、插入异常、删除异常。
4.2 函数依赖及关系的范式
3)第三范式(3NF)
3NF:如果一个关系模式R满足2NF,并且每个非主属性都不传 递函数依赖于码,则R属于第三范式,记为R∈3NF。
案例分析
① S2(学号,课号,成绩)∈2NF ② S1(学号,姓名,系名,系主任)∈2NF
4.1 问题导入
学号 13001
13001 13001 13002 13002 13009 13015 13009
姓名 刘烨
刘烨 刘烨 赵华 赵华 范冰冰 范晨 范冰冰
系名 计算机系
计算机系 计算机系 管理系 管理系 艺术系 物理系 艺术系
系主任 李翔
李翔 李翔 郑明 郑明 刘欢 葛亮 刘欢
课号 c1
不包含在任何候选码的属性称为非主属性。
码具有以下两个性质: 决定性(标识的唯一性):对于R中的每一个元组,k值确 定后,该元组就确定了。 最小性(无冗余性):当k是属性集合时,k的任何一部分 都不能标识该元组。
4.2 函数依赖及关系的范式
4.2.2关系的范式及其规范化 范式(normal form,NF),是指规范化的关系模式。
范式间的包含关系:3NF2NF1NF
范式的级别越高,其存在的操作异常和数据冗余越小。 解决操作异常和数据冗余的方法是通过关系模式的分解使达 到更高一级的范式。 分解实质为让每个关系只有一个主题;如一个关系有多个主 题,就将其分解为多个关系,“一事一地”原则。
4.2 函数依赖及关系的范式
4.2 函数依赖及关系的范式
【例4-1】 某商业集团考核供应商供应商品情况的关系为
W,判断关系W的函数依赖情况。
W(供应商编号,供应商名,地址,商品号,商品名,规格,单 价,产地,产地主负责人,月供应量) 解:W的主码是供应商编号和商品号的组合。根据语义可以得知 W存在如下的函数依赖:
4.2 函数依赖及关系的范式
了解满足不同范式要求的模式分解算法; 掌握运用规范化理论设计满足实际应用需求的数据库。
第4章 关系数据库规范化理论
重点与难点
重点:关系规范化的必要性,函数依赖、范式的基本概念和 定义,关系规范化的方法。
难点:属性集闭包,逻辑蕴涵,模式分解算法。
关系数据库的规范化设计是指面对一个应用问题,如何 选择一个比较好的关系模式集合。 研究数据间自然联系与约束 范式是关系模式的标准 是自动化设计的基础
论的规范化理论问题。
4.1 问题导入
2.关系模式规范化的概念 规范化:就是把一个存在数据冗余大、插入异常、删除
异常和更新异常等情况的关系模式通过模式分解的方法转换 为“较好”关系模式的集合,这个过程叫做关系模式的规范 化。 将关系模式规范化,是使其达到“好”关系模式的唯一 途径。否则,设计的关系数据库将会产生一系列的问题。
【例4-2】 关系模式R(学号,课程号,课程名,成绩), 假设课程号,课程名都具有唯一性,判断此关系满足第几范式。 分析:由语义得知该关系模式的候选码分别是(学号,课 程号)和(学号,课程名)。 F={(学号,课程号)→成绩,(学号,课程名)→成绩, 课程号→课程名,课程名→课程号}; 由此可以得出: 存在主属性课程名对码(学号,课程号)的部分依赖, 主属性课程号对码(学号,课程名)的部分依赖。
4.2 函数依赖及关系的范式
1. 函数依赖的定义
设 R (U , F )是属性集 U 上的关系模式, X 和 Y是 U 的子集,
F是属性集U的数据依赖集,r是R的任意关系。 r中不可能存 在两个元组在X上的属性值相等, 而在Y上的属性值不等,
则称称X函数确定Y,或Y函数依赖于X,记为X→Y。
其中 X 称做决定因素( determinant ), Y 称做依赖因素 (dependent)。 根据引例假设学生不允许重名,则有: 学号→系名,学号→年龄 学号→姓名,姓名→学号,姓名→系名,姓名→年龄
数据依赖 规范化设计理论 范式 模式设计方法
4.1 问题导入
4.1.1 关系模式的规范化 一个关系模式应当是一个五元组。
R ( U,D,dom(),F )
数据依赖
属性到域上的映射关系 关系的域 属性集 关系名
关系模式是静态的,与时间无关。 关系模式通常简记为:R (U,F)。
4.1 问题导入
1.导入案例 关系模式设计引论 在某校信息管理系统中要建立一个数据库来描述学生和选课 的一些信息,面临的对象有:学号、姓名、系名、系主任、课 号、成绩。
4.2 函数依赖及关系的范式
4.2.1 函数依赖的定义及分类 函数依赖(Functional Dependency,FD)是最基本的 一种数据依赖形式,是关系模式中属性之间最常见的一种依 赖关系,也是关系模式最重要的一种约束。
函数依赖反映了同一关系中属性间的相互依赖和相互制 约,是属性间的一种联系,反映了同一关系中属性间一一对 应的约束。
从低一级的关系范式通过模式分解达到若干高一级范式的关 系模式的集合,这种过程叫做关系模式的规范化。 1.范式的判定条件与规范化 1)第一范式(1NF) 1NF:在一个关系模式R中,如果R的每一个属性都是不可 再分的数据项,则称R属于第一范式1NF,记为R∈1NF。
4.2 函数依赖及关系的范式
2)第二范式(2NF) 2NF:如果一个关系R属于1NF,且它的每一个非主属性都完 全依赖于码,则R属于第二范式,记为R∈2NF。 案例分析: SA(学号,姓名,系名,系主任,课号,成绩)进行分析,主 码为(学号,课号), p 学号 → 系名, (学号,课号) → 系名 其不属于2NF, 故对其分解 ① S2(学号,课号,成绩)∈2NF ② S1(学号,姓名,系名,系主任)∈2NF
第4章 关系数据库规范化理论
第4章 关系数据库规范化理论
本章内容
4.1 问题导入
4.2 函数依赖及关系的范式 4.3 函数依赖的公理系统 4.4 关系模式的分解
第4章 关系数据库规范化理论
学习目标 理解关系模式规范化的必要性; 理解数据依赖、函数依赖、逻辑蕴涵及其范式的概念; 掌握各种范式判定的条件及关系数据库规范化的过程,并能 够根 据应用语义,完整地写出关系模式的数据依赖集合,同时 能根据数据依赖分析某一个关系模式满足第几范式; 掌握数据依赖的公理系统,属性集闭包的含义和作用,模式 分解的准则;
不存在非主属性成绩对码的部分依赖和传递函数依赖,所以此 关系属于3NF,但不属于BCNF。
4.2 函数依赖及关系的范式
问题ቤተ መጻሕፍቲ ባይዱ冗余和操作异常依然存在,只是没有1NF和2NF的
问题严重,但仍不可忽视。
因此,满足3NF的关系模式,仍然存在着一些操作异常现 象。
由BCNF的定义,关系模式R分解为BCNF的关系模式如下:
4.2 函数依赖及关系的范式
对于函数依赖,需要说明以下几点: (1)函数依赖是指R的所有关系实例都要满足的约束条件,不 是针对某个或某些关系实例满足的约束条件。 (2)函数依赖是语义范畴的概念,人们只能根据数据的语义 来确定函数依赖。 (3)数据库设计者可以对现实世界做强制的规定。 (4)X→Y,但Y X,则称X→Y是非平凡的函数依赖。
相关文档
最新文档