第3章 关系数据库的规范化理论 本章导读: 关系规范化理论研究的是关系模式中各属性之间的依赖关系及其对关系模式性能的影响,探讨“好”的关系模式应该具备的性质,以及达到“好”的关系模式提供的方法。关系规范化理论提供了判断关系逻辑模式优劣的理论标准,是数据库设计的理论基础和关系模式算法工具,用于帮助数据库设计工程师预测和优化模式可能出现的问题。

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
复习: :对任意的x∈A,都有x∈B。 集合A与集合B间的关系 A(B) A B :存在x0∈A,但x0∈B。 A B A B.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
第6章 关系数据理论 6.1关系模式的设计的问题 6.2 数据依赖的推理规则 6.3规范化 6.4模式分解.
第六章 关系数据理论 内容出处: 1.Abraham Silberschatz《数据库系统概念》第七章.
河北化工医药职业技术学院 数据库原理及应用教案.
Access数据库基础 系列教学课件 安丘市职业中专 雷云龙.
第4章 关系数据库设计理论 本章内容 4.1 问题的提出 4.2 规范化 4.3 数据依赖的公理系统* 4.4 小结 习 题.
《高等数学》(理学) 常数项级数的概念 袁安锋
§1 线性空间的定义与性质 ★线性空间的定义 ★线性空间的性质 ★线性空间的子空间 线性空间是线性代数的高等部分,是代数学
常用逻辑用语复习课 李娟.
第六章 关系数据理论 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 *6.4 模式的分解.
An Introduction to Database System
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
Database Principles & Applications
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
2-7、函数的微分 教学要求 教学要点.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
第2章 关系数据库系统.
第7章 关系数据库规范化理论 7.1 函数依赖 7.2 关系规范化 7.3 关系模式的分解准则.
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
An Introduction to Database System An Introduction To Database System
An Introduction to Database System An Introduction to Database System
第5章 关系模式的规范化设计 冯万利.
面向对象建模技术 软件工程系 林 琳.
第六章 关系数据理论 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 *6.4 模式的分解 6.5 小结 管理科学与工程学院.
Thanks for the Slides from Renmin U
第五章 关系数据理论 关系模型有严格的数学理论基础,也是目前应用最广泛的数据模型,关系规范化是指导数据库设计的重要理论。一个好的关系数据库是应该既可以供人们方便地获取信息,而又不产生过多的不必要的重复存储问题。可以说,规范化理论是数据模型优化的理论基础,对其他数据库的逻辑设计同样具有理论上的意义。 2018年12月6日7时18分.
元素替换法 ——行列式按行(列)展开(推论)
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
计算机数学基础 主讲老师: 邓辉文.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
Principle and Application of Database
28.1 锐角三角函数(2) ——余弦、正切.
2.1.2 空间中直线与直线 之间的位置关系.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
第6章 关系数据库规范化理论 教学目标:通过本章学习,了解不规范的关系模式存在的问题;理解函数依赖及关系规范化的相关概念,熟悉关系模式的形式化定义;掌握第一范式(1NF)、第二范式(2NF)、第三范式(3NF)及BCNF的定义及相关术语的含义;了解多值依赖及第四范式(4NF)的定义;理解函数依赖公理的内容,掌握属性闭包的定义及求解算法,能够正确判断关系模式的候选码及规范化程度;了解最小函数依赖集的定义及算法,了解对模式分解后无损连接性和函数依赖保持性的判断。
概 率 统 计 主讲教师 叶宏 山东大学数学院.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
复习.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
3.1.2 空间向量的数量积运算 1.了解空间向量夹角的概念及表示方法. 2.掌握空间向量数量积的计算方法及应用.
1.把下面的关系模式转化为E-R图 1)系(系号,系名,电话) 2)教师(工号,姓名,性别,年龄,系号)
1.2 子集、补集、全集习题课.
学习任务三 偏导数 结合一元函数的导数学习二元函数的偏导数是非常有用的. 要求了解二元函数的偏导数的定义, 掌握二元函数偏导数的计算.
2.2矩阵的代数运算.
上杭二中 曾庆华 上杭二中 曾庆华 上杭二中 曾庆华.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第五章关系数据库设计理论 5.1 数据依赖 5.2 范式 5.3 关系模式的规范化.
An Introduction to Database System
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
主讲教师 欧阳丹彤 吉林大学计算机科学与技术学院
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
数据库技术及应用 机械工业出版社 2019/7/24.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
1.2.2 充要条件 高二数学 选修 1-1 第一章 常用逻辑用语.
Presentation transcript:

第3章 关系数据库的规范化理论 本章导读: 关系规范化理论研究的是关系模式中各属性之间的依赖关系及其对关系模式性能的影响,探讨“好”的关系模式应该具备的性质,以及达到“好”的关系模式提供的方法。关系规范化理论提供了判断关系逻辑模式优劣的理论标准,是数据库设计的理论基础和关系模式算法工具,用于帮助数据库设计工程师预测和优化模式可能出现的问题。 知识要点: 存储异常 函数依赖 数据依赖的公理系统 规范化

3.1 存储异常

3.1 存储异常 根据以上分析,可以采用单一的数据库模式,即 Jxgl(学号,学生姓名,年龄,籍贯,职工编号,教师姓名,职称,课酬标准,课程编号,课程名称,学时,成绩) 对应这种单一的模式,在实际数据库,可能会存在如下几个问题: (1)数据冗余 如果某个学生选修多门课,则学生的信息会重复出现多次,造成数据冗余。同理多个学生选修一门课,则该门课程及授课的教师信息也会重复出现多次。 (2)更新异常 由于数据的冗余,当更新数据库中的数据时,系统需要付出很大的代价来维护数据库的完整性,否则会造成数据不一致。如更新某门课程的主讲教师,则要更新选修该门课程的所有元组,修改其中的主讲教师信息,如有疏忽,就会造成数据的不一致。 (3)插入异常 如果某个学生还没有选课,课程号为空,但是根据实体完整性规则——主属性不能为空,无法插入主属性取空值的学生信息,同理也不能插入主属性取空值的课程信息和教师信息。 (4)删除异常 如果删除某个教师信息,由于主属性不能为空,必然在删除教师信息的同时,连带删除学生和课程信息,从而删除掉了不应该删除的信息,但事实上学生和课程信息应该予以保留。同理删除学生信息,或者课程信息,也会存在这个问题。

3.1 存储异常 发生这些异常问题的根本原因:数据冗余,即没有考虑模式内部属性之间的内在相关性,简单地把无直接联系的属性放在一起构成关系模式,造成不必要的数据冗余。解办法就是将现有单一关系模式进行分解,改造成如下5个模式。 (1)学生(学号,姓名,年龄,籍贯)。 (2)教师(职工编号,姓名,职称,课酬标准)。 (3)课程(课程编号,课程名称,学时)。 (4)选课(学号,课程编号,成绩)。 (5)授课(职工编号,课程编号,课酬)。

3.2 函数依赖 设计好的数据库是否实用、高效,或者是否合理、正确,可依据关系数据库设计理论进行核查。关系数据库设计理论要包括3个方面:数据依赖、范式、模式设计方法,其中数据依赖起着核心作用,因为它是解决数据库的数据冗余和操作(插入、删除和更新)异常问题的关键所在。

3.2 函数依赖 1.数据依赖和函数依赖 关系模式中各属性之间相互依赖,相互制约的关系称为数据依赖。数据依赖是通过关系中属性间的值是否相等体现出来的数据间的相互关系,它是信息世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。数据冗余的产生和数据依赖有密切的关系。数据依赖一般分为函数依赖、多值依赖和连接依赖,其中最重要的是函数依赖。【定义3.1】 设有关系模式R(A1,A2,A3,…An),简记R(U),X和Y是属性集U的子集,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应,则称X函数决定Y,或Y函数依赖于X,记为X→Y。其中X称为这个函数依赖的决定属性集或决定因素,与之相对应,Y称为被决定因素。 函数依赖如同数学中函数一样,自变量x确定以后,相应的的函数值f(x)也就唯一确定了。对于函数依赖有以下几点具体说明: (1)函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的所有关系均要满足的约束条件; (2)函数依赖是语义范畴的概念,只能根据语义来确定函数依赖。例如:函数依赖“姓名→所在系”只有在学生不重名的情况下成立,如果允许重名,则“所在系”不能函数依赖于“姓名”了; (3)函数依赖是属性关联的客观存在和数据库设计者的人为强制相结合的产物; (4)若Y不函数依赖于X,记作X↛Y; (5)若X→Y,且Y→X,则记作X↔Y。 函数依赖根据其性质可分为完全函数依赖,部分函数依赖,传递函数依赖、平凡函数依赖和非平凡函数依赖等。

3.2 函数依赖 2.平凡函数依赖和非平凡函数依赖 (1)非平凡函数依赖 3.2 函数依赖 2.平凡函数依赖和非平凡函数依赖 (1)非平凡函数依赖 设有关系模式R(U),X和Y是属性集U的子集,如果对于R(U)的任意一个可能的关系r,若XY,且Y不属于X的子集,则称XY是非平凡函数依赖。 (2)平凡函数依赖 若XY,且Y属于X的子集,则称XY是平凡函数依赖。平凡函数依赖总是成立的,它不反映新的语义,没有特别说明,总是讨论非平凡函数依赖。 例如在关系模式R(学号,姓名,课程号,成绩)中,(学号,课程号)成绩是非平凡函数依赖,(学号,课程号)学号,(学号,课程号) 课程号是平凡函数依赖。

3.2 函数依赖 3.完全函数依赖和部分函数依赖 (1)完全函数依赖 3.2 函数依赖 3.完全函数依赖和部分函数依赖 (1)完全函数依赖 设有关系模式R(U),X和Y是属性集U的子集,如果对于R(U)的任意一个可能的关系r,若XY,且对X中的任何真子集Z,都有Z↛Y,则称Y完全函数依赖于X,记作:XfY。 例如,在关系模式R(教师编号,姓名,职称,课酬标准,课程号,课程名称,学时,课酬)中,因为教师编号↛课酬,且课程号↛课酬,所以(教师编号,课程号)f 课酬。 (2)部分函数依赖 设有关系模式R(U),X和Y是属性集U的子集,如果对于R(U)的任意一个可能的关系r,若XY,且X中存在一个真子集Z,满足ZY,则称Y部分函数依赖于X,记作:XP→Y。 例如,在关系模式R(教师编号,姓名,职称,课酬标准,课程号,课程名称,学时,课酬)中,因为教师编号→姓名,且课程号课程名称,所以(教师编号,课程号)P姓名,(教师编号,课程号)P课程名称。 换言之,在一个函数依赖关系中,只要决定属性集中不包含多余的属性,即从决定属性集中去掉任何一个属性,函数依赖关系都不成立,就是完全函数依赖,否则就是部分函数依赖。由此可知,决定属性集中只包含一个属性的函数依赖一定是完全函数依赖。

3.2 函数依赖 4.传递函数依赖 设有关系模式R(U),X、Y和Z是属性集U的子集,如果对于R(U)的任意一个可能的关系r,如果XY,YZ,且Y↛X,Z-X、Z-Y和Y-X均不为空,则称Z传递函数依赖于X,记作:Xt→Z。 例如,在关系模式R(教师编号,姓名,职称,课酬标准,课程号,课程名称,学时,课酬)中,因为教师编号→职称,职称课酬标准,职称↛教师编号,所以教师编号t课酬标准是课酬标准传递函数依赖教师编号。

3.3 规范化 数据依赖的公理系统是模式分解算法的理论基础,函数依赖的一个有效而完备的公理系统是Armstrong系统,它是Armstrong于1974年提出来的一套从函数依赖推导逻辑蕴含的推理规则。 1.Armstrong公理系统 【定义3.2】 设R是一个具有属性集合U的关系模式,F是R上函数依赖集合,对于任何一组满足函数依赖F的关系r,若函数依赖X→Y都成立(即r中任意两元组t,s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴含X→Y。 为了求得给定关系模式的码,从一组函数依赖中求得其蕴含的函数依赖,就需要使用Armstrong公理系统。 Armstrong公理系统对关系模式R<U,F>来说有以下的推理规则: A1. 自反律(平凡函数依赖):若Y⊆X⊆U,则X→Y为F所蕴含。 A2. 增广律:若X→Y为F所蕴含,且Z⊆U,则XZ→YZ为F所蕴含。 A3. 传递律:若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。 注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。 根据A1、A2、A3这3条推理规则可以得到下面3条很有用的导出规则: 合并规则:由X→Y,X→Z,有X→YZ(由A2、A3导出)。 伪传递规则:由X→Y,WY→Z,有XW→Z(由A2、A3导出)。 分解规则:由X→Y及ZY,有X→Z(由A1、A3导出)。

3.3 规范化 【引理3.1】 X→A1A2…Ak成立的充分必要条件是X→Ai成立(i=l,2,…,k)。 3.3 规范化 【引理3.1】 X→A1A2…Ak成立的充分必要条件是X→Ai成立(i=l,2,…,k)。 【定义3.3】 设F为属性集U上的一组函数依赖,X⊆U,XF+={A|X→A能由F根据Armstrong公理导出},X F+称为属性集X关于函数依赖集F的闭包。 【引理3.2】 设F为属性集U上的一组函数依赖,X、Y⊆U,X→Y能由F根据Armstrong公理导出的充分必要条件是Y⊆X F+。 于是,判定X→Y是否能由F根据Armstrong公理导出的问题,就转化为求出X F+,判定Y是否为X F+的子集的问题。这个问题可以使用算法3.1解决。

2.求解函数依赖集的闭包 【算法3.1】 求属性集X(X⊆U)关于U上的函数依赖集F的闭包X F+。 输入:X,F。 输出:X F+。 步骤: (1)令X(0)=X,i=0; (2)求B,这里B={A|(V)(W)(V→W∈F∧V⊆X(i)∧A∈W)}; 注意:逐一的扫描F集合中的各函数依赖,找决定因素是X(i)的子集的函数依赖,用找到的函数依赖的依赖因素A组成集合B。 (3)X(i+1)=B∪X(i); (4)判断X(i+1)=X(i); (5)若相等或X(i+1)=U,则X(i+1)就是XF+,算法终止; (6)若否,则i=i+l,返回第(2)步。

【例3-1】 已知关系模式R<U, F>,其中U={A,B,C,D,E},F={AB→C,B→D,C→E,EC→B,AC→B},求(AB)F+。 解:设X(0)=AB (1)计算X(1):逐一扫描F集合中各个函数依赖,找左部为A、B或AB的函数依赖,得到两个:AB→C,B→D。于是,X(1)=AB∪CD=ABCD。 (2)因为X(0)≠X(1),所以再找出左部为ABCD的子集的那些函数依赖,又得到AB→C,B→D,C→E,AC→B。于是,X(2)=X(1)∪BCDE=ABCDE。 (3)因为X(2)=U,算法终止。 得到结果:(AB)F+=ABCDE。

3.最小依赖集 从蕴含的概念出发,又引出了最小依赖集的概念。每一个函数依赖集F均等价于一个极小函数依赖集Fm,此Fm称为F的最小依赖集。求得最小函数依赖集是模式分解的基础。下面就给出求F的最小依赖集的算法。 【算法3.2】 分3步对F进行“极小化处理”,找出F的一个最小依赖集。 (1)逐一检查F中各函数依赖FDi:X→Y。 若Y=A1A2…Ak,k>2,则用{X→Aj|j=1,2,…,k}来取代X→Y。 (2)逐一检查F中各函数依赖FDi:X→A,令G=F-{X→A},若A∈XG+,则从F中去掉此函数依赖。 (3)逐一取出F中各函数依赖FDi:X→A,设X=B1B2…Bm,逐一考察Bi(i=l,2,…,m),若A∈(X-Bi)F+,则以X-Bi取代X。 最后剩下的F就一定是极小依赖集。

【例3-2】 F={AB→C, B→D, C→E, EC→B, AC→B},求其极小函数依赖集。 解: 第一步:先分解右端,F不变。 F={AB→C,B→D,C→E,EC→B,AC→B} 第二步: (1)去掉AB→C,得到G={B→D, C→E, EC→B, AC→B}, 求ABG+,AB G+中不包含C,不可以去掉AB→C。F不变。 (2)去掉B→D,得到G={AB→C,C→E,EC→B,AC→B}, 求B G+,B G+中不包含D,不可以去掉B→D。F不变。 (3)去掉C→E,得到G={AB→C,B→D,EC→B,AC→B}, 求CG+,CG+中不包含E,不可以去掉C→E。F不变。 (4)去掉EC→B,得到G={AB→C,B→D,C→E,AC→B}, 求ECG+,ECG+中不包含B,不可以去掉EC→B。F不变。 (5)去掉AC→B,得到G={AB→C,B→D,C→E,EC→B}, 求ACG+,ACG+中包含B,可以去掉AC→B。 F=G= {AB→C,B→D,C→E,EC→B}。 第三步: (1)判断AB→C: 求AF+=A,不包含C,不能去掉B。 求BF+=BD,不包含C,不能去掉A。 (2)判断EC→B: 求EF+=E,不包含B,不能去掉C。 求CF+=BCDE,包含B,可以去掉E。 F变为F= {AB→C,B→D,C→E,C→B} 最终得到的就是F的最小函数依赖集。 注意:F的最小函数依赖集不一定是唯一的,它与对各函数依赖FDi及X→A中X各属性的处理顺序有关。

3.4 规范化 设计、验证和修改关系模式,首要的问题就是将关系模式中各属性之间的关系分析清楚。在关系数据库模式的设计过程中,为了避免由数据依赖引起的数据冗余和插入、删除和更新异常问题,必须对关系模式进行合理分解,以消除数据依赖中的不合适部分。也就是说,通过投影运算,将低一级范式的关系模式转换成若干个高一级范式的关系模式的集合,这个过程就是关系的规范化。关系规范化是数据库设计的手段,不是目的。 1.范式概念 在关系规范化理论中,将满足特定要求的约束条件划分成若干等级标准,这些标准统称为范式(Normal Formula,简写为NF)。 通常,按照属性间的数据依赖程度的高低来区分,将关系规范化等级划分为1NF、2NF、3NF、4NF、5NF。5类范式的条件一个比一个严格,1NF的规范化程度最低吗,而5NF的规范化程度最高,其中3NF和BCNF最重要。各范式之间存在低级包含高级的包含关系,即1NF⊃2NF⊃3NF⊃4NF⊃5NF。范式的级别越高,分解就越细,所得关系的数据冗余就越小,异常情况也就越少。但是,在减少关系数据冗余和消除异常的同时,也加大了系统对数据检索的开销,降低了数据检索的效率。 从1971年E.F.Codd提出了关系规范化理论开始,人们对数据库模式的规范化问题进行了长期的研究,并已经取得了很大进展。关系设计的一般原则包括: (1)数据冗余量小; (2)对关系的更新、插入、删除不要出现异常问题; (3)尽量能如实反映现实世界的实际情况,而且又易懂。

3.4 规范化 2.范式类型 (1)第一范式(1NF) 对于给定的关系R,如果R中的所有行、列交点处的值都是不可再分的数据项,则称关系R属于第一范式,记作:R∈1NF。 在关系数据库中,1NF是对关系模式的最低要求,它是由关系的基本性质决定的,任何一个关系模式都必须遵守,不满足第一范式的关系模式不能称为关系数据库。

如果关系R∈1NF,并且R的每一个非主属性都完全函数依赖于R的候选键,则称R属于第二范式,记作:R∈2NF。 换言之,不存在部分函数依赖的第一范式称为第二范式。显然,主码只包含一个属性的关系模式,如果属于属于1NF,那么一定属于2NF。 例如,在关系模式R(教师编号,姓名,性别,职称,课酬标准,课程号,课程名称,学时,课酬)中,由属性组(教师编号,课程号)构成一个关键字,姓名,职称,课酬标准,课程名称,学时和课酬属性为非主属性。只有课酬对关键字完全函数依赖,而其它主非属性仅是部分函数依赖主关键字,所以R∉2NF。 由1NF到2NF的规范化就是为了消除非主属性对主关键字的部分函数依赖。具体做法是:采用投影运算方法,将部分函数依赖的属性和完全函数依赖的属性分离,分别组成不同的关系模式,向高一级范式转化,模式分解如下: 教师(教师编号,姓名,性别,职称,课酬标准); 课程(课程号,课程名称,学时); 课酬(教师编号,课程号,课酬)。 其中,教师的主键为教师编号,课程的主键为课程号,课酬的主键为(教师编号,课程号),它们分别为具有以下的函数依赖: 教师:教师编号f姓名,教师编号f性别,教师编号f职称,教师编号f课酬标准; 课程:课程编号f课程名称,课程编号f学时; 课酬:(教师编号,课程号)f课酬。 分解后的三个关系模式中不存在非主属性对主关键字的部分函数依赖,故属于第二范式。

3.4 规范化 (3)第三范式(3NF) 如果关系R∈2NF,并且R的每一个非主属性都不传递函数依赖于R的任何候选键,则称R属于第三范式,记作:R∈3NF。 换言之,不存在部分函数依赖和传递函数以来的第一范式称为第三范式。 考查上面分解的三个关系中: 关系模式“课酬”中非主属性课酬既不部分函数依赖于关键字,也不传递函数于关键字,所以课酬∈3NF。同理关系模式“课程”中非主属性课程名称和学时既不部分函数依赖于关键字,也不传递函数于关键字,所以课程∈3NF。但是关系模式“教师”中,由于,教师编号→职称,职称课酬标准,职称↛教师编号,所以教师编号t课酬标准。因此,教师∉3NF。 同样,为了消除非主属性对主关键字的传递依赖,也可以通过投影运算方法将关系模式教师进行分解,得到如下两个关系模式: 教师(教师编号,姓名,性别) 职称(职称编号,职称,课酬标准) 分解后的关系模式中不存在非主属性对关键字的传递函数依赖,故属于第三范式。 3NF只是规定了非主属性对主键的数据依赖关系,但没有限制主属性对主键的数据依赖关系。如果存在主属性对主键的部分函数依赖和传递函数依赖,同样会出现数据冗余、操作异常问题。在实际应用中,一般达到了3NF的关系就可以认为是较为优化的关系。

(4)BCNF BCNF是3NF范式的改进形式,他建立在1NF范式的基础上。如果关系R∈1NF,并且R的每一个属性都不传递函数依赖于R的候选键,则称R属于BCNF范式,记作:R∈BCNF。 从BCNF定义可知,一个满足BCNF的关系模式存在如下关系: ①所有非主属性对键是完全函数依赖; ②所有主属性对不包含它的键是完全函数依赖; ③没有属性完全函数依赖于非键的任何属性组。 从函数依赖的角度考虑,一个关系模式如果达到了BCNF,数据冗余和操作(插入、删除和更新)异常问题就已经彻底消除了。不过数据依赖除了函数依赖以外,还有多值依赖和连接依赖,即使达到BCNF范式的关系模式仍有可能存在冗余等问题,这也是范式理论存在4NF、5NF等范式的原因。

3.4 规范化 【例3-3】 关系模式R<U,F>,U={A,B,C,D,E},函数依赖集F={AB→CE,E→AB,C→D},试问R最高属于第几范式? (1)求函数依赖集中决定因素是否为候选码,即求ABF+、E F+、C F+。得到:AB F+=U、E F+=U,求A F+和B F+,判断是否为U,A F+≠U,B F+≠U,所以AB和E是候选码。 (2)由候选码判断主属性为A、B、E,非主属性为C和D。 (3)判断非主属性对候选码有没有部分函数依赖。 候选码E只有一个属性,不可分,所以不必判断。 判断候选码AB,决定因素中没有A或B,所以不存在非主属性对候选码的部分函数依赖,达到2NF。 (4)判断非主属性对候选码有没有传递函数依赖。 在函数依赖集中有AB→CE、C→D,所以AB→C、C→D,存在非主属性D对候选码AB的传递函数依赖,只能达到2NF。 得到结论:关系模式R只能达到第二范式。 (5)判断非主属性对候选码有没有传递函数依赖。

2.5.3 规范化 3.模式分解 关系规范化实质就是模式分解,按照一定的原则,将关系模式不断地分解为若干个关系模式的集合,通过模式分解使关系模式逐步达到较高范式。任何一个非规范化的关系模式经过分解,都可以达到3NF,但不一定要达到BCNF,模式分解的基本思想是从低到高,逐步规范,权衡利弊,适可而止。 模式分解步骤如图3-1所示。

模式分解步骤如图2-1所示。 非规范化关系 ↓ 将组合属性分解为不可再分的属性 1NF 消除非主属性对键的部分函数依赖 2NF 消除非主属性对键的传递函数依赖 3NF 消除主属性对键的部分函数和传递函数依赖 BCNF 消除非平凡且非函数依赖的多值依赖 4NF

3.4 规范化 实际应用中,数据库设计人员应根据具体情况灵活掌握,不能在消除操作异常的情况下,产生其它新的问题。关系模式的分解满足两个基本原则: (1)关系分解后必须具有无损连接性。所谓无损连接是指通过分解后的关系进行某种连接运算,能够还原出分解前的关系。 设关系模式R<U,F>被分解为若干个关系模式R1(Ul,F1),R2(U2,F2),…,Rn(Un,Fn)(其中U=U1∪U2∪…∪Un,且不存在Ui⊆Uj,Ri为R在Ui上的投影),若R与R1,R2,…,Rn自然连接的结果相等,则称关系模式R的这个分解具有无损连接性。 (2)关系分解后要保持函数依赖。保持函数依赖是指分解过程不能破坏或丢失原来关系中存在的函数依赖。 设关系模式R<U,F>被分解为若干个关系模式R1(Ul,F1),R2(U2,F2),…,Rn(Un,Fn)(其中U=U1∪U2∪…∪Un,且不存在Ui⊆Uj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的。 如果一个分解具有无损连接,则它能够保证不丢失信息。如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。

本章小结 本章主要讲述了关系数据库的基本概念,探讨了关系的数学定义、关系代数、关系演算、函数依赖、范式等关系数据库的基本理论。其中关系代数和关系规范化是本章的中的重点。