-
2019-04-20 17:41:41
1. 为什么要研究数据库关系模式的分解?
答:因为现有的模式可能会存在一些数据增删改的弊端,比如说:数据冗余太大,更新异常,插入异常,删除异常。因此为了完善数据库的增删改查的功能,需要寻找一种等价的关系模式,使得以上弊端得以解决。
2. 如何实现关系模式的分解?
答:以上的这种等价关系需要满足两个条件:1》保持无损连接性。A.解释:在分解之后,n个分解关系通过自然连接(自然连接是在等值连接的基础上去掉相同的列,如果自然连接中找不到等值信息那么自然连接就等价于笛卡尔积)形成的二维表和没分解之前关系的二维表是等价的(元组没有增加也没有减少),则称这种分解形成的关系模式保持无损连接性;B.如何判断无损连接性:2》保持函数依赖性。解释:若分解之后的关系模式中仍然存在和没分解之前属性的函数依赖关系则称保持分解的函数依赖性.
1) B1: 对于分解为多个关系模式的方法如例1(适用于所有情况):
无损分解的测试方法。①输入:关系模式R=(A1,A2...An),F是R上成立的函数依赖集,ρ={R1,R2...Rn}是R的一个分解;②输出:判断ρ相对于F是否具有无损分解特性。无损分解的测试算法如下:
1. 构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Rj(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij。
2. 把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的值,修改方法为:对于F中一个函数依赖X→Y,如果表格中有两行在X值上相等,在Y值上不相等,那么把这两行在Y值上也改成相等的值,如果Y值中一个是aj,那么另一个也改成aj;如果没有aj那么用其中一个bij替换另一个字(尽量把下表ij改成较小的数)。一直到表格不能修改为止,这个过程成为chase(追踪)过程
3. 若修改后的最后一直表格中有一方全是a,即a1,a2...an,则称ρ相对于F是无损分解,否则称为损失分解
2) B2: 对于只分解为二个关系模式的还可以使用例2的方法:
关系模式R的一个分解 ρ = { R11,F1>,R22,F2>}如果U1∩U2→ U1-U2属于F+的子集或 U1∩U2 → U2-U1属于F+的子集 ,那么ρ具有无损连接性。
此定理可用于一分为二的模式分解无损连接性的判定
例2:学生关系S ( Sno,Sname, Ssex, Dept, DeptManager )分解为S(Sno,Sname, Ssex, Sdept) 和D(Dept,DeptManager), D∩S = Dept , D-S = DeptManager, Dept→DeptManager为原关系中的函数依赖,此分解为无损连接的分解。
3. 关系模式的范式:
主要有4种范式,1NF,2NF,3NF,BCNF,按从左至右的顺序一种比一种要求更严格。要符合某一种范式必须也满足它前边的所有范式。一般项目的数据库设计达到3NF就可以了,而且可根据具体情况适当增加冗余,不必教条地遵守所谓规范。
简单而言,1NF就是要求一张表里只放相互关联的字段,一个字段里只放一条信息,这只是最基本的要求。
1)第一范式:
在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话和一个家里电话号码)规范成为1NF有两种方法:
一是职工号为关键字,电话号码分为单位电话和住宅电话两个属性
二是职工号为关键字,但强制每条记录只能有一个电话号码。
2)第二范式(2NF):
如果关系模式R为1NF,并且R中的每一个非主属性都完全依赖于R的某个候选关键字,则称R是第二范式的,简记为2NF
例. 设有关系模式R(学号S#,课程号C#,成绩G,任课教师TN,教师专长TS),基于R的函数依赖集F={(S#,C#)→G,C#→TN,TN→TS},判断R是否为2NF。
解:(1) 容易看出,关系模式R是1NF。因为R符合关系的定义,R的所有属性值都是不可再分的原子值。
R是否为2NF,应根据2NF的定义来判断。
首先要确定关系模式R中各属性间的函数依赖情况。如果没有直接给出R的函数依赖集,就要按照语义把它确定下来。在本例中,已直接给出基于R的函数依赖集F,我们可使用阿氏推理规则并结合下面介绍的方法,进一步确定R中哪些是主属性、哪些是非主属性、侯选关键字由哪些属性构成。
写出函数依赖集F中的各个函数依赖以帮助分析
用阿氏推理规则由F可推出:(S#,C#)→{S#,C#,G,TN,TS},即属性组合(S#,C#)是R的候选关键字(R只有这一个候选键)。(S#,C#)的一个值可惟一标识R中的一个元组(并且没有多余的属性)。
在R中,S#,C#是主属性;其余的属性G,TN,TS为非主属性。
非主属性G对键是完全依赖:(S#,C#)→G。但非主属性TN,TS对键是部分依赖(他们仅依赖于键的真子集C#)。由于R中存在非主属性对候选键的部分依赖,所以关系模式R不是2NF。
R中存在非主属性对候选键的部分依赖,将会引起数据冗余、数据操作异常等问题。可以把关系R无损联接地分解成两个2NF的关系模式:
ρ={R1,R2},R1={S#.C#,G},R2={C#,TN,TS}。
3)第三范式(3NF):
如果关系模式R为2NF,并且R中的每一个非主属性都不传递依赖于R的某个候选关键字,则称R是第三范式的,简记为3NF。
例续上例(R(学号S#,课程号C#,成绩G,任课教师TN,教师专长TS)),判断关系模式R1={S#.C#,G},R2={C#,TN,TS} 是否为3NF。
解:
(1) 在关系模式R1={S#,C#,G},候选关键字是(S#,C#),主属性是S#,C#,非主属性是G,函数依赖为(S#,C#)→G。 由于R1中不存在非主属性对候选关键字的传递依赖,所以关系模式R1是3NF。
(2) 在关系模式R2={C#,TN,TS},候选关键字是C#,主属性是C#,非主属性是TN,TS,函数依赖为C#→TN,TN→TS。由于R2中存在非主属性对候选关键字的传递依赖C#TS,所以关系模式R2不是3NF。
可以把关系R2无损联接地分解成两个3NF的关系模式:
ρ={R3,R4},R3={C#,TN},R4={TN,TS}。
4)Boyce-Codd范式(BCNF):
如果关系模式R为1NF,并且R中的每一个函数依赖X→Y(YÏX),必有X是R的超关键字,则称R是Boyce-Codd范式的,简记为BCNF。
从BCNF的定义中,可以明显地得出如下结论:
(1) 所有非主属性对键是完全函数依赖;
(2) 所有主属性对不包含它的键是完全函数依赖;
(3)没有属性完全函数依赖于非键的任何属性组合。
与2NF,3NF的定义不同,BCNF的定义直接建立在1NF的基础上。但实质上BCNF是3NF的改进形式。3NF仅考虑了非主属性对键的依赖情况,BCNF把主属性对键的依赖情况也包括进去。BCNF要求满足的条件比3NF所要求的更高。如果关系模式R是BCNF的,那么R必定是3NF,反之,则不一定成立。
续前例(学号S#,课程号C#,成绩G,任课教师TN,教师专长TS),判断两个3NF关系模式R3={C#,TN},R4={TN,TS}是否为BCNF。
解:在关系模式R3中有函数依赖C#→TN,决定因素C#是R3的键;
在关系模式R4中有函数依赖TN→TS,决定因素TN是R4的键;
R3,R4都满足BCNF的定义,所以,这两个关系模式都是BCNF。
4. 总结
第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段x → 非关键字段y
BCNF: 在3NF的基础上不存在关键字段决定关键字段的情况。
1、第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。
2、第二范式(2NF):关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码。
3、第三范式(3NF):关系模式R属于第一范式,且每个非主属性都不传递依赖于键码。
4、 BC范式(BCNF):关系模式R属于第一范式,且每个属性都不传递依赖于键码。
更多相关内容 -
关系模式分解
2020-01-02 12:14:10模式分解 模式S-C-M (S 学号,C 班级,M 班主任) 该模式设计不好,存在数据冗余、插入异常、删除异常和更新异常 ...检测是否在一个表中聚集了过多的属性的过程 模式分解来消除违反范式规则而带来...模式分解
模式S-C-M (S 学号,C 班级,M 班主任)
该模式设计不好,存在数据冗余、插入异常、删除异常和更新异常
p1 = {S-C(学号,班级),C-M(班级,班主任)}
p2 = {S-C(学号,班级),C-M(学号,班主任)}
p3 = {S-C(学号,班主任),C-M(班级,班主任)}
规范化理论:
- 检测是否在一个表中聚集了过多的属性的过程
- 模式分解来消除违反范式规则而带来的影响(插入、更新、删除异常,冗余大),构造合适的(更好的)数据模式
- 概念建模过程中规范化用于检验却总是很有帮助
数据依赖
- 一个关系内部属性与属性之间的一种约束关系(属性值时候相同)
- 现实世界属性间相互联系的抽象
- 数据内在性质
- 语义的体现
函数依赖FD
Sno Sname Ssex Sage a value b1 value c value d value a2 value b2 value c2 value d2 value … … … … an value bn value cn value dn value 定义: 设 R(U) 是一个属性集 U 上的关系模式, X 和 Y 是 U 的子集。若对于 R(U) 的任意一个可能的关系 r , r 中不可能存在两个元组在 X 上的属性值相等, 而在 Y 上的属性值不等, 则称“ X 函数确定 Y ”或“ Y 函数依赖于 X ”,记作 X → Y
若 Y 不函数依赖于 X ,则记作 X ↛ YFor example:
Sno → Ssex, Sno → Sage
假设不允许重名 Sno ←→ Sname
- 非平凡函数依赖
X → Y ,但 Y ⊈ X 则称 X → Y 为非平凡函数依赖
Y ⊈ X 换为 Y ⊆ X ,则 X → Y 为平凡函数依赖 (对于任一关系模式,必然成立) - 完全函数依赖
如果 X → Y ,并且对于 X 的任何一个真子集 X’ , 都有 X’ ↛ Y , 则称 Y 对 X 完全函数依赖,
- 部分函数依赖
- 传递函数依赖
多值依赖MVD
关系模式
五元组 : R ( U , D , D O M , F ) R(U, D, DOM, F) R(U,D,DOM,F)
- R:符号化的元组语义
- U:一组属性
- F:属性组U中属性所来自的域
- DOM:属性到域的映射
- F:属性组U上的一组数据依赖
把关系模式看作一个三元组: R < U , F > R<U,F> R<U,F>
U ={Sno, Sdept, Mname, Cno, Grade}// 数据冗余、更新异常、插入异常、删除异常 // 分解 S(Sno,Sdept,Sno → Sdept); SC(Sno,Cno,Grade,(Sno,Cno) → Grade); DEPT(Sdept,Mname,Sdept → Mname)
范式
范式: 是符合某种基本的关系模式的集合
- 1NF:每个分量必须是不可分开的数据项
- 2NF:符合1NF,每一个非主属性都完全函数依赖于任何一个候选码
- 3NF:符合2NF,消除非主属性对于码传递函数依赖
- BCNF:符合3NF,消除主属性对于码的部分与传递函数依赖
4NF:设R是一个关系模型,D是R上的多值依赖集合。如果D中存在凡多值依赖 X->Y时,X必是R的超码,那么称R是第四范式的模式
满足BCNF:
- 实现了模式的彻底分解
- 最高的规范化程度
- 消除了插入异常和删除异常。
规范化: 低级范式的关系模式通过模式分解,可以转换为若干个高一级范式的关系模式集合的过程。
3NF 和 BCNF的区别
BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的。或是关系模式R,如果每个决定因素都包含关键字(而不是被关键字所包含),则BCNF的关系模式。
例:配件管理关系模式 WPE(WNO,PNO,ENO,QNT)分别表仓库号,配件号,职工号,数量。有以下条件
a.一个仓库有多个职工。
b.一个职工仅在一个仓库工作。
c.每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件。
d.同一种型号的配件可以分放在几个仓库中。分析:由以上得 PNO 不能确定QNT,由组合属性(WNO,PNO)来决定,存在函数依赖(WNO,PNO) -> ENO。由于每个仓库里的一种配件由专人负责,而一个人可以管理几种配件,所以有组合属性(WNO,PNO)才能确定负责人,有(WNO,PNO)-> ENO。因为 一个职工仅在一个仓库工作,有ENO -> WNO。由于每个仓库里的一种配件由专人负责,而一个职工仅在一个仓库工作,有 (ENO,PNO)-> QNT。
找一下候选关键字,因为(WNO,PNO) -> QNT,(WNO,PNO)-> ENO ,因此(WNO,PNO)
可以决定整个元组,是一个候选关键字。根据ENO->WNO,(ENO,PNO)->QNT,故(ENO,PNO)
也能决定整个元组,为另一个候选关键字。属性ENO,WNO,PNO 均为主属性
,只有一个非主属性QNT
。它对任何一个候选关键字都是完全函数依赖的,并且是直接依赖,所以该关系模式是3NF。分析一下主属性。因为ENO->WNO,主属性ENO是WNO的决定因素,但是它本身不是关键字,只是组合关键字的一部分。这就造成主属性WNO对另外一个候选关键字(ENO,PNO)的部 分依赖,因为(ENO,PNO)-> ENO但反过来不成立,而P->WNO,故(ENO,PNO)-> WNO 也是传递依赖。
虽然没有非主属性对候选关键辽的传递依赖,但存在主属性对候选关键字的传递依赖,同样也会带来麻烦。如一个新职工分配到仓库工作,但暂时处于实习阶段,没有独立负责对某些配件的管理任务。由于缺少关键字的一部分PNO而无法插入到该关系中去。又如某个人改成不管配件了去负责安全,则在删除配件的同时该职工也会被删除。解决办法:分成管理
EP(ENO,PNO,QNT)
,关键字是(ENO,PNO)工作EW(ENO,WNO)
其关键字是ENO。
缺点: 分解后函数依赖的保持性较差。如此例中,由于分解,函数依赖(WNO,PNO)-> ENO 丢失了, 因而对原来的语义有所破坏。没有体现出每个仓库里一种部件由专人负责。有可能出现 一部件由两个人或两个以上的人来同时管理。因此,分解之后的关系模式降低了部分完整性约束。
模式分解实例
函数依赖理论
- 函数依赖集的闭包
- 用于发现所有蕴含的函数依赖
- 属性集的闭包
- 用于判断某属性集能够函数确定的其他因素
- 最小函数依赖集
- 用于寻找等价( 闭包相同) 的最小集,便于降低检测开销
- 无损分解
- 能够通过自然连接恢复原关系的分解策略
- 保持依赖
- 分解后的各子关系函数依赖集并集的闭包与分解前某关系函数依赖集的闭包相同
- 分解后的各子关系函数依赖集并集的闭包与分解前某关系函数依赖集的闭包相同
相关计算
实例:求解函数依赖集的闭包
算法:求属性集X 关于函数依赖集F 的闭包
实例: -
关系模式
2019-09-17 21:46:58第一范式(1NF):关系模式 R 的每一个分量是不可再分的数据项,则关系模式 R 属于第一范式。 第二范式(2NF):若关系范式 R∈1NFR\in1NFR∈1NF ,并且每一个非主属性完全依赖于码,则关系模式 R∈2NFR\in2NFR∈2NF...关系模式
第一范式(1NF):关系模式 R 的每一个分量是不可再分的数据项,则关系模式 R 属于第一范式。
第二范式(2NF):若关系范式 R ∈ 1 N F R\in1NF R∈1NF ,并且每一个非主属性完全依赖于码,则关系模式 R ∈ 2 N F R\in2NF R∈2NF。
换而言之,只要通过分解 1NF 将其中的非主属性对码的部分函数依赖消除,那么分解后得到的关系模式称为 2NF 。第三范式(3NF):若关系范式 R(U,F)中不存在这样的码 X ,属性组 Y 和非主属性 Z( Z ⊈ Y Z \nsubseteq Y Z⊈Y)使得 X → Y ( Y ↛ X ) X \rightarrow Y \ \ (Y \nrightarrow X) X→Y (Y↛X) , Y → Z Y \rightarrow Z Y→Z 成立,则关系模式 R ∈ 3 N F R \in 3NF R∈3NF。换言之,当消除了 2NF 中非主属性对码的传递函数依赖,得到的关系模式则称为 3NF 。
普通的关系模式通常因为存在部分依赖和传递依赖,而产生数据冗余和异常,所以需要将关系模式分解为性能较好的 3NF ,该模式不存在非主属性对码的部分函数依赖和传递函数依赖,所以性能较好。这种将普通的关系模式变换为 3NF 或更高级别范式的过程,称为 “关系模式的规范化处理”
例如,存在关系模式学生信息 StudentInfo 和函数依赖集合 F
StudentInfo(学号,姓名,地址,生源地,号码,所修课程编号,所修课程名称,所修课程学分)
F = {学号->姓名,学号->地址,地址->生源地,学号->号码,所修课程编号->所修课程名称,(学号,所修课程编号)->所修课程学分}
上面所示的关系模式是一个常见的 1NF ,每一个分量都无法再次分割。但是,如果直接使用该范式存储数据,那么将会有大量数据冗余,如果对学生号码进行修改,那么将需要对所有记录进行修改。
可以将 1NF 分解为 2NF ,即消除非主属性对码的部分函数依赖,这里的示例中,码为(学号,所修课程编号),那么将 StudentInfo 关系模式分解如下:
StudentInfo_1(学号,姓名,地址,生源地,号码)
StudentInfo_2(所修课程编号,所修课程名称)
StudentInfo_3(学号,所修课程编号,所修课程学分)
分解后的三个范式中的非主属性对其码都是完全函数依赖,但是,在 StudentInfo_1 中,仍然存在数据的冗余,因为非主属性
生源地
传递函数依赖于码学号
,继续分解,消除该传递函数依赖。StudentInfo_11(学号,姓名,地址,号码)
StudentInfo_12(地址,生源地)
由此,得到如下几个范式:
StudentInfo_11(学号,姓名,地址,号码)
StudentInfo_12(地址,生源地)
StudentInfo_2(所修课程编号,所修课程名称)
StudentInfo_3(学号,所修课程编号,所修课程学分)
这些范式都不存在部分函数依赖和传递函数依赖,所以都是第三范式。根据该范式进行数据的存储,能够使更好的避免数据的冗余及出错。
-
数据库关系模式的范式总结
2019-04-25 21:21:01目录 什么是关系模式的范式 第一范式(1NF) 第二范式(2NF) ...关系模式的范式是衡量关系模式好坏的标准。范式的种类与数据依赖有着直接联系,满足不同程度要求的关系称为不同的范式等级。其中,...目录
什么是关系模式的范式
关系模式的范式是衡量关系模式好坏的标准。范式的种类与数据依赖有着直接联系,满足不同程度要求的关系称为不同的范式等级。其中,满足最低要求的关系称为第一范式,简称1NF,以此类推,还有第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)和第五范式(SNF)等多种。不同的范式表示关系模式遵守的不同规则。
各种范式之间是一种包含关系: 1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF1
1.第一范式(1NF)
定义:若关系模式R的每个关系r的属性值都是不可分的原子值,则称R是第一范式1NF (First Normal Form)的模式。
如,关系模式R存放的是学生信息:
虽然看上去将出生日期分成年月日更准确,但这种情况下出生日期不再是基本属性而是由年、月、日三个分属性组成的复合属性,因此 该模式不满足1NF的范式要求。姓名 性别 出生日期 年 月 日 张三 男 1999 4 10 ... ... ... ... ...
应改成:
姓名 性别 出生日期 张三 男 1999/04/10 … … …
2.第二范式(2NF)
定义:1.对于FD W→A,若存在X⊆W有X→A成立,则称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。完全依赖也称为“左部不可约依赖”。
2.若A是关系模式R中候选键属性,则称A是R的主属性:否则称A是R的非主属性。
3.若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,则称R是第二范式(2NF)的模式。若数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。
简单来说在满足第一范式的情况下,候选键与其他键都是完全依赖函数,那么此关系模式就是第二范式。举个例子:关系模式如图所示,sno为学号,cno为课程号
sno cno grade 95001 1 92 95004 1 58 95002 2 90 95003 2 85 该关系模式中存在函数依赖:sno→grade,但该关系模式的主键是sno、cno,因此有(sno,cno)→grade,即存在非主属性对主键的部分依赖关系,所以此关系模式不满足第二范式要求。
应改成:
sno cno 95001 1 95004 1 95002 2 95003 2 sno grade 95001 92 95004 58 95002 90 95003 85 即通过模式分解,使任一非主属性都完全函数依赖与它的任一候选键,也就是消除非主属性对键的部分函数依赖。
3.第三范式(3NF)
定义:1.若x→Y, Y→A, 且Y-/->x和A⫋Y,则称X→A是传递依赖(A传递依赖于X)。
2. 若关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,则称 R是第三范式(3NF)的模式。若数据库模式中的每个关系模式都是3NF,则称其为3NF的数据库模式。3NF的目的是消除非主属性对键的传递函数依赖。
举个例子:
关系模式如图所示,Mname为系主任,sno为主属性sno sname ssex sage sdept Mname 95001 李勇 男 20 CS 张三 95002 刘晨 女 19 IS 李四 95003 王敏 女 18 MA 王五 95004 张立 男 19 IS 李四 95005 刘云 女 18 CS 张三 可知 sno→sname,sno→ssex,sno→sage,sno→sdept,sdept→Mname
因为sno→sdept,sdept→Mname
所以sno与Mname是传递依赖,因此该关系模式不满足第三范式要求
应改为:sno sname ssex sage sdept 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS 95005 刘云 女 18 CS sdept Mname CS 张三 IS 李四 MA 王五
4.BC范式(BCNF)
定义: 若关系模式R是1NF,且每个属性都不传递依赖于R的候选键,则称R是 BCNF的模式。若数据库模式中的每个关系模式都是BCNF,则称为BCNF的数据库模式。
举个例子:
关系模式如图所示:其中候选键(sno,cno),(sname,cno) ,假设不重名sno sname cno grade 95001 李勇 1 20 95001 李勇 2 30 95002 刘晨 2 19 95003 王敏 1 18 95004 张立 2 19 95005 刘云 1 18 该关系模式存在依赖:sno→sname,sname→sno,(sno,cno)→grade,(sname,cno)→grade
应该为:
sno sname 95001 李勇 95002 刘晨 95003 王敏 95004 张立 95005 刘云 sno cno grade 95001 1 20 95002 2 19 95003 1 18 95004 2 19 95005 1 18
5.第四范式
定义:设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性 Ai(i=1,2,…,n)存在有函数依赖 X→Ai(X必包含键)。那么 称R是第四范式的模式 。
也就是说,当一个表中的非主属性互相独立时(3NF),这些非主属性不应该有多值。若有多值就违反了第四范式。
举个例子:
当我们统计一个人电话号码时,他可能有多个手机号码或固定电话。name为主键
这时关系模式为:name cellphone telephone 李勇 131xxxxxxxx 0551-xxxxxxxx 李勇 139xxxxxxxx 0539-xxxxxxxx 这样在日后维护中可能产生不必要的麻烦,比如当用户弃用第一行的手机号码和第二行的固定电话号码时,两行会合并吗?
此时违反了第四范式要求应改为:
name type phone 李勇 telephone 0551-xxxxxxxx 李勇 cellphone 139xxxxxxxx … … …
6.第五范式
定义:如果关系模式R中的每一个连接依赖均由R的候选码所隐含2,则称此关系模式符合第五范式。
例如:有一个销售信息表。
name company item 李勇 xxxx xxxx … … … 此时违反了每一个连接依赖均由R的候选码所隐含的要求。
应改为:name company 李勇 xxxxx … … company item xxxxx xxx … . name item 李勇 xxx … …
总结:
规范化的过程就是在数据库表设计时移除数据冗余的过程。随着规范化的进行,数据冗余越来越少,但数据库的效率也越来越低. 这就要求在数据库设计中,能结合实际应用的性能要求,规范到合适的范式。
规范化的过程可概括如下:
(1)取原始的1NF关系投影,消去非主属性对键的部分函数依赖,从而产生一组2NF关系。
(2)取2NF关系的投影,消去非主属性对键的传递函数依赖,产生一组3NF关系。
(3)取这些3NF的投影,消去决定因素不是键的函数依赖。产生一组BCNF关系。
(4)取这些BCNF关系的投影,消去其中不是函数依赖的非平多值依赖,产生一组4NF关系。
(5)取4NF关系的投影,消除不是由候选码所蕴含的连接依赖,产生一组5NF关系。
-
关系模式规范化(设计范式)
2020-10-28 19:13:56关系数据库中的关系满足一定要求的,满足不同程度要求的为不同的范式。满足最低要求的叫第一范式,简称1NF;在第一范式的基础上满足进一步要求的称为第二范式,简称2NF,其余范式以此类推。对于各种范式之间有如下... -
关系模式和范式判断、候选码主码(笔记)
2019-05-27 18:32:39第一范式是关系模式的基本要求。 第二范式(2NF):在满足第一范式的前提下,非主属性非部分依赖于主关键字。要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式... -
关系数据理论详解(模式分解与四大范式)
2020-12-01 07:09:231NF 2NF 3NF BCNF 模式分解 -
将E-R图转换成关系模式
2019-04-26 20:49:57为E-R图中的每个常规(强)实体类型E,创建一个关系模式E 实体类型E的简单属性,直接放入关系模式E 实体类型E的复合属性,只把其简单成员属性放入关系模式E 如果实体类型E有多个候选键,选择其中一个,作为关系模式... -
数据库关系模式的规范化
2021-04-03 15:23:11在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即... -
数据库:第二章 《关系模式》概念总结
2020-03-31 11:27:371. 关系模式的相关概念: 域: 域是一组具有相同数据类型的值的集合 笛卡尔积: 域上的一种集合运算 其中每一个元素(d1,d2,d3,……dn)叫做一个元祖,元祖中的每一个值叫做一个分量。 【一个域允许的不同取值个数... -
数据库系统原理-函数依赖和关系模式分解
2019-11-17 23:47:03数据库系统原理-函数依赖和关系模式分解 目录数据库系统原理-函数依赖和关系模式分解第一范式如何处理非原子值原子性关系数据库设计中易犯的错误模式分解无损连接分解优化关系模式的步骤函数依赖函数依赖定义函数... -
(2)关系模式
2019-08-24 22:04:481.关系模式数据结构 ①关系 ②属性 ③值域 ④元组 ⑤分量 ⑥关系模式 ⑦关系数据库 ⑧各种码以及主属性 2.关系模型操作 3.关系模型完整性约束 ①实体完整性约束 ②参照完整性 ③用户定义完整性 关系... -
关系模式的范式(带例题详细解析)
2020-08-09 19:11:57一些概念 1.码:码是一个或多个属性的集合,是唯一标识实体的属性 2.超码:一个或多个属性的集合,超码中的属性可以在一个实体集中唯一地标识一个实体 ...如果关系模式R中所有的属性均为原子属性,即每个属性都是 -
关系模式的规范化
2016-09-29 13:27:42原文路径:...了解关系模式规范化的作用 掌握第一范式-重点 掌握第二范式-重点 掌握第三范式-重点 回顾关系 -
数据库 - 关系模式函数依赖
2015-05-07 09:09:45关系数据库逻辑设计 ...关系模式由五部分组成,即它是一个五元组: R(U, D, DOM, F) R: 关系名 U: 组成该关系的属性名集合 D: 属性组U中属性所来自的域 DOM: 属性向域的映象集合 F: 属性间数据的 -
数据库分析与设计:ER与关系模式
2020-04-20 10:18:533NF的关系模式: 3NF是指在关系中,一个非主属性既不部分依赖于码也不传递依赖于码。 在得到的关系模式中,只有学术期刊、论文、作者三个关系有属性。在论文和作者两个关系模式中,因为通过论文编号就可以找到论文... -
Java常见设计模式总结
2021-09-18 17:18:54项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。... -
浅析如何把ER模型转换为关系模式
2020-05-12 10:52:22本篇文章讲解的内容是“浅析如何把ER模型转换为关系模式”。在做ER图题目时,有些同学还是经常会做错,最主要原因是没有理解他们之间转换的原理。本文通过理论分析和例题来浅析这块知识点,当理解后,可以趁热打铁,... -
【通俗易懂】关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂
2019-01-10 18:26:14本来是为了复习数据库期末考试,结果找了一圈都没有发现比较好的解释,通过查阅资料和...1NF是指数据库表的每一列都是不可分割的基本数据项,即实体中的某个属性不能有多个值或者不能有重复的属性。 2NF要求属性... -
关系数据库理论----如何判断关系模式规范化达到第几范式
2020-04-14 17:56:16根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式 然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式. 通俗... -
关系模式2NF,3NF,BCNF的判定
2020-03-04 22:40:572NF:每一个非主属性都完全依赖于码 判定:不存在非主属性对关键字的部分依赖 例如:R(A,B,C,), F={A→B,B→A,C→A} 第2范式,主码是C,不存在非关键字部分依赖关键字,所以属于第2范式。存在非关键字对任一... -
数据库关系模式题型大全
2016-07-09 09:34:01关系模式 (1) 求等价极小函数依赖集F ’(2) 判断关系模式的规范化程度(3) 模式分解(4) 求候选键(5) 判断p是否具有无损连接性 -
数据库题目之关系数据理论
2019-01-10 15:14:46一、选择题 1、关系规范化中的删除操作异常是...2、设计性能较优的关系模式称为规范化,规范化主要的理论依据是 。 A.关系规范化理论 B.关系运算理论 C.关系代数理论 D.数理逻辑 【答案:】A 3、规范化... -
数据库原理——关系模式的范式的简明判断
2019-04-19 01:07:55????求候选键: 只出现在函数依赖(FD)左边的,或者没出现在 FD 中的属性一定是主属性。(组成候选键的属性都叫主属性) ...设关系模式 R(ABCDEG),F = {A → D,E → D,D → B,CD → A} 照理先求 Fmin ,但是... -
模式与数据库与表的关系
2018-11-15 17:13:55模式与数据库、数据库中的表的关系: 1个数据库下,可以有多个模式。 1个模式下,可以有0个或多个表 。 首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行... -
数据依赖、四种范式、投影分解法、关系模式规范化 | 关系数据库
2020-02-21 22:47:08数据依赖是一个关系内部属性与属性之间的一种约束关系,这种关系是通过属性间值的相等与否体现的数据相关的关系。 多种类型的数据依赖:函数依赖和多值依赖 例如:Sname和Sdept函数依赖于Sno,记做Sno -> Sname... -
关系模式规范化举例理解:第一范式、第二范式、第三范式
2021-03-27 16:40:29在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系型数据库。 例如,这样是符合的:student(id,name,age,class) 而这样就不符合:student(id,... -
数据库复习11——关系模式与范式
2015-06-30 16:53:34数据库复习CH11 数据库模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,关系型数据库的模式又叫关系模式,我所理解的关系模式就是数据库中表结构的定义以及多张表之间的逻辑联系关系模式的设计就是根据一...