1 第一范式
1NF:第一范式—— 即关系模式中的属性的值域中每一个值都是不可再分解的值。
如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。
比如有一个关系 study={学号,课程},若有这样几行记录:
这时的第三条记录就表示本关系模式不是1NF的,因为课程中的值域还是可以分解的,它包括了两门课程。
如果改为下列形式,则是1NF
2 第二范式
如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键, 则称为第二范式模式。
首先温习、理解“非主属性”、“完全函数依赖”、“候选键”这三个名词的含义。
(1)候选键:可以唯一决定关系模式R中某元组值且不含有多余属性的属性集。
(2)非主属性:即非键属性,指关系模式R中不包含在任何建中的属性。
(3)完全函数依赖:设有函数依赖W→A,若存在XW,有X→A成立,那么称W→A是局部依赖,否则就称W→A是完全函数依赖。
在分析是否为第2范式时,应首先确定候选键,然后把关系模式中的非主属性与键的依赖关系进行考察, 是否都为完全函数依赖,如是,则此关系模式为2NF。
如果数据库模式中每个关系模式都是2NF的,则此数据库模式属于2NF的数据库模式。
比如有一个关系 study={学号,学生姓名,课程,成绩}
其中,(学号,课程)为候选键;“成绩”对键的函数依赖为完全函数依赖,而“姓名”只依赖于“学号”, 对键的依赖为部分函数依赖。所以,该关系模式不符合2NF。如果将该 模式分解为以下两个关系:
student={学号,姓名}
study={学号,课程,成绩}
则分解后的两个关系模式均为2NF
3 第三范式
如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R为第三范式模式。
传递依赖的含义: 在关系模式中,如果Y→X,X→A,且XY(X不决定Y)和AX(A不属于X),那么Y→A是传递依赖。 Notice:要求非主属性都不传递依赖于候选键。
上一小节例子中student={学号,姓名},study={学号,课程,成绩}都是3NF
4 BCNF
这个范式和第三范式有联系,它是3NF的改进形式。
若关系模式R是第一范式,且
每个属性都不传递依赖于R的候选键。这种关系模式就是BCNF模式。
四种范式,可以发现它们之间存在如下关系:
5 分解成BCNF模式集的算法
对于任一关系模式,
(1)可找到一个分解达到3NF,且具有无损联接和保持函数依赖性。
(2)对于BCNF分解,则可以保证无损联接但不一定能保证保持函数依赖集。
无损联接分解成BCNF模式集的算法:
(1)置初值ρ={R};
(2)如果ρ中所有关系模式都是BCNF,则转(4);
(3)如果ρ中有一个关系模式S不是BCNF,则S中必能找到一个函数依赖集X→A有X不是S的键,且A不属于X,设S1=XA,S2=S-A,用分解S1,S2代替S,转(2);
(4)分解结束。输出ρ。
Notice:重点在于(3)步,判断哪个关系不是BCNF,并找到X和A。
例:关系模式R<U,F>,其中:U={A,B,C,D,E},F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接。
解:
① 令ρ={R(U,F)}。
② ρ中不是所有的模式都是BCNF,转入下一步。
③ 分解R:R上的候选关键字为BE(因为所有函数依赖的右边没有BE)。考虑A→C函数依赖不满足BCNF条件(因A不包含候选键BE),将其分解成R1(AC)、R2(ABDE)。
计算R1和R2的最小函数依赖集分别为:F1={A→C},F2={B→D,DE→D,BE→A}。其中B→D是由于R2中没有属性C且B→C,C→D;DE→D是由于R2中没有属性C且DE→C,C→D;BE→A是由于R2中没有属性C且B→C,CE→A。又由于DE→D是蕴含关系,可以去掉,故F2={B→D,BE→A}。
分解R2:R2上的候选关键字为BE。考虑B→D函数依赖不满足BCNF条件,将其分解成R21(BD)、R22(ABE)。计算R21和R22的最小函数依赖集分别为:F21={B→D},F22={BE→A}。
由于R22上的候选关键字为BE,而F22中的所有函数依赖满足BCNF条件。故R可以分解为无损连接性的BCNF如:ρ={R1(AC),R21(BD),R22(ABE)}
6 分解成3NF模式集
(1)如果R中的某些属性在F的所有依赖的左边和右边都不出现,那么这些属性可以从R中分出去,单独构成一个关系模式。
(2)如果F中有一个依赖X→A有XA=R,则ρ={R},转(4)
(3)对于F中每一个X→A,构成一个关系模式XA,如果F有有X→A1,X→A2...X→An,则可以用模式XA1A2...An代替n个模式XA1,XA2...XAn;
(4)w分解结束,输入ρ。
例1:关系模式R<U,F>,其中U={C,T,H,R,S,G},
F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成3NF并保持函数依赖。
解:根据算法进行求解
(一)计算F的最小函数依赖集
① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。由于F的所有函数依赖的右边都是单个属性,故不用分解。
② 去掉F中多余的函数依赖
A.设CS→G为冗余的函数依赖,则去掉CS→G,得:
F1={C→T,TH→R,HR→C,HS→R}
计算(CS)F1+:
设X(0)=CS
计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到一个C→T函数依赖。故有X(1)=X(0)∪T=CST。
计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。故有X(2)=X(1)。算法终止。
(CS)F1+= CST不包含G,故CS→G不是冗余的函数依赖,不能从F1中去掉。
B.设C→T为冗余的函数依赖,则去掉C→T,得:
F2={CS→G,TH→R,HR→C,HS→R}
计算(C)F2+:
设X(0)=C
计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。故有X(1)=X(0)。算法终止。故C→T不是冗余的函数依赖,不能从F2中去掉。
C.设TH→R为冗余的函数依赖,则去掉TH→R,得:
F3={CS→G,C→T,HR→C,HS→R}
计算(TH)F3+:
设X(0)=TH
计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。故有X(1)=X(0)。算法终止。故TH→R不是冗余的函数依赖,不能从F3中去掉。
D.设HR→C为冗余的函数依赖,则去掉HR→C,得:
F4={CS→G,C→T,TH→R,HS→R}
计算(HR)F4+:
设X(0)=HR
计算X(1):扫描F4中的各个函数依赖,没有找到左部为HR或HR子集的函数依赖。故有X(1)=X(0)。算法终止。故HR→C不是冗余的函数依赖,不能从F4中去掉。
E.设HS→R为冗余的函数依赖,则去掉HS→R,得:
F5={CS→G,C→T,TH→R,HR→C}
计算(HS)F5+:
设X(0)=HS
计算X(1):扫描F5中的各个函数依赖,没有找到左部为HS或HS子集的函数依赖。故有X(1)=X(0)。算法终止。故HS→R不是冗余的函数依赖,不能从F5中去掉。即:F5={CS→G,C→T,TH→R,HR→C,HS→R}
③ 去掉F5中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖),没有发现左边有多余属性的函数依赖。
故最小函数依赖集为:F={CS→G,C→T,TH→R,HR→C,HS→R}
(二)由于R中的所有属性均在F中都出现,所以转下一步。
(三)对F按具有相同左部的原则分为:
R1=CSG,R2=CT,R3=THR,R4=HRC,R5=HSR。
所以ρ={R1(CSG),R2(CT),R3(THR),R4(HRC),R5(HSR)}。
转换成3NF的保持无损连接和函数依赖的分解
例2:关系模式R<U,F>,其中:U={C,T,H,R,S,G},
F={CS→G,C→T,TH→R,HR→C,HS→R},分解成3NF并保持无损连接和函数依赖。
解:(1) 根据上例例1,得到3NF并保持函数依赖的分解如下:
σ={ R1(CSG),R2(CT),R3(THR),R4(HRC),R5(HSR) }。
(2) 而HS是原模式的关键字,所以τ={CT,CSG,CHR,HSR,HRT,HS}。由于HS是模式HSR的一个子集,所以消去HS后的分解{CT,CSG,CHR,HSR,HRT}就是具有无损联接性和保持函数依赖性的分解,且其中每一个模式均为3NF。
7 模式设计方法的原则
关系模式R相对于函数依赖集F分解成数据库模式ρ={R1,R2...Rk},一般具有下面四项特性:
(1)ρ中每个关系模式Ri上应具有某种范式性质(3NF或BCNF)
(2)无损联接性。
(3)保持函数依赖集。
(4)最小性,即ρ中模式个数应最少且模式中属性总数应最少。
一个好的模式设计方法应符合下列三条原则:
(1)表达性
(2)分离性
(3)最小冗余性
8 多值依赖
函数依赖有效地表达了属性值之间多对一的联系,是最重要的一种数据依赖;而多值依赖是为了刻划属性值之间一对多的联系.
9 第四范式
设R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡多值依赖X→→Y时,X必是R的超键, 那么称R是第四范式(4NF)。
(定理) 一个关系模式若属于4NF,则必然属于BCNF。
- 大小: 1.8 KB
- 大小: 2 KB
- 大小: 3.3 KB
- 大小: 3.3 KB
分享到:
相关推荐
数据库系统原理总结 重新拿起数据库原理,感觉明显不⼀样了。重新学习,学到的东西多了很多,出来混总是 要还的,上次不会的,这次都得重新学⼀次。关于数据库系统原理,我来讲讲我⾃⼰的理 解:主要内容有:数据库...
1. 已知R(A,B,C,D,E,F,G,H,I,J),F={AB→E,ABE→FG,B→FI,C→J,CJ→I,G→H},求最小函数依赖集,然后分解成三范式的关系模式集合,并判断该分解是否具有无损连接性。 2. 如下给出的关系R为第几范式?是否存在操作...
数据库考试复习题目及...2、已知关系模式R(TNAME,ADDRESS,C#,CNAME),它满足第几范式,能否分解成更高一级范式? TNAME ADDRESS C# 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
3.1 初始关系模式设计 8 3.1.1 转化原则 8 3.1.2转换结果 9 3.2关系模式规范化 9 3.2.1第三范式的定义 9 3.2.2 BCN范式的定义 9 4. 物理实现 10 4.1 用Access 2000分别创建六个表: 10 5. 研制报告 14
什么是范式/第一范式/第二范式/第三范式 范式:关系数据库中的关系需要满足一定的要求,不同程度的要求成为不同的范式( NF) 第一范式:设R为任一给定关系,如果R中的每个列与行的交点处的取值都是不可再分 的基本...
《数据库原理及应用》复习重点 第一章 数据库系统基本知识,第一章 复习题 要求、目标: 了解和掌握数据管理技术的发展阶段,数据描述的术语,数据抽象的四个级别,数据库管理系统的功能,数据库系统的组成。 第二章...
5.1. 关系数据库设计中存在的问题 18 5.2. 规范化理论 19 5.2.1. 函数依赖 19 5.2.2. 依赖实例 21 5.2.3. 多值依赖 22 5.3. 范式理论 22 5.3.1. 规范化步骤 24 5.3.2. 范式之间的关系 24 5.3.3. 小结 25 6. 物理设计...
能否保持原来的函数依赖关系,用"保持FD"特性表示 3 关系模式的分解标准 "范式 "特点 "分解特征 " " " "无损分解 "保持FD " "1NF "字段是不可再分的原子值 " " " "2NF "非主键字段完全依赖主键 "是 "是 " "3NF "非...
汇总了计算机研究生复试有关编译原理各章节简答题,使用了易于口头表达的语言进行了总结。包括数据库基本概念及各章节问题回答。可供研究生复试或相关专业岗位面试使用。 1. 基本术语 数据、数据库、数据库管理系统...
设关系模式R(A,B,C),F={AC B,AB C,B C},则R最高属于第几范式?说明理 由。 29.写出Armstrong推理规则中自反律、增广律、传递律的形式化定义。 30.简述对嵌入式SQL进行预处理的作用和过程。 31.简述日志...
(1)掌握关系、关系模式、关系数据库、关系代数 (2)理解关系的完整性 2.重点、难点 重点:关系代数以及关系代数的基本操作 (三)关系数据库标准语言SQL ( 2学时) 1、SQL概述2、数据定义、查询、更新3、视图、...
ΠL(σF(E)) σF(ΠL L1(E)),4,B 1,若关系模式R中的函数依赖的决定因素都是键,则R所属的最高范式是( )。,A.1NF B.2NF C.3NF D.BCNF,4,D 1,"设E是关系代数表达式,F是选取条件表达式,并且只涉及A1,…An属性,则有...
数据库设计概述 什么是数据库设计 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,...
R A B C a b c d a f c b d S A B C b g A d a F 山东海天软件工程专修学院模拟试卷 《数据库系统原理》A试卷 1、 单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目...
5. 如果一个满足1NF关系的所有属性合起来组成一个关键字,则该关系最高满足的范式是 3NF 6. 设关系模式R(A,B,C,D),函数依赖集F={AB→C,D→B},则R的候选码为 AD 。 7. 从关系规范化理论的角度讲,一...
数据库系统原理
第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一 范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列 都是不可分割的基本数据项,同一列...
数据库系统原理