内容正文:
关系数据库规范化理论
第4章
目录
01
关系规范化
的引入
02
函数依赖
03
函数依赖的
公理系统
04
关系模式的
规范化
05
多值依赖
与4NF
06
关系模式分解
及规范化步骤
本章主要内容
通过第2、3章的学习,学生可以完成数据库关系模型的设计及实现。每种关系模型对应一种关系模式,关系模式的好坏直接决定数据的完整性、准确性、一致性和操作性。然而,是不是所有满足关系模型的关系模式设计都是“最好”的设计?不同的关系模式设计会出现什么样的问题?有没有什么理论标准来评价或者优化该关系模式,使其成为“更好”的关系模式设计?
本章重点内容是学习如何针对具体的应用项目,从概念模型设计出发,通过不断优化,实现一个“较好”的数据库关系模式设计。其内容包括关系模式设计存在的常见问题,关系模式中属性间依赖关系及函数依赖的公理系统理论,最小函数依赖集及其求解算法,范式及其转换步骤和多属性之间的依赖关系。
关系规范化的引入
第4章
01
4.1.1 规范化问题的提出
1.不合理的关系模式存在的异常问题
数据库系统设计的关键是关系模式设计,关系模式设计的好坏会直接影响数据库的性能,不好的关系模式设计可能会导致系统库信息庞大,出现数据删除、更新及插入异常问题。
下面结合前面介绍的“教学管理系统”,设计一个教学管理的关系模式,并判断其关系模式设计的好坏,分析该关系模式存在什么样的问题。
4.1.1 规范化问题的提出
【例4.1】假设有一个关于教学管理的关系模式TC(U),属性集U包括SNo、SN、Sex、DN、CN、TN、Score。其中,SNo为学生学号,SN为学生姓名,Sex为学生性别,DN为学生所在院系名,CN为学生所选的课程名称,TN为任课教师姓名,Score为学生选修课程的成绩。根据常规语义,分析TC关系模式的主键,并分析如果给TC关系模式添加具体数据,是否存在问题。如果存在问题,存在什么样的问题?
解:根据语义分析,教学管理关系的关系模式TC为:
TC(SNo,SN,Sex,DN,CN,TN,Score)
经分析,只有SNo、CN可以唯一地决定其他属性,即该关系模式的主键为(SNo,CN)。
4.1.1 规范化问题的提出
下面为该关系模式TC添加部分具体数据如表4.1所示。
表4.1 TC表的部分数据
元组
三个元组
数据冗余
插入异常
删除异常
更新异常
根本原因:属性间存在着数据依赖关系
4.1.1 规范化问题的提出
2.一个好的关系模式应该具备以下四个条件:
(1)尽可能少的数据冗余
(2)没有插入异常
(3)没有删除异常
(4)没有更新异常
4.1.2 问题解决的方法
数据依赖(Data Independence):同一个关系模式中各个属性之间存在某种依赖关系。
由于关系模式中各个属性间的数据依赖处理不合理,就会产生大量的数据冗余。为了降低数据冗余,解决数据间的依赖关系,常常通过对关系模式进行分解的方式改善关系模式设计,降低数据冗余。
如在例4.1中,教学关系模式TC可以分解为三个关系模式:
学生基本信息S(SNo,SN,Sex,DN)
课程信息C(CNo,CN,TN)
学生成绩信息SC(SNo,CNo,Score)
4.1.2 问题解决的方法
模式分解
4.1.3 关系模式规范化的概念
在一个关系模式中,属性间的关系表现为一个属性子集对另一个属性子集的“依赖”关系,其中依赖关系可以分为“一对一”“一对多”和“多对一”的依赖关系。
“一对一”的依赖关系是最简单的关系;
“多对一”的依赖关系是目前数据库设计中最为常见的,我们称之为“函数依赖”;
“一对一”的依赖关系的研究相当复杂,到目前为止,人们认识到两种属性之间存在有用的“一对多”是多值依赖关系和连接依赖关系。
针对以上3种依赖关系在不同层面上的具体要求,人们又将属性之间的这些关联分为若干等级,这就形成了所谓的关系的规范化(Relation Normalization)。
函数依赖
第4章
02
4.2.1 函数依赖的定义
关系模式中的各属性之间相互依赖、相互制约的联系称为数据依赖。
多值依赖
函数依赖
函数依赖(FD,Functional Dependency)是关系模式中属性之间的一种逻辑依赖关系。
例如:SCD (SNo,SN,Age,Dept,MN,CNo,Score)
SNO
SN,Age,Dept
一个学生
SNo (SN,Age,Dept)
(SN,Age,Dept)函数依赖于SNo
4.2.1 函数依赖的定义
定义:设R(U,F)是一个关系模式,U是R的属性集合,F是由U上函数依赖所构成的集合,X和Y是U的子集。对于R(U)的任意一个可能关系r,r中不存在任意两个元组在X上的属性值相同,且在Y上的属性值不同,则称“X