《第4章 关系数据库设计理论》由会员分享,可在线阅读,更多相关《第4章 关系数据库设计理论(73页珍藏版)》请在金锄头文库上搜索。
1、第4章关系数据库设计理论 本章要点关系数据库设计理论主要包括数据依赖 范式及规范化方法这三部分内容 关系模式中数据依赖问题的存在 可能会导致库中数据冗余 插入异常 删除异常 修改复杂等问题 规范化模式设计方法使用范式这一概念来定义关系模式所符合的不同级别的要求 较低级别范式的关系模式 经模式分解可转换为若干符合较高级别范式要求的关系模式 本章的重点是函数依赖相关概念及基于函数依赖的范式及其判定 关系模式的表示 定义关系的描述称为关系模式 RelationSchema 一个关系模式应当是一个五元组 它可以形式化地表示为 R U D dom F 其中R为关系名 U为组成该关系的属性名集合 D为属性
2、组U中属性所来自的域的集合 dom为属性向域的映象集合 F为属性间数据的依赖关系集合 关系模式通常可以简记为 R A1 A2 An 或R U 其中R为关系名 A1 A2 An为属性名 而域名及属性向域的映象常常直接说明为属性的类型 长度 4 1问题的提出 如何使用关系模型设计关系数据库 也就是面对一个现实问题 如何选择一个比较好的关系模式的集合 其中每个关系模式又由哪些属性组成 这就是数据库逻辑设计主要关心的问题 4 1 1规范化理论概述 关系数据库设计理论主要包括三个方面的内容 函数依赖 范式 NormalForm 和模式设计 其中函数依赖起着核心作用 是模式分解和模式设计的基础 范式是模式
3、分解的标准 关系数据库设计时要遵循一定的规范化理论 只有这样才可能设计出一个较好的数据库来 前面已经讲过关系数据库设计的关键所在是关系数据库模式的设计 也就是关系模式的设计 那么到底什么是好的关系模式呢 某些不好的关系模式可能导致哪些问题 下面通过例子对这些问题进行分析 4 1 2不合理的关系模式存在的问题 例1 要求设计学生 课程数据库 其关系模式SDC如下 SDC SNO SN AGE DEPT MN CNO SCORE 根据实际情况 这些数据有如下语义规定 1 一个系有若干个学生 但一个学生只属于一个系 2 一个系只有一名系主任 但一个系主任可以同时兼几个系的系主任 3 一个学生可以选修
4、多门功课 每门课程可被若干个学生选修 4 每个学生学习每门课程有一个成绩 4 1 2不合理的关系模式存在的问题 根据上述语义规定并分析以上关系中的数据 我们可以看出 SNO CNO 属性的组合能唯一标识一个元组 每行中SNO与CNO的组合均是不同的 所以 SNO CNO 是该关系模式的主关系键 即主键 又名主码等 但在进行数据库的操作时 会出现以下几方面的问题 数据冗余 2 插入异常 3 删除异常 4 修改异常因此 把不好的关系数据库模式转变为较好的关系数据库模式 即关系的规范化 4 1 2不合理的关系模式存在的问题 示例数据主码是 SNO CNO 4 1 2不合理的关系模式存在的问题 数据冗
5、余总字节数 5 8 4 8 8 3 4 9系名和系负责人重复9次学号和姓名重复3次课程名重复3次 4 1 2不合理的关系模式存在的问题 插入异常计算机系成立 尚未招生 无法插入 在学生表存储数据必须保证其实体完整性 主属性不能为空 故学号和课程名不能为空 招生完毕 但学生尚未选课 无法插入 学号是有了 但学生尚未选修 所以课程名不知道求学校有多少系 结果不正确 在学生表中还未有计算机系含在内问计算机负责人是谁 不知道 计算机系不存在由于信息不全 导致应该存储的数据无法存储 4 1 2不合理的关系模式存在的问题 删除异常计算机系06级学生毕业 删除所有该年级学生 由于计算机系只有06级学生 被删
6、除后 连带计算机系负责人信息一起被删除 问学校有几个系 问计算机系负责人是谁 若s2学生取消三门选修课程 则学要删除对该学生对应的三条记录 该学生记录信息也因此被删除这个时候如果问问计算机系有多少学生 删除元组时导致额外信息的丢失 4 1 2不合理的关系模式存在的问题 修改异常 更新异常 计算机系负责人改为张文瑞需要修改9条记录某学生改名 则该学生的所有记录都要逐一修改SN的值由于数据重复存储导致更新操作复杂 4 1 2不合理的关系模式存在的问题 上述问题的根本原因学生关系模式的规范化程度较低解决办法通过规范化理论对其进行规范化 可以逐步降低和消除上述问题 4 2规范化 本节将讨论下述内容 首
7、先讨论一个关系属性间不同的依赖情况 讨论如何根据属性间的依赖情况来判定关系是否具有某些不合适的性质 通常按属性间依赖情况来区分关系规范化的程度为第一范式 第二范式 第三范式 BC范式和第四范式等 然后直观地描述如何将具有不合适性质的关系转换为更合适的形式 4 2 1函数依赖 函数依赖定义4 1设关系模式R U F U是属性全集 F是U上的函数依赖集 X和Y是U的子集 如果对于R U 的任意一个可能的关系r 对于X的每一个具体值 Y都有唯一的具体的值与之对应 则称X函数决定Y 或Y函数依赖于X 记X Y 我们称X为决定因素 Y为依赖因素 当Y不函数依赖于X时 记作 XY 当X Y且Y X时 则记
8、作 XY 函数依赖有几点需要说明 1 平凡的函数依赖与非平凡的函数依赖当属性集Y是属性集X的子集时 则必然存在着函数依赖X Y 这种类型的函数依赖称为平凡的函数依赖 如果Y不是X子集 则称X Y为非平凡的函数依赖 若不特别声明 我们讨论的都是非平凡的函数依赖 4 2 1函数依赖 2 函数依赖与属性间的联系类型有关 在一个关系模式中 如果属性X与Y有1 1联系时 则存在函数依赖X Y Y X 即XY 例如 当学生没有重名时 SNOSN 如果属性X与Y有m 1的联系时 则只存在函数依赖X Y 例如 SNO与AGE DEPT之间均为m 1联系 所以有SNO AGE SNO DEPT 如果属性X与Y有
9、m n的联系时 则X与Y之间不存在任何函数依赖关系 例如 一个学生可以选修多门课程 一门课程又可以为多个学生选修 所以SNO与CNO之间不存在函数依赖关系 4 2 1函数依赖 3 函数依赖的语义范畴的概念我们只能根据语义来确定一个函数依赖 而不能按照其形式化定义来证明一个函数依赖是否成立 4 函数依赖关系的存在与时间无关 5 函数依赖可以保证关系分解的无损连接性 函数依赖的基本性质 1 投影性根据平凡的函数依赖的定义可知 一组属性函数决定它的所以子集 例如 在关系SDC中 SNO CNO SNO和 SNO CNO CNO 说明 投影性产生的是平凡的函数依赖 需要时也能使用的 4 2 1函数依赖
10、 2 扩张性若X Y且W Z 则 X W Y Z 例如 SNO SN AGE DEPT MN 则有 SNO DEPT SN AGE MN 说明 扩张性实现了两函数依赖决定因素与被决定因素的分别合并作用 3 合并性若X Y且X Z则必有X Y Z 例如 在关系SDC中 SNO SN AGE SNO DEPT 则有SNO SN AGE DEPT 说明 决定因素相同的两函数依赖被决定因素的可以合并 4 2 1函数依赖 4 分解性若X Y Z 则X Y且X Z 很显然 分解性为合并性的逆过程 说明 决定因素能决定全部 当然也能决定全部中的部分 由合并性和分解性 很容易得到以下事实 X A1 A2 An
11、成立的充分必要条件是X Ai i 1 2 n 成立 4 2 1函数依赖 3 完全 部分函数依赖和传递 非传递函数依赖定义4 2设有关系模式R U U是属性全集 X和Y是U的子集 X Y 并且对于X的任何一个真子集X 都有X Y 则称Y对X完全函数依赖 FullFunctionalDependency 记作XfY 如果对X的某个真子集X 有X Y 则称Y对X部分函数依赖 PartialFunctionalDependency 记作XpY 4 2 1函数依赖 定义4 3设有关系模式R U U是属性全集 X Y Z是U的子集 若X Y 但YX 而Y Z YX 则称Z对X传递函数依赖 Transiti
12、veFunctionalDependency 记作 XtZ注意 如果有Y X 则XY 这时称Z对X直接函数依赖 而不是传递函数依赖 综上所述 函数依赖可以有不同的分类 即有如下之分 平凡的函数依赖与非平凡的函数依赖 完全函数依赖与部分函数依赖 传递函数依赖与非传递函数依赖 即直接函数依赖 这些是比较重要的概念 它们将在关系模式的规范化进程中作为准则的主要内容而被使用到 4 2 2码 定义4 4设K为R U F 中的属性或属性集合 若KfU 则K为R的候选码 或候选关键字或候选键 Candidatekey 若候选码多于一个 则选定其中的一个为主码 或称主键 Primarykey 包含在任何一个候
13、选码中的属性 叫做主属性 Primeattribute 不包含在任何候选码中的属性称为非主属性 Nonprimeattribute 或非码属性 Non keyattribute 在最简单的情况 单个属性是码 最极端的情况 整个属性组U是码 称为全码 All key 4 2 2码 已知关系模式R U F 如何来找出R的所有候选键呢 方法的步骤为 1 查看函数依赖集F中的每个形如Xi Yi的 i 1 n 函数依赖关系 看哪些属性在所有Yi i 1 n 中没有出现过 设没出现过的属性集为P P U Y1 Y2 Yn 则当P 表示空集 时 转4 当P 时 转2 2 根据候选键的定义 候选键中应必含P
14、因为没有其它属性能决定P 考察P 若有PfU成立 则P为候选键 并且候选键只有一个P 考虑一下为什么呢 转5结束 若PfU不成立 则转3 4 2 2码 3 P可以分别与 U P 中的每一个属性合并 形成P1 P2 Pm 再分别判断PjfU j 1 m 是否成立 能成立则找到了一个候选键 没有则放弃 合并一个属性若不能找到或不能找全候选键 可进一步考虑P与 U P 中的两个 或三个 四个 属性的所有组合分别进行合并 继续判断分别合并后的各属性组对U的完全函数决定情况 如此直到找出R的所有候选键为止 转5结束 需要提醒的是 如若属性组K已有KfU 则完全不必去考察含K的其它属性组合了 显然它们都不
15、可能再是候选键了 4 2 2码 4 若P 则可以先考察Xi Yi i 1 n 中的单个Xi 判断是否有XifU 若成立则Xi为候选键 剩下不是候选键的Xi 可以考察它们两个或多个的组合 查看其是否能完全函数决定U 从而找出其它还有可能的候选键 转5结束 5 本方法结束 定义4 5关系模式R中属性或属性组X并非R的主码 但X是另外一个关系模式S的主码 则称X是R的外部码或外部关系键 ForeignKey 也称外码 4 2 3范式 规范化的基本思想是消除关系模式中的数据冗余 消除数据依赖中的不合适的部分 解决数据插入 删除与修改时发生的异常现象 这就要求关系数据库设计出来的关系模式要满足一定的条件
16、 我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同的标准或准则称为范式 NormalForm 满足最低要求的叫第一范式 简称1NF 当把某范式看成是满足该范式的所有关系模式的集合时 各个范式之间的集合关系可以表示为 一个低一级范式的关系模式 通过模式分解可以转换为若干个高一级范式的关系模式的集合 这种过程就叫规范化 4 2 4第一范式 第一范式 FirstNormalForm 是最基本的规范化形式 即关系中每个属性都是不可再分的简单项 定义4 6如果关系模式R所有的属性均为简单属性 即每个属性都是不可再分的 则称R属于第一范式 简称1NF 记作R 1NF 在关系数据库系统中只讨论规范化的关系 凡是非规范化的关系模式必须转化成规范化的关系 在非规范化的关系中去掉组合项就能转化成规范化的关系 每个规范化的关系都是属于1NF 4 2 5第二范式 1 第二范式的定义定义4 7如果关系模式R 1NF R U F 中的所有非主属性都完全函数依赖于任意一个候选关键字 则称关系R是属于第二范式 SecondNormalForm 简称2NF 记作R 2NF 从定义可知 满足第二范式的关系模