当前位置:
文档之家› 第4章 关系数据库规范化理论
第4章 关系数据库规范化理论
4.4.3 无损分解的测试方法
输入:关系模式R(A1 ,A2 ,…,An),它的函数依赖集F以及分解ρ={R1 , R2,…,Rk}。 输出:确定ρ是否具有无损分解。
方法: (1)构造一个k行n列的表,第i行对应于关系模式Ri,第j列对应于属性Aj。 如果Aj∈Ri,则在第i行第j列上放符号ai,否则放符号bij。
4.3 范式和规范化
3. 第三范式(3NF)
定义12:设R是一个关系模式,R属于第三范式当且仅当R
是2NF,且每个非主属性都非传递函数依赖于主码。 由定义可知:第三范式是在第一范式的基础上消除了非主 属性对主键的部分函数依赖和传递函数依赖。 部分函数依赖和传递函数依赖是数据冗余的主要原因,第
三范式消除了很大的存储异常。
请问如何解决这些问题?
4.1 问题的提出
为了克服这些异常,将S关系分解为如下3个关系: S1(NO, NAME, SEX) S2(NO, CNO, DEGR) S3(CNO, CNAME) 主码为{NO}或简写为NO 主码为{NO, CNO} 主码为{CNO}或简写为CNO
通过SQL语言可பைடு நூலகம்查询课程信息
是否属于第一范式?
练习题:
• 下表是否可以做为关系数据库中的关系, 为什么?请进行改进。
第二范式引入
请写出函数依赖集!
• 学号→姓名,学号→系别,学号→专业
• 专业→系别,(学号,课程号)→成绩
该关系的主键是什么?
• 可以看出,该关系模式的主键是(学号,课程号),
对于非主属性:姓名,系别,专业,成绩而言,除了
例题:
有以下学生关系: 学生(学号,姓名,出生年月,系名,班号,宿舍区),主码学号。 请分析其中的函数依赖关系。
学号→姓名,学号→出生年月, 学号→班号,班号→系名,系名→宿舍区 学号→系名,系名→学号,系名→宿舍区,所以:学号→宿舍区 班号→系名,系名→班号,系名→宿舍区,所以:班号→宿舍区 学号→班号,班号→学号,班号→系名,所以:学号→系名
4.4 关系模式的分解
(2)逐个检查F中的每一个函数依赖,并修改表中的元素。其方法如下:取F 中一个函数依赖X→Y,在X的分量中寻找相同的行,然后将这些行中Y的分量
改为相同的符号,如果其中有aj,则将bij改为aj;若其中无aj,则改为bij。
(3)这样反复进行,如果发现某一行变成了al,a2,…,ak,则分解ρ具有
学号→姓名/专业
专业→系别
由第一范式转化到第三范式的过程
4. BC范式(BCNF) 定义13:对于关系模式R,若R中的所有非平凡的、完全 的函数依赖的决定因素是码,则R属于BCNF。
4.4 关系模式的分解
4.4.2 无损分解的定义和性质
1. 无损分解的概念 无损分解指的是对关系模式分解时,原关系模式下任一合 法的关系值在分解之后应能通过自然联接运算恢复起来。 定义14:设ρ ={R1,R2,…,Rk}是关系模式R<U,F>的一
t
4.2 函数依赖
4.2.2 函数依赖与属性关系 设R(U)是属性集U上的关系模式,X、Y是U的子集: • 如果X和Y之间是1∶1关系(一对一关系),则存在函数依赖X→Y和Y→X。 • 如果X和Y之间是1∶n关系(一对多关系),则存在函数依赖X→Y。 • 如果X和Y之间是m∶n关系(多对多关系),则X和Y之间不存在函数依赖。
f 因此,(NO,NO)→DEGR是完全函数依赖。 f
X,X'→Y都不成立(记
为Y→Z),则称X→Y是一个完全函数依赖。即Y函数依赖于整个X,记作
4.2 函数依赖
定义4:设X→Y是一个函数依赖,但不是完全函数依赖,则称X→Y是一个部分
p 函数依赖,或称Y函数依赖于X的某个真子集,记作X→Y。
定义5:设R(U)是一个关系模式,X,Y,Z U,如果X→Y(Y X,Y→X), \ \ t Y→Z成立,则称Z传递函数依赖于X,记为X→Z。 例如:班级(班号,专业名,系名,人数,入学年份),主码是班号。 有:班号→专业名,班号→人数,班号→入学年份,专业名→系名。 因为:班号→专业名,专业名∕班号,专业名→系名,所以,班号→系名。
一个较低范式的关系,可以通过关系的无损分解转换为若干较高级范式关系 的集合,这一过程就叫作关系规范化。
4.3 范式和规范化
4.3.2 范式的判定条件与规范化 1. 第一范式(1NF) 定义10:设R是一个关系模式,R属于第一范式当且仅当R中每一个属性A的值 域只包含原子项,即不可分割的数据项。 是否属于第一范式?
4.2 函数依赖
4.2.1 函数依赖的定义
定义1:设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意
一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的 属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→Y。 例如:不存在职工号相同,但名字不同的元组。则职工号→姓名 关系S中有哪些函数依赖?
定义7:被F逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包,记为F+。
4.2 函数依赖
定义8:设F是属性集U上的一组函数依赖,X U,则属性集X关于F的闭包X定 义为X={A|A∈U且X→A可由F经Armstrong公理导出},即X={A|X→A∈F+}。
定义9:一个关系模式R(U)上的两个依赖集F和G,如果F+=G+ ,则称F和G是等 价的,记作F≡G。
4.4 关系模式的分解
4.4.4 保持函数依赖的分解
定义15:设有关系模式R,F是R的函数依赖集,Z是R的一个属性集合,则称Z 所涉及到的F+中所有函数依赖为F在Z上的投影,记为πZ(F),有: πZ(F)={x→y|x→y∈F+且xy Z}
定义16:设关系模式R的一个分解ρ={R1,R2,…,Rk},F是R的依赖集,如果 F等价于 ,则称分解ρ具有依赖保持性。
无损分解;如果F中所有函数依赖都不能再修改表中的内容,且没有发现这样
的行,则分解ρ不具有无损分解。
例题:
• 设有关系模式R(U,F),其中
• U=ABCDE,
• F={A→C,B →C,C →D,DE →C,CE →A}
• 分解为:R1(AD),R2(AB),R3(BE), R4(CDE),R5(AE) 判断是否为无损分解。
个分解,如果对于R的任一满足F的关系r都有:
则称这个分解ρ 是函数依赖集F的无损分解。
例题:
• 设有关系模式R(U),其中U={ACB},将其
分解为R1(AB),R2(AC).如下图所示。
r r1 r2
A B C 1 1 1 1 2 1
A B 1 1 1 2
A C 1 1
r
r1
r2
A B 1 1 1 2
练习题
•设有关系模式R(U),其中
U={A,B,C,D,E,G,H,P}函数依赖集
F{AB→CE,A →C,GP →B,EP →A,CDE
→P,HB →P,D →HG,ABC →PG},计算关 于F的闭包X+F。令X=DB。
4.3 范式和规范化
4.3.1 什么叫范式 满足最低要求的关系称它属于第一范式的,在此基础上又满足了某种条件, 达到第二范式标准,则称它属于第二范式的关系,如此等等,直到第五范式。
f (学号,课程号)→成绩
学号→姓名/系别/专业 专业→系别
练习题:
• 以下关系是第几范式?存在什么问题? 如何改进。
第三范式的引入
学号→姓名/系别/专业 专业→系别
出现问题如下: (1)无法正确登记一个尚未招生的系的专业设置情况; (2)如果要删除某些学生,可能会删除专业设置情况
请问:如何解决这个问题?
C 4 3
A B 1 1 1 2
A C 1 4 1 3
4.4 关系模式的分解
2. 验证无损分解的充要条件 如果R的分解为ρ={R1 ,R2},F为R所满足的函数依赖集合,则分解ρ具有无 损分解的充分必要条件为: R1∩R2 →(R1-R2) 或 R1∩R2 →(R2-R1)
4.4 关系模式的分解
F 有(学号,课程号)→成绩,同时还有: P
• (学号,课程号) →姓名 • (学号,课程号) →系别 • (学号,课程号) →专业
P P
• •
2. 第二范式(2NF) 定义11:设R是一个关系模式,R属于第二范式当且仅当R是1NF,且每个 非主属性都完全函数依赖于主码。
•
由定义可以知道,第二范式的实质是要从第一范式中消除非主属性对主 键的部分函数依赖。
第4章 关系数据库规范化理论
4.1 问题的提出
主 要 内 容
4.2
4.3 4.4
函数依赖
范式和规范化 关系模式的分解
4.1 问题的提出
假定有如下关系S: S(NO, NAME, SEX, CNO, CNAME, DEGR)
请问这个关系存在什么问题?
• • • • •
这个关系模式存在如下问题: (1)数据冗余 (2)不一致性 (3)插入异常(在设置主键之后,无法插入重复数据) (4)删除异常
4.2 函数依赖
由Armstrong公理可以得到以下推论。 • 自合规则:A→A。 • 分解规则:如果A→BC,则A→B且A→C。 • 合并规则:如果A→B,A→C,则A→BC。 • 复合规则:如果A→B,C→D成立,则AC→BD。
4.2 函数依赖
4.2.4 闭包及其计算
定义6:设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从F中 的函数依赖能够推出X→Y,则称F逻辑蕴涵X→Y。
t t t
4.2 函数依赖
4.2.3 Armstrong公理 Armstrong公理:设A、B、C、D是给定关系模式R的属性集的任意子集,并把A 和B的并集A∪B记为AB,则其推理规则可归结为3条。 • 自反律:如果B A,则A→B。这是一个平凡的函数依赖。 • 增广律:如果A→B,则AC→BC。 • 传递律:如果A→B且B→C,则A→C。