第四章关系数据库的规范化理论
本章内容
1、问题的提出 2、函数依赖 3、 关系范式 4、 函数依赖理论 5、 关系分解原则
4.1 问题的提出例:教学关系--S1实例学号 011121 011132 020923 021206 021511 姓名 王强 李琳 刘过 张克 吴雯 年龄 19 18 19 20 18 性别 男 女 男 男 女 系名 计算机 信息 信息 数学 计算机 系主任 王金喜 刘成 刘成 刘国民 王金喜 课程名 操作系统 数据结构 C语言 高等数学 软件工程 成绩 87 90 97 88 76
出现的问题:1、数据冗余 2、修改异常 3、插入异常 4、删除异常
出现问题的原因:有太多相互之间相联系的属性保存在了同一个关系模 式中,这就造成因一种信息被捆绑在其他信息上而产 生的信息之间相互依附存储的问题——数据依赖
解决问题的方法:将相互之间有太多依赖关系的属性分别存放在不同的关系中。
分解后的三个关系姓名 王强 年龄 19 性别 男 系名 计算机 系名 计算机 信息 系主任 王金喜 刘成 学号 011121 011132 020923 021206 021511 课程名 操作系统 数据结构 C语言 高等数学 软件工程 成绩 87 90 97 88 76
学号 011121
011132020923 021206 021511
李琳刘过 张克 吴雯
1819 20 18
女男 男 女
信息信息 数学 计算机
信息数学 计算机
刘成刘国民 王金喜
学生 S1
系 S2
选修 S3
4.2关系模式的函数依赖
4.2.1 函数依赖的相关定义(1)函数依赖 定义4.1 设一个关系为R(U),X、Y是属性集U的子集。若对于元组 中X上的每个值都有Y上的一个唯一值与之对应, 则称X和Y具有函数 依赖关系,并称X函数决定Y,或称Y函数依赖于X,记作X Y,称X为 决定因素。(同书上的概念p106)
例1:设一个职工关系为(职工号,姓名,性别,年龄,职称) 职工号为决该函数依赖的决定因素 例2: U=(学号,姓名,性别,班级,系,课程号,成绩) 则其函数依赖情况是: F={学号 姓名,学号 性别,学号 班级,学号 系,班级 系, (学号,课程号) 成绩 } 注意:几点说明
Y X
4.2.2 函数依赖的类型
(1)平凡函数依赖与非平凡函数依赖 定义4.3 对于函数依赖X Y,如果满足 ,则称 此函数依赖为非平凡函数依赖, 否则称之为平凡函数 依赖。 例如:学号 姓名,学号 性别,(学号,课程号) 成绩等都是非平凡函数依赖。
例如: (学号,课程号) 学号,(学号,课程号) 课程号是平凡函数依赖 对于任一关系模式,平凡函数依赖必然是成立的。 通常讨论的都是非平凡函数依赖。
X'
(2)完全函数依赖与部分函数依赖定义4.4 对于函数依赖X Y,若Y函数依赖于X,但不依赖于X的
任
意一个真子集 ,则称Y完全函数依赖于X。记作:
例:(学号,课程号)
成绩
定义4.4 若Y函数依赖于X,但并非完全依赖于X,则称 Y部分函数依赖于X,或称Y函数依赖于X的某个真子集。记作: 例:(学号,课程号) 姓名 (学号,课程号) 姓名,而对于每个学生都有唯一的学号值,所 以 学号 姓名。因此(学号,课程号) 姓名 是部分函数依赖。
(3)传递函数依赖 定义4.5 如果X Y,( ), , Y Z,则称Z 传递依赖于X。记作: 例:学号 班级,班级 系,学号 系 例:有以下班级关系: 班级(班号,专业名,系名,人数,入学年份) 其中,主码是班号。 经分析,有:班号 专业名,班号 人数,班号 入 学年份,专业名 系名。 又因为:班号 专业名,专业名 班号,专业名 系名,所以有:班号 系名。
4.2.3 关键字的相关定义
1、关键字 定义:在关系模式R(U)中,若 , 且满足 ,则称K为R的候选键或候 选关键字。 2、候选关键字、主关键字
3、主属性、非主属性、主属性集、非主 属性集
4.2.4 函数依赖的推理规则
1、函数依赖的逻辑蕴涵 2、Armstrong 公理系统 3、函数依赖推理规则的完备性 4、闭包的计算
4.2 函数依赖理论一个关系模式可能存在很多个函数依赖,它们构 成了该关系模式的函数依赖集。 该集合是很大的,如果仅依靠语义分析的方法去找 出一个关系模式的所有函数依赖是一件很不 容易 的事情,实际上也没有必要。 1,逻辑蕴涵:用推理的方法,从一个已知的函数依 赖集去推导出另一个函数依赖集,这样两个函数 依赖集之间的互为因果关系称之为逻辑蕴涵。 因此,我们给出一个函数依赖集闭包的定义。
定义:所有被一个已知函数依赖集(F) 逻辑蕴涵的那些函数依赖的集合称为F的 闭包。 P109 如何由一个已知函数依赖集找出它的闭 包呢?1974年,Armstrong提出了用 推理方法计算闭包的一套规则,具体包 括三个推理规则和三条推论,及一定的 算法。
函数依赖的一些常用规则: 自反性: 增广性 传递性 合并规则 分解规则 伪传递性
P109—p110
实际上计算推导出函数依赖集的闭包是 一件非常繁琐复杂的事情,所以引入的 属性集闭包的概念。
定义4.9 设F是属性集合U上的一个函数依赖集, X U,称X F根据Armstrong 公理导出 } F {A | A U, X A能由
为属性集X关于F的闭包。 P110 引理4.2 设F是属性集U上的函数依赖集,X,Y是 U的子集,则X Y能由F根据Armstrong公理导出 的充分必要 …… 此处隐藏:333字,全部文档内容请下载后查看。喜欢就下载吧 ……