《关系数据库 设计 理论资料》由会员分享,可在线阅读,更多相关《关系数据库 设计 理论资料(9页珍藏版)》请在金锄头文库上搜索。
1、第6章 关系数据库设计理论本章主要讲解在关系数据库的设计过程中,如何减少数据冗余,避免出现异常,该如何对数据库模式进行中心设计。1深入理解函数依赖和键码的概念。学会计算属性的封闭集。2模式设计是本章的重点。了解数据冗余和更新异常产生的根源;理解关系模式规范化的途径;准确理解第一范式、第二范式、第三范式和BC范式的含义、联系与区别;深入理解模式分解的原则;熟练掌握模式分解的方法,能正确而熟练的将一个关系模式分解成属于第三范式或BC范式的模式。3.了解多值依赖和第四范式的概念,掌握把关系模式分解成属于第四范式的模式的方法。本章主要的知识点包括:知识点1 函数依赖知识点2 模式设计知识点3 多值依赖
2、学习要点1、函数依赖1.1函数依赖的定义 如果关系R的两个元组在属性A1,A2, An上一致(也就是,两个元组在这些属性所对应的各个分量具有相同的值),则它们在另一个属性B上也一致。那么,我们就说在关系R中属性B函数依赖于属性A1A2An。记做A1A2An B,也可以说“A1,A2,An函数决定B”。A1A2An称为决定因素。 举例:学生关系Student的实例如下:SNoSNameSdeptMnameCnameGrade99230贺小华计算机周至光数据库系统7899239金 谦计算机周至光计算机网络8799239金 谦计算机周至光操作系统8699238陈 刚建 筑王勇建筑原理7299236吕
3、宋自动化李霞电路基础8299236吕宋自动化李霞自动化涉及85在这个关系中,学号确定后,学生的姓名及所在的系就都确定了。属性中的这种依赖关系就是函数依赖。在本例中存在下列函数依赖。Sno SNameSno SdeptSdept MnameSno Cname Grade1.2 关系的键码 如一个或多个属性的集合A1,An满足如下条件,称该集合为关系R的键码:1. 这些属性函数决定该关系的所有其它属性。2. A1,An的任何真子集都不能函数决定R的所有其它属性,键码必须是最小的。1.3 超键码 包含键码的属性集称为“超键码” 。因此,每个键码都是超键码。某些超键码不是(最小的)键码。每个超键码都满
4、足键码的第一个条件 :函数决定它所在的关系的所有其它属性。超键码不必满足键码的第二个条件:最小化条件。 1.4 函数依赖规则分解/合并规则可以把每个函数依赖右边的属性分解,从而使其右边只出现一个属性。同样,我们也可以把左边相同的依赖的聚集用一个依赖来表示,该依赖的左边没变,而右边则为所有属性组成的一个属性集。两种情况下,新的依赖集都等价于旧的依赖集。平凡依赖规则对于函数依赖A1A2An B来说,如果B是A中的某一个,我们就称之为“平凡的”。对于函数依赖A1A2An B1B2Bm,如果B是A的子集,则称该依赖为平凡的。如果B中至少有一个属性不在A中,则称该依赖为非平凡的。如果B中没有一个属性在A
5、中,则称该依赖为完全非平凡的。函数依赖A1A2An B1B2Bm等价于A1A2An C1C2Ck,其中C是B的子集,但不在A中出现。我们称这个规则为“平凡依赖规则”。 举例:学生关系Student的实例如下:SNoSNameSdeptMnameCnameGrade99230贺小华计算机周至光数据库系统7899239金 谦计算机周至光计算机网络8799239金 谦计算机周至光操作系统8699238陈 刚建 筑王勇建筑原理7299236吕宋自动化李霞电路基础8299236吕宋自动化李霞自动化涉及85下面三个函数依赖关系中Sno Cname Grade Cname Grade右边属性集是左边属性集的
6、子集,根据平凡依赖的定义,这个函数依赖属于平凡依赖。(设计人员注意:请用动画表示黄色字和蓝色字。)Sno Cname Cname Grade右边的Cname属性在左边的属性集Z中,而Grade属性不在左边的属性集中,这个函数依赖是非平凡依赖。(设计人员注意:请用动画表示黄色字和蓝色字。)Sno Cname Sname Grade右边的属性都不在左边的属性集中,这个函数的依赖是完全非平凡依赖。传递规则传递规则使我们能把两个函数依赖级联成一个新的函数依赖。如果A1A2An B1B2Bm和B1B2Bm C1C2Ck,在关系R中成立,则A1A2An C1C2Ck在R中也成立。这个规则就称为传递规则。
7、举例:对于关系Student,有如下两个依赖:Sno SdeptSdept Mname根据传递规则,可以得到一个新的依赖Sno Mname学习要点2 模式设计2.1问题的提出设计关系数据库模式时,特别是从面向对象的ODL设计或从E/R设计直接向关系数据库模式转换时,很容易出现的问题是冗余性,即一个事实在多个元组中重复。造成这种冗余的最常见的原因是,企图把一个对象的单值和多值特性包含在一个关系中。当我们企图把太多的信息存放在一个关系时,就会出现数据冗余和更新异常等问题。主要表现如下:1数据冗余。2修改异常。3删除异常。4插入异常。举例:学生关系Student的实例如下:SNoSNameSdept
8、MnameCnameGrade99230贺小华计算机周至光数据库系统7899239金 谦计算机周至光计算机网络8799239金 谦计算机周至光操作系统8699238陈 刚建 筑王勇建筑原理7299236吕宋自动化李霞电路基础8299236吕宋自动化李霞自动化设计851 数据冗余:学生所在的系和系主任。2 修改异常:修改了一个学生对应的系主任,其他的没有修改。SNoSNameSdeptMnameCnameGrade99230贺小华计算机王华数据库系统7899239金 谦计算机周至光计算机网络8799239金 谦计算机周至光操作系统8699238陈 刚建 筑王勇建筑原理7299236吕宋自动化李霞
9、电路基础8299236吕宋自动化李霞自动化设计853 删除异常。删除一个学生选修的课程可能导致这个学生的全部信息丢失。4 插入异常。如果缺少键码属性集合中的元素,会导致不合理情况的发生。例如无法对数据库进行插入、更新等操作。2.2问题的根源关系的键码函数决定该关系的所有其它属性。由于键码能唯一确定一个元组,所以,也可以说关系的键码函数决定该关系的所有属性。一个关系中的所有属性都函数依赖于该关系的键码。不同的属性在关系模式中所处的地位和扮演的角色是不同的。把键码所在的属性称为主属性,而把键码属性以外的属性称为非主属性。不同的属性对键码函数依赖的性质和程度是有差别的。有的属于直接依赖,有的属于间接
10、依赖(通常称为传递依赖)。当键码由多个属性组成时,有的属性函数依赖于整个键码属性集,而有的属性只函数依赖于键码属性集中的一部分属性。 完全依赖与部分依赖对于函数依赖W A,如果存在 V W(V是W的真子集)而函数依赖 V A成立,则称A部分依赖于W;若不存在这种V,则称A完全依赖于W。当存在非主属性对键码部分依赖时,就会产生数据冗余和更新异常。若非主属性对键码完全函数依赖,则不会出现类似问题。 传递依赖对于函数依赖X Y,如果Y X(X不函数依赖于Y)而函数依赖Y Z成立,则称Z对X传递依赖。如果X Y,且Y X,则X,Y相互依赖,这时Z与X之间就不是传递依赖,而是直接依赖了。我们以前所讨论的
11、函数依赖大多数是直接依赖。 举例:SNoSNameSdeptMnameCnameGrade99230贺小华计算机王华数据库系统7899239金 谦计算机周至光计算机网络8799239金 谦计算机周至光操作系统8699238陈 刚建 筑王勇建筑原理7299236吕宋自动化李霞电路基础8299236吕宋自动化李霞自动化设计85其中Sno, Cname为键码,函数依赖集如下:Sno Sname,Sdept;Sdept Mname;Sno Mname; pSno, Cname Sname,Sdept,Mname; fSno,Cname Grade分析可得:Sname,Sdept,Mname函数依赖于S
12、no,部分依赖于键码;Grade完全依赖于键码。则对键码完全依赖的Grade没有任何冗余;对键码部分依赖的属性Sname,Sdept,Mname存在大量的数据冗余,并且有可能出现更新异常。Mname传递依赖于Sno,当一个学生选修多门课程的时候,系主任的名字会多次重复出现,并有可能出现更新异常。结论:(1)在一个关系模式中,当存在非主属性对键码的部分依赖时,就会产生数据冗余和更新异常。(2)在一个关系模式中,当存在非主属性对键码的传递依赖时,就会产生数据冗余和更新异常。(3)主属性对键码的部分依赖和传递依赖也会导致产生数据冗余和更新异常。2.3 解决的途径 部分依赖和传递依赖有一个共同之处,这
13、就是,二者都不是基本的函数依赖,而都是导出的函数依赖。部分依赖是以对键码的某个真子集的依赖为基础;传递依赖的基础则是通过中间属性联系在一起的两个函数依赖。 导出的函数依赖在描述属性之间的联系方面并没有比基本的函数依赖提供更多的信息。在一个函数依赖集中,导出的依赖相对于基本的依赖而言,虽然从形式上看多一种描述方式,但从本质上看,则完全是冗余的。正是由于关系模式中存在对键码的这种冗余的依赖导致数据库中的数据冗余和更新异常。 解决的途径消除关系模式中各属性对键码的冗余的依赖。2.4 范式范式就是符合某一种级别的关系模式的集合。目前主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。第一范式需满足的要求最低,在第一范式基础上满足进一步要求的为第二范式:1NF 2NF 3NF BCNF 4NF 5NF通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合,这一过程称为规范化。 第一范式(1NF)如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第一范式。在任何一个关系数据库系统中,第一范式是对关系模式的