当前位置:文档之家› 第5章关系模式的规范化设计

第5章关系模式的规范化设计


关系模式的冗余和异常问题(1)
在数据库设计中,如果一个关系模式设计得不好,就会出现像文件系 统一样的数据冗余、异常、不一致等问题。
※ 例4.1 设有一个关系模式R(TNAME,ADDRESS, CNO,CNAME),其属性分别表示教师姓名、教师地 址、任教课程的编号和课程名。
关系模式R的实例
TNAME ADDRESS CNO
前言
※ 关系数据库的规范化设计是指面对一个现实问题,如 何选择一个比较好的关系模式集合,即应该构造几个 关系模式,每个关系由哪些属性组成。
※ 规范化设计理论主要包括三个方面的内容:
数据依赖(核心的作用) 范式 模式设计方法
※ 数据依赖研究数据之间的联系,范式是关系模式的标 准,模式设计方法是自动化设计的基础。规范化设计 理论对关系数据库结构的设计起着重要的作用。
第5章 关系模式的规范化设计
※ 问题提出 ※ 函数依赖 ※关系模式的分解 ※关系模式的范式
主要内容
本章重要概念
※ (1) 关系模式的冗余和异常问题。 ※ (2) FD的定义、逻辑蕴涵、闭包、推理规则、
与关键码的联系;平凡的FD;属性集的闭包; 推理规则的正确性和完备性;FD集的等价; 最小依赖集。 ※ (3) 无损分解的定义、性质、测试;保持依赖 集的分解。 ※ (4) 关系模式的范式:1NF,2NF,3NF, BCNF。分解成2NF、3NF模式集的算法。
还可以写出其他一些FD:
CNO→CNAME,TNAME,TAGE) TNAME→TAGE
注意:函数依赖不是指关系R的某个或某些关系满足的约束条件, 而是指R的一切关系均要满足的约束条件。
函数依赖的定义(3)
※ 对于函数依赖的定义注意以下三点: ※ ⑴ 函数依赖是一个基于关系模式(不是一个关系模式的
CNAME
t1
a1
c1
n1
t1
a1
c2
n2
t1
a1
c3
n3
t2

a2
c4
n4
t2
a2
c5
n2
t3
a3
c6
n4
关系模式的冗余和异常问题(2)
该模式出现的问题有: ※ (1) 数据冗余: 如果一个教师教几门课程,那么这个教师的地址就
要重复几次存储。 ※ (2) 操作异常: 由于数据的冗余,在对数据操作时会引起各种异常:
(a) 关系模式R1的实例
(b ) 关系模式R2的实例
TNAME ADDRESS
TNAME CNO CNAME
t1
a1
t2
a2
t3
a3
是否算最佳分解?
那末,什么样的关系 模式是最优的?标准 是什么?如何实现?
t1
c1
n1
t1
c2
n2
t1
c3
n3
t2
c4
n4
t2
c5
n2
t3
c6
n4
图4.2 关系模式分解的实例
特定实例)的函数概念,即如果一个关系模式R中存在函 数依赖X→Y,则要求该模式的所有具体关系都满足X→Y。 ※ ⑵ 函数依赖不取决于属性构成关系的方式(即关系结 构),而是关系所表达的信息本身的语义特性,我们只能 根据这种语义信息确定函数依赖,没有其他途径。 ※ ⑶ 函数依赖是数据库设计者对于关系模式的一种断言或 决策,即在设计关系型数据库时不仅要设计关系结构,而 且要定义数据依赖的条件,限制进入关系的所有元组都必 须符合所定义的条件,否则拒绝接受输入。
a3 b1 c4 d4
函数依赖只能根据语义来确定。如姓名→年龄只有在该 部门没有同名人的条件下是函数依赖。
ABCD a1 b1 c1 d1 a1 b2 c2 d2 a2 b2 c3 d3 a3 b2 c4 d4
函数依赖的定义(2)
例5.2 有一个关于学生选课、教师任课的关系模式:
R(SNO,SNAME,CNO,GRADE,CNAME,TNAME, TAGE)
主要内容
函数依赖的定义(1)
※函数依赖是属性间基本的一种依赖,它是 关键码概念的推广。
※定义5.1 设有关系模式R(U),X和Y是属性 集U的子集,若对于R(U)的任意一个可能的 关系r,r中不可能存在两个元组在X上的属 性值相等,而在Y上的属性值不等,则称X 函数确定Y或Y函数依赖(Functional Dependency,简记为FD)于X,记作 X→Y。
① 修改异常。例如教师t1教三门课程,在关系中就会有三个元组。 如果他的地址变了,这三个元组中的地址都要改变。若有一个元 组中的地址未更改,就会造成这个教师的地址不惟一,产生不一 致现象。
② 插入异常。如果一个教师刚调来,尚未分派教学任务,那么要 将教师的姓名和地址存储到关系中去时,在属性CNO和CNAME 上就没有值(空值)。在数据库技术中空值的语义是非常复杂的, 对带空值元组的检索和操作也十分麻烦。
属性分别表示学生学号、姓名、选修课程的课程号、成绩、课 程名、任课教师姓名和年龄等意义。
如果规定,每个学号只能有一个学生姓名,每个课程号只能决定 一门课程,那么可写成下列FD形式:
SNO→SNAME
CNO→CNAME
每个学生每学一门课程,有一个成绩,那么可写出下列FD:
(SNO,CNO)→GRADE
函数依赖的定义
※FD是对关系模式R的一切可能的关系r定义的。对 于r的任意两个元组,如果X值相同,则要求Y值 也相同,即对一个X值有唯一个Y值与之对应。该 定义类似于数学中的单值函数定义。
在图中,左边图有:A→B 右边图没有:A →B
ABCD a1 b1 c1 d1 a1 b1 c2 d2 a2 b2 c3 d3
本章的符号约定
※ 英文字母表首部的大写字母“A,B,C,D,…”表示单 个属性。
※ 英文字母表尾部的大写字母“…,U,V,W,X,Y,Z” 表示属性集。
※ 大写字母R表示关系模式,小写字母r表示其关系。 ※ 属性集{A1,A2, …,An}简记为A1A2 …An 。 ※ 属性集X和Y的并集X∪Y简记为XY。 X∪{A}简写为XA或
AX。
一般地,我们设计关系数据库模式时,要注意三方面的问题: ⑴ 必须从语义上摸清这些数据联系(实体联系和属性联系)。 ⑵ 尽可能的将互相依赖密切的属性构成单独模式。 ⑶ 切忌把依赖关系不密切、特别是具有“排它”性的属性硬凑到一起。
5.2 函数依赖
※函数依赖的定义 ※FD的逻辑蕴含 ※FD的推理规则 ※FD和关键码的联系 ※属性集的闭包 ※FD集的最小依赖集
③删除异常。如果在图4.1中要取消教师t3的教学任务,那么就要 把这个教师的元组删去,同时也把t3的地址信息从表中删去了。 这是一种不合适的现象。
关系模式的冗余和异常问题(3)
可以说,关系模式R不是一个好的模式。一个“好”的模式应当不会发生插入异常、 删除异常、更新异常,数据冗余应尽量少。
规范化原则:“关系模式有操作异常或冗余问题,就分解它。”
相关主题