本章内容提要
从数据库逻辑设计中如何构成一个好的数据库模式这一问题出发,阐述了 关系规范化理论研究的实际背景 。
规范化理论:各级范式及可能存在的问题 。
关系模式的规范化第五章 关系数据理论本章重点:
函数依赖;
各级范式的定义;
关系数据库的规范化理论关系模式的规范化本章难点:
关系模式的规范化第五章 关系数据理论
前面我们已经讨论了关系数据库的基本概念
、关系模型的三个部分以及关系数据库的标准语言。但是还有一个很基本的问题尚未涉及,针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成 等。这是数据库设计的问题,确切地讲是关系数据库逻辑设计问题。
第五章 关系数据理论
5.1 问题的提出
一个关系模式应当是一个五元组。
R( U,D,DOM,F)
关系名 R,它是符号化的元组语义;
一组属性 U;
属性组 U中属性所来自的域 D;
属性到域的映射 DOM;
属性组 U上的一组数据依赖 F。
第五章 关系数据理论
5.1 问题的提出
由于 D和 DOM对模式设计关系不大,因此我们在本章中把关系模式看作是一个三元组:
R〈 U,F〉 ——与设计有关。
故设计重点转为研究:
( 1)一个关系模式应该有那些属性;
( 2)这些属性间存在什么样的联系。
因此,我们的任务是研究模式设计,研究设计一个“好”的(没有“毛病”的)关系模式的办法。
第五章 关系数据理论
5.1 问题的提出
关系,作为一张二维表,我们对它有一个最起码的要求:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于 第一范式( 1NF) 。
一个满足 1NF的关系模式是否能够满足使用的要求?
第五章 关系数据理论
5.1 问题的提出第五章 关系数据理论
5.1 问题的提出
例:一个“有毛病”的关系模式
假设有关系模式 借书人(姓名,地址,书名,日期)
Borrowers(NAME,ADDR,TITLE,DATE)
NAME ADDR TITLE DATE
张平 A1 T1 D1
张平 A1 T2 D1
张平 A1 T3 D2
李芳 A2 T2 D3
李芳 A2 T5 D4
这个模式有下述三个“毛病”:
1.插入异常
2.删除异常
3.冗余太大
为什么会发生以上问题呢?
因为这个模式存在某些 不好的性质 。
第五章 关系数据理论
5.1 问题的提出
假如把这个单一的模式改造为两个关系模式:
借书人关系,借书关系,
Borrowers(NAME,ADDR) LOADS(NAME,TITLE,DATE)
第五章 关系数据理论
5.1 问题的提出
NAME ADDR
张平 A1
李芳 A2
NAME TITLE DATE
张平 T1 D1
张平 T2 D1
张平 T3 D2
李芳 T2 D3
李芳 T5 D4
一个模式可能存在哪些不好的性质?
如何改造一个不好的模式,这就是下一节规范化理论讨论的内容。
第五章 关系数据理论
5.1 问题的提出
为了使数据库设计的方法走向完备,人们研究了规范化理论,指导我们设计规范的数据库模式。
讨论首先是从分析一个关系模式的属性间的联系开始的。
第五章 关系数据理论
5.2 规范化第五章 关系数据理论
5.2 规范化
5.2.1 函数依赖一、属性间的关系客观世界中事物间的联系分为:
( 1)实体与实体间的联系;
( 2)实体内部各属性间的联系。
属性间的联系是属性间相互依赖与相互制约的关系,它称为 数据依赖 。
属性间的联系分为:
( 1) 1-1 ( one to one )
( 2) 1-M ( one to Many )
( 3) M-M ( Many to Many )
第五章 关系数据理论
5.2 规范化
数据依赖 是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是 语义 的体现。
现在人们已经提出了许多种类型的数据依赖,其中最重要的是:
( 1) 函数依赖 (Functional Dependency简记为 FD)
( 2) 多值依赖 (Multivalued Dependency简记为 MVD)。
第五章 关系数据理论
5.2 规范化
定义 5.1
设 R(U)是属性集 U上的关系模式。 X,Y是 U的子集。若对于 R(U)
的任意一个可能的关系 r,r中不可能存在两个元组在 X上的属性值相等,而在 Y上的属性值不等,则称 X函数确定 Y或 Y函数依赖于 X,
记作 X→Y 。
函数依赖和别的数据依赖一样是 语义 范畴的概念 。我们只能根据语义来确定一个函数依赖。设计者也可以对现实世界作强制的规定。
注意,函数依赖不是指关系模式 R的某个或某些关系满足的约束条件,而是指 R的 一切关系 均要满足的约束条件。
第五章 关系数据理论
5.2 规范化
下面介绍一些术语和记号:
·X→Y,但 Y X则称 X→Y 是非平凡的函数依赖 。若不特别声明,我们总是讨论非平凡的函数依赖。
·X→Y,但 Y?X 则称 X→Y 是 平凡的函数依赖 。
·若 X→Y,则 X叫做决定因素 (Determinant)。
·若 X→Y,Y→X,则记作 X←→Y 。
·若 Y不函数依赖于 X,则记作 X Y。
第五章 关系数据理论
5.2 规范化
定义 5.2
在 R(U)中,如果 X→ Y,并且对于 X的任何一个真子集 X',
都有 X ' Y,则称 Y对 X完全函数依赖,记作,X F Y 。
若 X→ Y,但 Y不完全函数依赖于 X,则称 Y对 X部分函数依赖,
记作,X P Y 。
定义 5.3
在 R(U)中,如果 X→ Y,(Y X),Y X,Y→ Z,则称 Z对 X传递函数依赖 。 加上条件 Y X,是因为如果 Y→ X,则 X←→ Y,实际上 X→ Z是直接函数依赖而不是传递函数依赖。
第五章 关系数据理论
5.2 规范化
5.2.2 码定义 5.4
设 K为 R〈 U,F〉 中的属性或属性组合,若
K F→ U,则 K为 R的 候选码 ( Candidate key)。若候选码多于一个,则选定其中的一个 为主码 ( Primary key)。
包含在任何一个 候选码 中的属性,叫做 主属性 (Prime
attribute)。不包含在任何码中的属性称为 非主属性 (Nonprime
attribute)或非码属性 (Non-key attribute)。最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码 (All-
key)。
第五章 关系数据理论
5.2 规范化
定义 5.5
关系模式 R中属性或属性组 X并非 R的码,
但 X是另一个关系模式的码,则称 X是 R的外部码 (Foreign key)也称外码 。
主码与外部码提供了一个表示关系间联系的手段。
第五章 关系数据理论
5.2 规范化
5.2.3 范式
按属性间 依赖情况 来区分,关系规范化的程度为:第一范式( 1NF Normal Form)
第二范式( 2NF)
第三范式( 3NF)
第四范式( 4NF)
等。
各级范式是衡量一个关系模式“优劣”的标准。
第五章 关系数据理论
5.2 规范化
范式即规范化的关系模式。
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称 lNF。在第一范式中满足进一步要求的为第二范式,其余以此类推。
R为第几范式就可以写成 R∈ xNF。
对于各种范式之间的联系有 5NF? 4NF? BCNF? 3NF? 2NF
lNF成立。
一个 低一级范式的关系模式,通过模式分解可以转换为 若干个 高一级范式的关系模式的集合,这种过程就叫规范化。
第五章 关系数据理论
5.2 规范化
í? 5.2
1 N F
2 N F
3 N N F
B C N F
4 N F
5 N F
各种范式之间的联系第五章 关系数据理论
5.2 规范化
5.2.4 关系模式的规范化及各级范式的定义
1NF 定义:
关系,作为一张二维表,我们对它有一个最起码的要求:
每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式( 1NF)。
规范化:非规范的关系 → 1NF关系。
第五章 关系数据理论
5.2 规范化
分析,书 175页例子 中存在“问题”:
( 1)存在插入异常;
( 2)存在删除异常
( 3)修改复杂
原因:存在非主属性对码的部分函数依赖。
过程:消除 非主属性对码的部分函数依赖第五章 关系数据理论
5.2 规范化
定义 5.6
若 R∈ lNF,且每一个 非主属性完全函数依赖 于 码,则 R∈ 2NF。
满足第二范式的关系模式是否完全解决了存储异常问题呢?
第五章 关系数据理论
5.2 规范化
分析,书 175页例子 中仍然存在“问题”:
仍然存在存储异常问题
原因:存在非主属性对码的传递函数依赖。
过程:消除 非主属性对码的传递函数依赖第五章 关系数据理论
5.2 规范化
定义 5.7
关系模式 R〈 U,F〉 中若不存在这样的码
X,属性组 Y及非主属性 Z (Z Y)使得 X→ Y,
( Y X) Y→ Z,成立,则称 R〈 U,F〉 ∈ 3NF。
由定义 5.7可以证明,若 R∈ 3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。
第五章 关系数据理论
5.2 规范化
S-L-C关系 (SNO,CNO,SDEPT,SLOC,G)
分解
SC+S-L关系消除 非主属性 对 码 的 部分函数依赖
S-D+D-L关系消除 非主属性 对 码 的 传递函数依赖其中,SC( SNO,CNO,G)
S-D( SNO,SDEPT)
D-L( SDEPT,SLOC)?3NF
第五章 关系数据理论
5.2 规范化
5.2.5 BCNF
处于 3NF的关系模式消除了非主属性和主属性间的部分函数依赖和传递函数依赖,解决了存储异常问题,
一般情况下都能够满足实际应用的要求,但仍然有,不彻底”性 。
第五章 关系数据理论
5.2 规范化
例 1:
关系模式 STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。
每一教师只教一门课。每门课有若干教师,
某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。
(S,J)→ T; (S,T)→ J; T → J。
第五章 关系数据理论
5.2 规范化
S
J
T S
T
J
(S,J),(S,T)都是候选码。
所以 STJ?3NF。
STJ 关系仍然存在问题?
原 因:存在主属性对码的部分依赖和传递依赖规范化:分解 STJ关系为 ST( S,T)和 TJ( T,J)
过 程:消除主属性对码的传递函数依赖因为没有任何非主属性对码传递依赖或部分依赖。
第五章 关系数据理论
5.2 规范化
定义 5.8
关系模式 R〈 U,F〉 ∈ 1NF。若 X→ Y且 Y
X时 X必含有码,则 R〈 U,F 〉 ∈ BCNF。
也就是说,关系模式 R〈 U,F〉 中,若每一个决定因素都包含码,则 R〈 U,F 〉
∈ BCNF。
第五章 关系数据理论
5.2 规范化
STJ(S,T,J) 关系( (S,J)→ T; (S,T)→ J; T → J )
分解
ST( S,T)和 TJ( T,J)
消除了 主属性间 的部分和传递函数依赖第五章 关系数据理论
5.2 规范化
由 BCNF的定义可以得到以下结论,
一个满足 BCNF的关系模式有
1.所有非主属性对每一个码都是完全函数依赖。
2.所有的主属性对每一个不包含它的码,也是完全函数依赖。
3.没有任何属性完全函数依赖于非码的任何一组属性。
由于 R? BCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以 R? 3NF。但是若 R? 3NF,
则 R未必属于 BCNF。
第五章 关系数据理论
5.2 规范化
例 2 关系模式 SJP(S,J,P)中,S是学生,J表示课程,P表示名次。
每一个学生选修每门课程的成绩有一定的名次,
每门课程中每一名次只有一个学生(即没有并列名次)。
由语义可得到下面的函数依赖,(S,J)→ P,(J,P)→ S
所以 (S,J)与 (J,P)都可以作为候选码。这两个码各由两个属性组成,而且它们是相交的。
这个关系模式中显然没有属性对码传递依赖或部分依赖。所以 SJP? 3NF,而且除 (S,J)与 (J,P)以外没有其它决定因素,所以 SJP? BCNF
第五章 关系数据理论
5.2 规范化
一个模式中的关系模式如果都属于
BCNF,那么在 函数依赖 范畴内,它已实现了彻底的分离,已消除了插入和删除的异常。
第五章 关系数据理论
5.2 规范化
5.2.7 多值依赖
以上我们完全是在 函数依赖 的范畴内讨论问题。属于 BCNF的关系模式是否就很完美了呢?
下面让我们来看一个例子。
例 l 学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。
每个教员可以讲授多门课程,每种参考书可以供多门课程使用。(教材 P178)
第五章 关系数据理论
5.2 规范化第五章 关系数据理论
5.2 规范化问题:
( 1)数据冗余度大。
( 2)增加操作复杂。
( 3)删除操作复杂。
( 4)修改操作复杂。
第五章 关系数据理论
5.2 规范化
关系模型 TEACHING(C,T,B)的码是 (C,T,B),
即 A1l_Key。因而 TEACHING∈ BCNF。
但是当某一课程 (如物理 )增加一名讲课教员时,必须插人多个元组
对数据的增删改很不方便,数据的冗余也十分明显。仔细考察这类关系模式,发现它具有一种称之为多值依赖 (MVD)的数据依赖。
第五章 关系数据理论
5.2 规范化
定义 5.9
设 R(U)是属性集 U上的一个关系模式。
X,Y,Z是的 U的子集,并且 Z=U-X-Y。关系模式 R(U)中多值依赖 X→→ Y成立,
当且仅当对 R(U)的任一关系 r,给定的一对 (x,z)值有一组 Y的值,这组值仅仅决定于 x值而与 z值无关。
若 X→→ Y,而 Z =? 即 Z为空,则称
X→→ Y 为 平凡的多值依赖 。
第五章 关系数据理论
5.2 规范化
多值依赖具有以下性质:
1,多值依赖具有对称性。即若 X→→ Y,则 X→→ Z,其中 Z
= U- X- Y。
2,多值依赖的传递性。即若 X→→ Y,Y→→ Z,则 X→→ Z
- Y。
3,函数依赖可以看作是多值依赖的特殊情况。即若 X→ Y,
则 X→→ Y。
4,若 X→→ Y,X→→ Z,则 X→→ YZ。
5,若 X→→ Y,X→→ Z,则 X→→ Y∩ Z。
6,若 X→→ Y,X→→ Z,则 X→→ Y- Z,X→→ Z- Y。
第五章 关系数据理论
5.2 规范化
函数依赖和多值依赖是两种最重要的数据依赖。
如果只考虑函数依赖,则属于 BCNF
的关系模式规范化程度已最高了。
如果考虑多值依赖,则属于 4NF的关系模式规范化程度是最高的了。
第五章 关系数据理论
5.2 规范化
5.2.9 规范化小结
在关系数据库中,对关系模式的基本要求是满足 1NF,这样的关系模式是合法的允许的。但存在“毛病”。
规范化的基本思想是逐步消除数据依赖中不合适的部分,即“一事一地”的模式设计原则。规范化的实质的概念的单一化 。
关系模式的规范化过程是通过对关系模式的分解来实现的。
把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。
第五章 关系数据理论
5.2 规范化第五章 关系数据理论
小结:
本章在函数依赖,多值依赖的范畴内讨论了关系模式的规范化,介绍了各级范式的定义和关系数据库的规范化理论 。
应当强调的是,规范化理论为数据库设计提供了理论的指南和工具,但仅仅是指南和工具 。 并不是规范化程度越高,模式就越好;而必须结合应用环境和现实世界的具体情况合理地选择数据库模式 。
从数据库逻辑设计中如何构成一个好的数据库模式这一问题出发,阐述了 关系规范化理论研究的实际背景 。
规范化理论:各级范式及可能存在的问题 。
关系模式的规范化第五章 关系数据理论本章重点:
函数依赖;
各级范式的定义;
关系数据库的规范化理论关系模式的规范化本章难点:
关系模式的规范化第五章 关系数据理论
前面我们已经讨论了关系数据库的基本概念
、关系模型的三个部分以及关系数据库的标准语言。但是还有一个很基本的问题尚未涉及,针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成 等。这是数据库设计的问题,确切地讲是关系数据库逻辑设计问题。
第五章 关系数据理论
5.1 问题的提出
一个关系模式应当是一个五元组。
R( U,D,DOM,F)
关系名 R,它是符号化的元组语义;
一组属性 U;
属性组 U中属性所来自的域 D;
属性到域的映射 DOM;
属性组 U上的一组数据依赖 F。
第五章 关系数据理论
5.1 问题的提出
由于 D和 DOM对模式设计关系不大,因此我们在本章中把关系模式看作是一个三元组:
R〈 U,F〉 ——与设计有关。
故设计重点转为研究:
( 1)一个关系模式应该有那些属性;
( 2)这些属性间存在什么样的联系。
因此,我们的任务是研究模式设计,研究设计一个“好”的(没有“毛病”的)关系模式的办法。
第五章 关系数据理论
5.1 问题的提出
关系,作为一张二维表,我们对它有一个最起码的要求:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于 第一范式( 1NF) 。
一个满足 1NF的关系模式是否能够满足使用的要求?
第五章 关系数据理论
5.1 问题的提出第五章 关系数据理论
5.1 问题的提出
例:一个“有毛病”的关系模式
假设有关系模式 借书人(姓名,地址,书名,日期)
Borrowers(NAME,ADDR,TITLE,DATE)
NAME ADDR TITLE DATE
张平 A1 T1 D1
张平 A1 T2 D1
张平 A1 T3 D2
李芳 A2 T2 D3
李芳 A2 T5 D4
这个模式有下述三个“毛病”:
1.插入异常
2.删除异常
3.冗余太大
为什么会发生以上问题呢?
因为这个模式存在某些 不好的性质 。
第五章 关系数据理论
5.1 问题的提出
假如把这个单一的模式改造为两个关系模式:
借书人关系,借书关系,
Borrowers(NAME,ADDR) LOADS(NAME,TITLE,DATE)
第五章 关系数据理论
5.1 问题的提出
NAME ADDR
张平 A1
李芳 A2
NAME TITLE DATE
张平 T1 D1
张平 T2 D1
张平 T3 D2
李芳 T2 D3
李芳 T5 D4
一个模式可能存在哪些不好的性质?
如何改造一个不好的模式,这就是下一节规范化理论讨论的内容。
第五章 关系数据理论
5.1 问题的提出
为了使数据库设计的方法走向完备,人们研究了规范化理论,指导我们设计规范的数据库模式。
讨论首先是从分析一个关系模式的属性间的联系开始的。
第五章 关系数据理论
5.2 规范化第五章 关系数据理论
5.2 规范化
5.2.1 函数依赖一、属性间的关系客观世界中事物间的联系分为:
( 1)实体与实体间的联系;
( 2)实体内部各属性间的联系。
属性间的联系是属性间相互依赖与相互制约的关系,它称为 数据依赖 。
属性间的联系分为:
( 1) 1-1 ( one to one )
( 2) 1-M ( one to Many )
( 3) M-M ( Many to Many )
第五章 关系数据理论
5.2 规范化
数据依赖 是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。它是现实世界属性间相互联系的抽象,是数据内在的性质,是 语义 的体现。
现在人们已经提出了许多种类型的数据依赖,其中最重要的是:
( 1) 函数依赖 (Functional Dependency简记为 FD)
( 2) 多值依赖 (Multivalued Dependency简记为 MVD)。
第五章 关系数据理论
5.2 规范化
定义 5.1
设 R(U)是属性集 U上的关系模式。 X,Y是 U的子集。若对于 R(U)
的任意一个可能的关系 r,r中不可能存在两个元组在 X上的属性值相等,而在 Y上的属性值不等,则称 X函数确定 Y或 Y函数依赖于 X,
记作 X→Y 。
函数依赖和别的数据依赖一样是 语义 范畴的概念 。我们只能根据语义来确定一个函数依赖。设计者也可以对现实世界作强制的规定。
注意,函数依赖不是指关系模式 R的某个或某些关系满足的约束条件,而是指 R的 一切关系 均要满足的约束条件。
第五章 关系数据理论
5.2 规范化
下面介绍一些术语和记号:
·X→Y,但 Y X则称 X→Y 是非平凡的函数依赖 。若不特别声明,我们总是讨论非平凡的函数依赖。
·X→Y,但 Y?X 则称 X→Y 是 平凡的函数依赖 。
·若 X→Y,则 X叫做决定因素 (Determinant)。
·若 X→Y,Y→X,则记作 X←→Y 。
·若 Y不函数依赖于 X,则记作 X Y。
第五章 关系数据理论
5.2 规范化
定义 5.2
在 R(U)中,如果 X→ Y,并且对于 X的任何一个真子集 X',
都有 X ' Y,则称 Y对 X完全函数依赖,记作,X F Y 。
若 X→ Y,但 Y不完全函数依赖于 X,则称 Y对 X部分函数依赖,
记作,X P Y 。
定义 5.3
在 R(U)中,如果 X→ Y,(Y X),Y X,Y→ Z,则称 Z对 X传递函数依赖 。 加上条件 Y X,是因为如果 Y→ X,则 X←→ Y,实际上 X→ Z是直接函数依赖而不是传递函数依赖。
第五章 关系数据理论
5.2 规范化
5.2.2 码定义 5.4
设 K为 R〈 U,F〉 中的属性或属性组合,若
K F→ U,则 K为 R的 候选码 ( Candidate key)。若候选码多于一个,则选定其中的一个 为主码 ( Primary key)。
包含在任何一个 候选码 中的属性,叫做 主属性 (Prime
attribute)。不包含在任何码中的属性称为 非主属性 (Nonprime
attribute)或非码属性 (Non-key attribute)。最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码 (All-
key)。
第五章 关系数据理论
5.2 规范化
定义 5.5
关系模式 R中属性或属性组 X并非 R的码,
但 X是另一个关系模式的码,则称 X是 R的外部码 (Foreign key)也称外码 。
主码与外部码提供了一个表示关系间联系的手段。
第五章 关系数据理论
5.2 规范化
5.2.3 范式
按属性间 依赖情况 来区分,关系规范化的程度为:第一范式( 1NF Normal Form)
第二范式( 2NF)
第三范式( 3NF)
第四范式( 4NF)
等。
各级范式是衡量一个关系模式“优劣”的标准。
第五章 关系数据理论
5.2 规范化
范式即规范化的关系模式。
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称 lNF。在第一范式中满足进一步要求的为第二范式,其余以此类推。
R为第几范式就可以写成 R∈ xNF。
对于各种范式之间的联系有 5NF? 4NF? BCNF? 3NF? 2NF
lNF成立。
一个 低一级范式的关系模式,通过模式分解可以转换为 若干个 高一级范式的关系模式的集合,这种过程就叫规范化。
第五章 关系数据理论
5.2 规范化
í? 5.2
1 N F
2 N F
3 N N F
B C N F
4 N F
5 N F
各种范式之间的联系第五章 关系数据理论
5.2 规范化
5.2.4 关系模式的规范化及各级范式的定义
1NF 定义:
关系,作为一张二维表,我们对它有一个最起码的要求:
每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式( 1NF)。
规范化:非规范的关系 → 1NF关系。
第五章 关系数据理论
5.2 规范化
分析,书 175页例子 中存在“问题”:
( 1)存在插入异常;
( 2)存在删除异常
( 3)修改复杂
原因:存在非主属性对码的部分函数依赖。
过程:消除 非主属性对码的部分函数依赖第五章 关系数据理论
5.2 规范化
定义 5.6
若 R∈ lNF,且每一个 非主属性完全函数依赖 于 码,则 R∈ 2NF。
满足第二范式的关系模式是否完全解决了存储异常问题呢?
第五章 关系数据理论
5.2 规范化
分析,书 175页例子 中仍然存在“问题”:
仍然存在存储异常问题
原因:存在非主属性对码的传递函数依赖。
过程:消除 非主属性对码的传递函数依赖第五章 关系数据理论
5.2 规范化
定义 5.7
关系模式 R〈 U,F〉 中若不存在这样的码
X,属性组 Y及非主属性 Z (Z Y)使得 X→ Y,
( Y X) Y→ Z,成立,则称 R〈 U,F〉 ∈ 3NF。
由定义 5.7可以证明,若 R∈ 3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。
第五章 关系数据理论
5.2 规范化
S-L-C关系 (SNO,CNO,SDEPT,SLOC,G)
分解
SC+S-L关系消除 非主属性 对 码 的 部分函数依赖
S-D+D-L关系消除 非主属性 对 码 的 传递函数依赖其中,SC( SNO,CNO,G)
S-D( SNO,SDEPT)
D-L( SDEPT,SLOC)?3NF
第五章 关系数据理论
5.2 规范化
5.2.5 BCNF
处于 3NF的关系模式消除了非主属性和主属性间的部分函数依赖和传递函数依赖,解决了存储异常问题,
一般情况下都能够满足实际应用的要求,但仍然有,不彻底”性 。
第五章 关系数据理论
5.2 规范化
例 1:
关系模式 STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。
每一教师只教一门课。每门课有若干教师,
某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。
(S,J)→ T; (S,T)→ J; T → J。
第五章 关系数据理论
5.2 规范化
S
J
T S
T
J
(S,J),(S,T)都是候选码。
所以 STJ?3NF。
STJ 关系仍然存在问题?
原 因:存在主属性对码的部分依赖和传递依赖规范化:分解 STJ关系为 ST( S,T)和 TJ( T,J)
过 程:消除主属性对码的传递函数依赖因为没有任何非主属性对码传递依赖或部分依赖。
第五章 关系数据理论
5.2 规范化
定义 5.8
关系模式 R〈 U,F〉 ∈ 1NF。若 X→ Y且 Y
X时 X必含有码,则 R〈 U,F 〉 ∈ BCNF。
也就是说,关系模式 R〈 U,F〉 中,若每一个决定因素都包含码,则 R〈 U,F 〉
∈ BCNF。
第五章 关系数据理论
5.2 规范化
STJ(S,T,J) 关系( (S,J)→ T; (S,T)→ J; T → J )
分解
ST( S,T)和 TJ( T,J)
消除了 主属性间 的部分和传递函数依赖第五章 关系数据理论
5.2 规范化
由 BCNF的定义可以得到以下结论,
一个满足 BCNF的关系模式有
1.所有非主属性对每一个码都是完全函数依赖。
2.所有的主属性对每一个不包含它的码,也是完全函数依赖。
3.没有任何属性完全函数依赖于非码的任何一组属性。
由于 R? BCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以 R? 3NF。但是若 R? 3NF,
则 R未必属于 BCNF。
第五章 关系数据理论
5.2 规范化
例 2 关系模式 SJP(S,J,P)中,S是学生,J表示课程,P表示名次。
每一个学生选修每门课程的成绩有一定的名次,
每门课程中每一名次只有一个学生(即没有并列名次)。
由语义可得到下面的函数依赖,(S,J)→ P,(J,P)→ S
所以 (S,J)与 (J,P)都可以作为候选码。这两个码各由两个属性组成,而且它们是相交的。
这个关系模式中显然没有属性对码传递依赖或部分依赖。所以 SJP? 3NF,而且除 (S,J)与 (J,P)以外没有其它决定因素,所以 SJP? BCNF
第五章 关系数据理论
5.2 规范化
一个模式中的关系模式如果都属于
BCNF,那么在 函数依赖 范畴内,它已实现了彻底的分离,已消除了插入和删除的异常。
第五章 关系数据理论
5.2 规范化
5.2.7 多值依赖
以上我们完全是在 函数依赖 的范畴内讨论问题。属于 BCNF的关系模式是否就很完美了呢?
下面让我们来看一个例子。
例 l 学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。
每个教员可以讲授多门课程,每种参考书可以供多门课程使用。(教材 P178)
第五章 关系数据理论
5.2 规范化第五章 关系数据理论
5.2 规范化问题:
( 1)数据冗余度大。
( 2)增加操作复杂。
( 3)删除操作复杂。
( 4)修改操作复杂。
第五章 关系数据理论
5.2 规范化
关系模型 TEACHING(C,T,B)的码是 (C,T,B),
即 A1l_Key。因而 TEACHING∈ BCNF。
但是当某一课程 (如物理 )增加一名讲课教员时,必须插人多个元组
对数据的增删改很不方便,数据的冗余也十分明显。仔细考察这类关系模式,发现它具有一种称之为多值依赖 (MVD)的数据依赖。
第五章 关系数据理论
5.2 规范化
定义 5.9
设 R(U)是属性集 U上的一个关系模式。
X,Y,Z是的 U的子集,并且 Z=U-X-Y。关系模式 R(U)中多值依赖 X→→ Y成立,
当且仅当对 R(U)的任一关系 r,给定的一对 (x,z)值有一组 Y的值,这组值仅仅决定于 x值而与 z值无关。
若 X→→ Y,而 Z =? 即 Z为空,则称
X→→ Y 为 平凡的多值依赖 。
第五章 关系数据理论
5.2 规范化
多值依赖具有以下性质:
1,多值依赖具有对称性。即若 X→→ Y,则 X→→ Z,其中 Z
= U- X- Y。
2,多值依赖的传递性。即若 X→→ Y,Y→→ Z,则 X→→ Z
- Y。
3,函数依赖可以看作是多值依赖的特殊情况。即若 X→ Y,
则 X→→ Y。
4,若 X→→ Y,X→→ Z,则 X→→ YZ。
5,若 X→→ Y,X→→ Z,则 X→→ Y∩ Z。
6,若 X→→ Y,X→→ Z,则 X→→ Y- Z,X→→ Z- Y。
第五章 关系数据理论
5.2 规范化
函数依赖和多值依赖是两种最重要的数据依赖。
如果只考虑函数依赖,则属于 BCNF
的关系模式规范化程度已最高了。
如果考虑多值依赖,则属于 4NF的关系模式规范化程度是最高的了。
第五章 关系数据理论
5.2 规范化
5.2.9 规范化小结
在关系数据库中,对关系模式的基本要求是满足 1NF,这样的关系模式是合法的允许的。但存在“毛病”。
规范化的基本思想是逐步消除数据依赖中不合适的部分,即“一事一地”的模式设计原则。规范化的实质的概念的单一化 。
关系模式的规范化过程是通过对关系模式的分解来实现的。
把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。
第五章 关系数据理论
5.2 规范化第五章 关系数据理论
小结:
本章在函数依赖,多值依赖的范畴内讨论了关系模式的规范化,介绍了各级范式的定义和关系数据库的规范化理论 。
应当强调的是,规范化理论为数据库设计提供了理论的指南和工具,但仅仅是指南和工具 。 并不是规范化程度越高,模式就越好;而必须结合应用环境和现实世界的具体情况合理地选择数据库模式 。