-
2021-06-06 13:48:43
通用方法
输入:关系模式R<U, F>
输出:具有无损连接性和函数依赖保持性的3NF分解ρ = {R1, R2, …, Rk}.方法:
(1)最小化。求F的最小函数依赖集Fm。
(2)排除。若Fm中存在X->A,使得XA = U,则R已是3NF,转(6)。
(3)独立。若R中某些属性未出现在Fm中任一函数依赖的左部或右部,则将它们从R中分出去,单独构成一个关系子模式。
(4)分组(相同左部原则)。对于Fm中的每一个X->A,都构成一个关系子模式XA(但若有X->A1, X->A2,…, X->An,可用合并规则便为X -> A1A2…An作为ρ的一个子模式)。
经过以上几步,求出函数依赖保持性分解:ρ = {R1, R2, …, Rk}。
(5)添键。若ρ中没有一个子模式含有R的候选键X,则令ρ = ρ ∪ {X};若存在Ri包含于Rj(i ≠ j),则删去Ri。
(6)停止分解,输出ρ。
此时ρ是既具有无损连接性又具有函数依赖保持性的3NF分解。例子
关系模式R(A, B, C, D, E, P, G, H, I, J)满足下列的函数依赖:{AB -> E, ABE -> GP, B -> PI, C -> J, CJ -> I, G -> H}。
(1) 求出最小函数依赖集Fm = {AB -> E, AB -> G, B -> P, B -> I, C -> J, C -> I, G -> H},候选键为ABCD。(2)不存在满足X->A,使得XA = U的依赖。
(3)D未存在在任意一函数依赖中,故独立出去,R = R - {D} =
{A, B, C, E, P, G, H, I, J}。(4)由于AB -> E, AB -> G有相同左部,故合并为AB -> EG,同理有B -> PI, C -> JI。
(5)R中不含候选键ABCD,故添加ABCD进入。
(6)输出ρ = {ABEG, BPI, CJI, GH, ABCD},即为具有无损连接性和依赖保持性的3NF。
更多相关内容 -
无损连接和保持依赖性(有脑就行,尽量说人话版本)
2021-07-17 22:31:40分成几个表后做自然连接,在数据依赖(约束)上是否等价:分解的保持依赖性 像上表就不符合内容等价性,r被分解成r1和r2,自然连接以后成,容易看出该表与原来r的表增加了几行数据,这些增加的数据有可能是错的,...- 模式分解
- 无损连接
- 保持依赖
模式分解:
def : 把一个关系模式,分解成若干个关系模式。(人话:把一个表分解成几个表)
主要关注点:1. 分成几个表后做自然连接,在内容上与原来的表内容是否等价:分解的无损连接性
2. 分成几个表后做自然连接,在数据依赖(约束)上是否等价:分解的保持依赖性
像上表就不符合内容等价性,r被分解成r1和r2,自然连接以后成
,容易看出该表与原来r的表增加了几行数据,这些增加的数据有可能是错的,因此数据内容上不等价。
什么情况下需要分解呢
当关系模式不符合关系范式时分解(一般是第三范式)。分解的规则是:当将每一个函数依赖单独组成一个关系。下面贴一张哈工大战老师的PPT结合看比较好
无损连接性(判断内容是否等价)
step1: 把分解的两个表(设为R1和R2)的交集找出来。
step2: 判断这个交集是否为R1的超码或者是R2的超码(超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一地标识一个实体)。
如果step2满足,那么则有无损连接性
具体例子(必看)https://blog.csdn.net/qq_43179428/article/details/105706351
保持依赖性(判断数据依赖上是否等价)
直接判断在原来的未被分解的表中的每个函数依赖的左右两边的属性是否都在同一个被分解的表中。具体例子看https://blog.csdn.net/qq_43179428/article/details/105706351必看!!
-
数据库保持依赖算法
2018-05-28 19:51:50数据库保持依赖算法 存在一个关系模式R,将此关系模式分解成{RiRi R_i },且i ∈∈ \in{1,2,3,4,……n} 此关系模式对应有函数依赖 F 有如下算法(伪代码)判断是否该关系模式分解为保持依赖的: for each (α→...数据库保持依赖算法
存在一个关系模式R,将此关系模式分解成{ Ri R i },且i ∈ ∈ {1,2,3,4,……n}
此关系模式对应有函数依赖 F
有如下算法(伪代码)判断是否该关系模式分解为保持依赖的:
for each (α→β)∈F ( α → β ) ∈ F //计算F中α在所有 Ri上的属性闭包α+ R i 上 的 属 性 闭 包 α +
result := α
for each Ri∈{Ri} R i ∈ { R i }
t=(result∩Ri)+∩Ri t = ( r e s u l t ∩ R i ) + ∩ R i
result=result∩t r e s u l t = r e s u l t ∩ t
if β∈result β ∈ r e s u l t
// 对于α toβ函数依赖,α+中存在β中的所有元素,即α→β成立 对 于 α t o β 函 数 依 赖 , α + 中 存 在 β 中 的 所 有 元 素 , 即 α → β 成 立
continue
else
NO-depredent-preserving-decomposition
-
判断模式分解是否保持函数依赖?
2018-10-17 05:22:12判断模式分解是否保持函数依赖? 判断模式分解是否保持函数依赖? 判断模式分解是否保持函数依赖? -
数据库中的无损连接分解和是否保持函数依赖的判定
2018-06-11 17:48:45首先了解一下几个概念: 1)把一个关系模式分解成若干个关系模式的过程,称为关系模式的分解。 2)把低一级的关系模式分解为若干...给数据库带来潜在的不一致性。对于第二句话,根据不同语义,分解的原则也不尽相 ...首先了解一下几个概念:
1)把一个关系模式分解成若干个关系模式的过程,称为关系模式的分解。
2)把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的。
3)只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义。
对于第一句话,为什么需要分解关系模式?因为原来的关系模式可能造成数据冗余或
给数据库带来潜在的不一致性。对于第二句话,根据不同语义,分解的原则也不尽相
同,所以方法肯定是不唯一的,譬如U={A,B,C},根据不同原则(随便你自己定),
可能分成(A,B)(A,C)也可能分成(B,C)(A,C)。对于第三句话,则是本文所要
讲的内容。
为了保证分解后的关系模式与原关系模式等价,我们要判定 1)分解后形成的行的关
系模式中是否为无损连接 2)是否保持函数依赖
一、无损连接的判定:
1)如果分解后的的关系模式是形如{U1,U2}这,里面只有两个,那很好做,就判断
或
是否成立,成立的话肯定是
无损连接。
2)如果是两个以上{U1,U2,U3....}这种,那就比较麻烦了,比如,有属性集,
ABCDEF,存在这样的函数依赖集{A->BC , CD->E , B->D , BE->F , EF->A},然后有
这样的分解{ABC , BD , BEF}。
例如:
设U1=ABC,U2=BD,U3=BEF,根据提供的函数依赖集,我们可得U1存在这样的
函数依赖A->BC,U2上的函数依赖是 B->D, U3的函数依赖是BE->F。
1)于是可构造这样的表格。
G A B C D E F A->BC B->D BE->F 2)各自判断A,B,C,D,E,F是否有在G列的函数依赖中,如果有记为ai,i表示第几列,否
则记为bji,表示第j行第i列
如:
G A B C D E F A->BC a1(A有在函数依赖中,此行为第一行) B->D BE->F b31(A没有,此列为第一列) 这样我们可得到图:
G A B C D E F A->BC a1 a2 a3 b14 b15 b16 B->D b21 a2 b23 a4 b25 b26 BE->F b31 a2 b33 b34 a5 a6 3)接下来是关键的,如果我们经过一系列变换得到有一行是这样的排序
{a1,a2,a3,a4,a5,a6...},即不存在bji,那我们就认为,该分解是无损连接。
4)变换过程:为了方便,我们可以按A->BC, B->D,BE->F这个顺序来(随你喜
欢)。
第一遍,根据A->BC,我们知道主健是能唯一标识一个元组的,也就是说如果
A中存在着两个属性值是相同的,毫无疑问,他们推出的BC的值肯定也是相同的。从
表格中我们遍历A列,没有发现有相同的属性组,那就跳过。
第二遍, 根据B->D,因为B列属性值相同,那我们修改D列。修改时遵照这样的一个
规则,如果D中有ai这样的值,那么宣布修改为ai,如果没有,修改成该列的第一行的
第一个值。从表格中我们可以发现D中有a4,那么修改后变成:
G A B C D E F A->BC a1 a2 a3 a4 b15 b16 B->D b21 a2 b23 a4 b25 b26 BE->F b31 a2 b33 a4 a5 a6 第三遍,根据BE->F,找一组BE相同的值,发现不存在,即不存在类似
{a1,a2,a3,a4,a5,a6}这样的序列,即该分解不是无损连接分解。
二、是否保持函数依赖?
这个的判断方法就比较简单了,还是这道题,有属性集,ABCDEF,存在这样
的函数依赖集{A->BC , CD->E , B->D , BE->F , EF->A},然后有这样的分解
{ABC , BD , BEF}。
设U1=ABC,A->BC,U2=BD,B->D ,U3=BEF,BE->F ,即我们不能推出 CD->E
,EF->A,所以也不具有保持函数依赖的特性。
-
转换成3NF既有无损连接性又保持函数依赖的分解
2019-06-30 21:32:27转换为3NF的保持函数依赖的分解 步骤: 1、求关系模式R<U,F>的最小依赖集Fm。 2、找出所有不在Fm中出现的属性,这些属性构成R0<U0,F0>。把这些属性从U中去掉,剩余的属性仍记为U。 3、若Fm中存在X→A... -
函数依赖保持性
2011-05-16 23:54:00考虑右图所示的关系模式,比较几个分解方案,是否具有函数依赖保持性 学生(学号,系属,主任) F={学号→系属,系属→主任} 分解1 ρ 1 ={P(学号),Q(系属),R(主任)}. F1=F2=F3=φ, G + =(F1→F2→... -
3NF既具有无损连接性又保持函数依赖的分解算法
2015-07-14 16:42:353NF既具有无损连接性又保持函数依赖的分解算法,基于SQL Server数据库,若有不足之处,望IT同僚指出、批评。 -
数据库系统原理范式分解——保持函数依赖与无损连接性练习题
2020-07-03 12:57:52(A2,A6)→ A4 },则关于R既保持 依赖又无损连接地分解成第三范式,分解正确 的是 A.p={R1(A2,A3, A5), R2(A1,A3,A6), R3(A2,A4,A6) } B.p={R1(A2,A3, A5), R2(A1,A3,A6), R3(A2,A4,A6),R4(A1,A2) } C.p= {R1(A2,... -
无损分解和保持依赖的判断
2013-03-24 19:19:26大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断比较复杂,考的可能性不大,因此我们只对“一个关系模式分解成两个模式”这种类型的题的相关判断做一个总结。... -
无损分解和保持依赖
2020-04-23 14:01:40大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断比较复杂,考的可能性不大,因此我们只对“一个关系模式分解成两个模式”这种类型的题的相关判断做一个总结。... -
判断分解的无损连接性和保持函数依赖
2019-06-29 21:36:41判断无损连接性: 方法一:无损连接定理 关系模式R(U,F)的一个分解,ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是: U1∩U2→U1-U2∈F+或U1∩U2→U2-U1∈F+ 方法二:算法 ρ={R1<U1,... -
关系规范化之分解的函数依赖保持性判定
2016-05-01 23:22:04分解的依赖保持性判定 定义:对于R(U,F), R(U,F)的分解p={R1(U1,F1),(U2,F2),...,Rk(Uk,Fk)},其中,F1,F2,...Fi,分别对应为F中在R1,R2,...Rk上的函数依赖集合。 令G=F1 U F2 U F3...U Fk(多个函数依赖... -
关于超空间非自治动力系统敏感依赖性的一些研究 (2014年)
2021-04-28 13:22:18旨在讨论非自治动力系统和其对应超空间非自治动力系统上的敏感依赖性. 研究了非自治动力系统敏感依赖性和其对应超空间非... 得到了一个使得(超空间) 非自治动力系统敏感依赖性在其任意次迭代系统上得以保持的充分条件. -
最小函数依赖集,候选码,保持3NF依赖性的分解例题
2020-04-23 15:04:32设关系R(ABCDE)及R上成立的...(3)求具有无损连接且保持函数依赖性的3NF分解。 答: (1) ①:将函数依赖右边全变为单属性: F = {A→D, A→B, E→D, D→B,BC →D, DC →A}。 ②:检查每一个函数依赖是否必须: ... -
数据库分解-含孤立属性的三范式无损连接保持依赖分解——以S-T表为例
2022-03-31 15:53:59数据库3NF分解 对常规的S-T表三范式分解进行了改进 增加了包含孤立属性P的S-T三范式无损连接保持依赖分解过程 -
一个无损连接和保持函数依赖性的3nf分解
2011-01-06 23:29:00R={F,G,H,I,J},候选码是JH,F={F->I,J->I,I->G,GH->I,IH->F},求R的无损连接和保持函数依赖性的算法根据题目,可以知道F=Fc已经是正则覆盖了。于是以每个alpha->beta的依赖作为一个Ri,得到R1(FI),R2(JI),R3(GI),R4... -
数据库模式分解----如何判断保持无损连接性和保持函数依赖
2021-05-08 09:37:08数据库模式分解----如何判断保持无损连接性和保持函数依赖 书上的算法写的太抽象了!看了半天!简单用人话解释一下! 在之前首先要了解一下属性集的闭包的概念 属性集的闭包 令α为一属性集。我们称在函数依赖集F下... -
判断是否保持函数依赖
2017-06-15 15:52:09保持依赖的判断。 如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。 如果上述判断失败,并不能断言分解不是保持依赖的,还要使用下面的通用方法来做... -
转换成3NF的保持无损连接和函数依赖的分解
2014-08-28 15:41:31转换成3NF的保持无损连接和函数依赖的分解 算法3: 例2:关系模式R,其中:U={C,T,H,R,S,G}, F={CS→G,C→T,TH→R,HR→C,HS→R},分解成3NF并保持无损连接和函数依赖。 解:(1) 根据... -
通过示例理解数据库相关概念(五、无损连接,无损分解,依赖保持性等)
2019-10-06 18:00:01上篇记录了范式相关的概念和示例,原则上所设计的数据库应该满足范式。对于不满足范式的关系模式,解决的...最后体会一句话:无损分解性保证了模式分解不丢失信息,而保持函数依赖性则可以解决数据异常操作的现象。 -
模式分解是否保持函数依赖的判断方法以及例子
2020-04-05 12:16:23保持依赖的判断。 如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(充分条件)。 如果上述判断失败,并不能断言分解不是保持依赖的,因为上面只是充分条件,还要使用下面的通用... -
判断是否为无损连接,保持函数依赖
2020-04-07 11:37:07判断无损连接性: 方法一:无损连接定理 关系模式R(U,F)的一个分解,ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是: U1∩U2→U1-U2 ∈F+ 或U1∩U2→U2 -U1∈F+ 方法二:算法 ρ... -
模式分解保持函数依赖判断——数据库考试复习
2021-04-29 21:40:20R的一个分解为R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE),判断这个分解是否具有函数依赖性。 分解出的R1 F1{A—>D} R2 F2{Q} R3 F3{Q},R4(CDE) F4(DE->C,C->D} A->C、B->C、CE->A没有被覆盖。... -
数据库模式分解是否为无损连接和是否保持函数依赖的判断方法
2021-04-21 12:08:25是否为无损连接 方法一:无损连接定理 关系模式R(U,F)的一个分解,ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分...的一个分解,U={A1,A2,…,An},F={FD1,FD2,…,FDp},并设F是一个最小依赖集,记FDi为X -
关系模式分解,如何判断模式分解无损连接性和是否保持函数依赖?算法举例说明
2020-04-19 18:41:34将该函数依赖集合最小化 这题可以明显看出函数依赖的传递性,因此去除冗余的函数依赖:Bid->Bname 最严谨的步骤是利用分解规则,假设冗余求闭包的方法来最小化函数依赖集合。这题比较简单不是重点讲述的题目,因此... -
无损连接,函数依赖性判定
2017-06-28 21:56:42复习数据库概论发现这个有点不懂,在百度之后,又看了下书,发觉这个方法是最简单的,最有效,最直接的。关于无损连接其实很简单,也还有另外一种方法...分解是保持依赖的当且仅当上述过程中F的 所有依赖都被保持。