设有关系模式R(U),X→Y是R的一个函数依赖,且对于任何X′?X ,X′→Y都不成立,则称X→Y是一个完全函数依赖。
反之,如果X′→Y成立,则称X→Y是一个部分函数依赖。 ③ 传递函数依赖
设有关系模式R(U),X,Y,Z?U,如果X→Y,Y→Z,且Y?X,Y不函数决定X,有X→Z,则Z传递函数依赖于X。
(3)多值依赖
多值依赖普遍存在于现实生活中,比如学校中的某一门课程由多个教师讲授,他们使用同一套参考书,每个教师可以讲授多门课程,每种参考书可以供多门课程使用。关系模式“授课”如表1.2所示。
表1.2 授课表
课程 物理 物理 物理 物理 数学 数学 数学 数学
教师 杨靖康 杨靖康 王丽 王丽 杨靖康 杨靖康 王丽 王丽 参考书 普通物理 物理习题集 普通物理 物理习题集 数学分析 微分方程 数学分析 微分方程 在关系模型“授课”中,当物理课程增加一名讲课教师{马红}时,必须插入多个元组:{物理,马红,普通物理};{物理,马红,物理习题集}。同样,某一门课程是{数学}要去掉一本参考书{微分方程}时,则必须删除多个元组:{数学,杨靖康,微分方程};{数学,王丽,微分方程}。我们发现此表对数据的修改很不方便,数据的冗余也很明显。仔细考察这个关系模式,发现他们存在着多值依赖,也就是对于一个{物理,普通物理}有一组(教师)值{杨靖康,王丽},这组值仅仅决定于(课程)上的值,而与(参考书)的值没有关系。下面是称为多值依赖的数据依赖的定义:
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的一个子集,并且Z=U-X-Y。当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z的值无关,则关系模式R(U)中多值依赖X→→Y成立。
3. 关系模式的规范化
在介绍了关系数据理论的一些基本概念之后,下面讨论如何根据属性间依赖情况来判定关系是否具有某些不合适的性质,按属性间的依赖情况来区分关系规范化的程度为第一范式、第二范式、第三范式和第四范式等,以及如何将具有不合适性质的关系转换为更合适的形式。
关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同范式,满足最低要求的叫第一范式,简称1NF,在第一范式中进一步满足一些要求的为第二范式,其余范式依此类推。
第 5 页 共 22 页
不是1NF的关系都是非规范化关系,满足1NF的关系称为规范化的关系。数据库理论研究的关系都是规范化的关系。1NF是关系数据库的关系模式应满足的最起码的条件。
(1)第一范式。如果关系模式R的每一个属性都是不可分解的,则R为第一范式的模式,记为:R?1NF模式。
例如有关系:学生1(学号,姓名,性别,出生日期,系名,入学时间,家庭成员)。关系“学生1”不满足第一范式,因为属性(家庭成员)可以再分解为(父亲)、(母亲)等属性。
解决的方法是将“学生1”关系分解为:学生(学号,姓名,性别,出生日期,系名,入学时间);家庭(学号,家庭成员姓名,亲属关系)两个关系。
(2)第二范式。如果关系模式R是第一范式,且每个非码属性都完全函数依赖于码属性,则称R为满足第二范式的模式,记为:R?2NF模式。
例如有关系:选课1(学号,课程号,系名,出生日期,成绩)。关系“选课1”不满足第二范式,因为属性“成绩”完全依赖于主码(学号,课程号),而属性(系名),(出生日期)只依赖于部分主码(学号),所以,不是每一个非码属性都完全函数依赖于码属性,如图1.1所示。
解决的方法是将“选课1”关系投影分解为:选课(学号,课程号,成绩),学生(学号,姓名,性别,出生日期,系名,入学时间)两个关系模式。
学号 成绩 课程号 系名 学 号 系名 出生日期 系宿舍楼
图1.1 不符合第二范式的函数依赖示例 图1.1 不符合第二范式的函数依赖示例
图1.2 学生2中的函数依赖 图1.2 学生2中的函数依赖
(3)第三范式。如果关系模式R是第二范式,且没有一个非码属性是传递函数依赖于候选码属性,则称R为满足第三范式的模式,记为:R?3NF模式。
例如有关系:学生2(学号,姓名,性别,出生日期,系名,入学时间,系宿舍楼)。关系“学生2”不满足第三范式,因为属性(系宿舍楼)依赖于主码(学号),但也可以从非码属性(系名)导出,即(系宿舍楼)传递依赖(学号),如图1.2所示。
解决的方法同样是将关系“学生2”分解为:学生(学号,姓名,性别,出生日期,系名,入学时间);宿舍楼(系名,宿舍楼)两个关系模式。
(4)扩充第三范式。如果关系模式R是第三范式,且每一个决定因素都包含有码,则称R为满足扩充第三范式的模式,记为:R?BCNF模式。
例如有关系:教学(学生,教师,课程)。每位教师只教一门课。每门课有若干个教师教,学生选定某门课程,就对应一个固定的教师。由语义可得到如图1.3所示的函数依赖。
学 生 教 师 课 程 学 生 课 程 教 师 第 6 页 共 22 页
图1.3 教学中的函数依赖
“教学”关系不属于BCNF模式,因为(教师)是一个决定因素,而(教师)不包含码。 解决的方法是将关系“教学”分解为:学生选教师(学生,教师);教师任课(教师,课程)两个关系模式。
(5)第四范式。如果关系模式R是第一范式,且每个非平凡多值依赖X→→Y(Y?X),X都含有码,则称R为满足第四范式的模式,记为:R?4NF模式。
例如有关系:授课(课程,教师,参考书)。每位教师可以上多门课,每门课可以由若干教师讲授,一门课程有多种参考书。在“授课”关系中,课程→→教师,课程→→参考书,它们都是非平凡的多值依赖。而(课程)不是码,关系模式“授课”的码是(课程,教师,参考书),因此关系模式“授课”不属于第四范式。
解决的方法是将“授课”关系分解为:任课(课程,教师);教参(课程,参考书)两个关系。
4. 关系规范化小结
关系模式规范化的过程是通过对关系模式的分解,把低一级的关系模式分解为若干个高一级的关系模式,逐步消除数据依赖中的不合理部分,使模式达到某种程度的分离,即“一个关系表示一事或一物”。所以规范化的过程又称为“单一化”。关系规范化的过程如图1.4所示。
1NF ↓ 2NF ↓ 3NF ↓ BCNF ↓ 4NF
消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除非平凡且非函数依赖的多值依赖
图1.4 各种范式及规范化过程
1.2 关系数据库设计
一个信息系统的各部分能否紧密地结合在一起以及如何结合,关键在数据库。因此,对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统。数据库设计是信息系统开发和信息建设的重要组成部分。
1.2.1 需求分析
需求分析就是分析用户的需求。需求分析是设计数据库的起点,需求分析的结构将影响到各个阶段的设计,以及最后结果的合理性与实用性。
第 7 页 共 22 页
5. 需求分析的任务
需求分析的任务是通过详细调查现实世界中要处理的对象(组织、部门、企业)等,在了解现行系统工作情况,确定新系统功能的过程中,收集支持系统运行的基础数据及其处理方法,明确用户的各种需求。
调查的重点是“数据”和“处理”,通过调查、收集与分析,获得用户对数据库的如下需求:
(1)信息需求。指用户要从应用系统中获得信息的内容与性质。即未来系统中要输入的信息,从数据库中要获得什么信息等。由信息的要求就可以导出数据的要求,即在数据库中存储什么数据
(2)处理要求。指用户要完成什么样的处理,对处理的响应时间有什么要求,是什么样的处理方式。
(3)安全性与完整性要求。
确定用户的需求是非常困难的,因为用户往往对计算机应用不太了解,难以准确表达自己的需求。另一方面,计算机专业人员又缺乏用户的专业知识,存在与用户准确沟通的障碍。只有通过不断与用户深入地交流,才能准确地确定用户的真正需求。
6. 需求分析基本步骤 需求分析一般要进行如下几步:
(1)需求的收集:收集数据及其发生时间、频率,数据的约束条件、相互联系等。 (2)需求的分析整理
① 数据流程分析,结果描述产生数据流图。
② 数据分析统计,对输入、存储、输出的数据分别进行统计。 ③ 分析数据的各种处理功能,产生系统功能结构图。 7. 阶段成果
需求分析阶段成果是系统需求说明书,此说明书主要包括数据流图、数据字典、各类数据的统计表格、系统功能结构图和必要的说明。系统需求说明书将作为数据库设计的全过程依据的文件。
1.2.2 概念结构设计
如前所述,表达概念设计结果的工具成为概念模型。将需求分析得到的用户需求抽象为信息世界的概念模型的过程就是概念结构设计。它是整个数据库设计的关键。概念设计不依赖于具体的计算机系统和DBMS。
8. 概念设计的策略和步骤
(1)设计概念结构的策略有如下几种:
① 自顶向下:首先定义全局概念结构的框架,再做局部细化。
② 自底向上:先定义每一局部应用的概念结构,然后按一定的规则把他们集成,进而得到全局的概念结构。
③ 由里向外:首先定义核心结构,然后再扩展。
第 8 页 共 22 页
相关推荐: