当前位置:首页 » 操作系统 » 数据库闭包

数据库闭包

发布时间: 2023-09-01 04:51:02

㈠ 关于数据库闭包的问题

已知 关系模式E<U,F>,其中U={A,B,C,D,E};F={AB→C,B→D ,C→E,EC→B,AC→B}。
求(AB)F+
解:设X(0)=AB
计算X(1);逐一的扫描F集合中各个函数的一览,找左部位A,B和AB的函数依赖。得到两个AB→C,B→D。于是X(1)=AB∪CD=ABCD.
因为X(0)≠X(1),所以再找出左部位ABCD子集的那些函数依赖 又得到,C→E,AC→B
于是X(2)=X(1)∪BE=ABCDE.
因为X(2)已等于全部属性集合,所以(AB)F+=ABCDE

㈡ 数据库:关系模式R(A,B,C,D,E)...函数依赖F={A-D,E-D,D-B,BC-D,CD-A} 求C的闭包坐等高手。。

①A -> BC, B -> D所以A -> D所以A -> DC -> E
所以呢A -> ABCDE
②E -> A, A -> ABCDE, 所以E -> ABCDE
③CD -> E, 所以呢CD -> ABCDE
④B -> D, BC -> CD,所以呢BC -> ABCDE
能推出abcde而又不包含多余成分的就是候选键 所以上面仨是候选键 A+的话是求闭包吧

㈢ 关系数据库设计理论

数据依赖是关系内部属性之间相关联系的表达,是语义的体现,是构成数据的约束,大多数数据依赖是函数依赖,它是关系中“键”概念的范化。
使用数据依赖这一概念来定义关系模式的规范形式,即规范化理论。

函数依赖FD
A1,A2,……,An——>B1,B2,……,Bm
(若两个元组A1到An上相同则B1到Bm也相同,A1到An函数决定B1到Bm)

从已知FD推断其它FD
FD的集合T,S
T与S等价:关系实例集合满足S与其满足T的情况完全一样
(S是从T中推断而来,T也是从S中推断而来)
S从T中推断而来:满足T的关系实例也满足S(S蕴涵于T)

分解/结合规则:

平凡函数依赖
一个约束对所有关系实例都成立,且与其它约束无关
平凡FD的右边是左边的子集
平凡依赖规则:

(注:
非平凡函数依赖:仅当其右边属性集中至少有一个属性不属于左边的集合。例如: title year →year length
完全非平凡函数依赖:仅当其右边集合中的属性均不在左边集合中。例如: title year →length)

属性的闭包
S下{A1,A2,……An}的闭包{A1,……An}上标+
就是A中可以从S推断出来的右边变成一个集合
从一个给定集合A出发,不断扩展这个集合,对于S中的FD分解使右边只有一个属性,然后对于FD,只要左边都在集合中就把右边也加到集合中。p42

传递规则

函数依赖的闭包集合
求函数依赖集F的闭包F+:求所有属性子集的闭包(不考虑空集),然后利用每个闭包来写FD(A->空集也要写)

S的基本集:任何和S等价的FD集合

最小化基本集:右边均是单一属性;删除任何一个FD后不再是基本集;
对于任何一个FD,若删除其左边一个或多个属性,不再是基本集

投影函数依赖
R投影到R1
函数依赖集S的投影为满足以下条件的FD的集合:1.从S推断而来2.只包含R1中的属性
对R1的所有子集求闭包,得到FD的基本集,简化为最小基本集

“求属性子集闭包”的几个主要应用
1.求所有候选键
2.求所有非平凡FD
3.求所有违反BCNF的非平凡FD(投影函数依赖应用1)
4.求非平凡FD的最小基本集(投影函数依赖应用2)

简化规则:
1.不必考虑空集(适用于1-4)
2.不必考虑不能推出非平凡函数依赖的属性子集X(适用于1-4)
2.1属性子集X的任何一个子集都不是FD的左部,无法推出非平凡FD,无需求该属性子集X的闭包。如例1.
2.2不必考虑属性全集U的闭包。
2.3 属性子集X+的闭包依然是X+本身,无法推出非平凡FD,不需要再求X+的闭包
3.如果已知属性子集X, X+是属性全集,那么就无需考虑任何X超集的闭包。(注意:!!!!!!不适用于2!!!!!!)

异常:冗余;更新异常;删除异常

分解关系
将一个关系用多个不存在异常的关系替换

Boyce-Codd范式BCNF
每个非平凡FD的左边都必须是超键
任何一个二元关系属于BCNF
(BCNF范式在3NF的基础上,消除主属性对键的部分函数依赖与传递函数依赖)

分解为BCNF
输入:关系R0其上的函数依赖集S0
输出:由R0分解出的关系集合,每个关系都属于BCNF
方法:R=R0 S=S0
1.检验R是否属于BCNF若是则返回{R}
2.有BCNF违例X->Y,计算X的闭包,令R1为X的闭包,R2为X与不在X的闭包中的属性
3.计算R1,R2的投影函数依赖S1,S2
4.递归检验R1,R2

分解的优势
1.消除异常
2.信息的可恢复
3.依赖的保持
BCNF可保持1,2
3NF可保持2,3

无损连接的分解
子关系经连接(这里指自然连接)运算可恢复原关系
保持依赖的分解
子关系的函数依赖集可蕴涵原函数依赖集

从分解中恢复信息
无损连接:可通过连接分解的各个关系重构原关系
若Y->Z在关系R上成立,且R的属性集为X∪Y∪Z,则R=π{下标X∪Y}(R)⋈π{下标Y∪Z}(R)
chase算法:检验一个分解是否含有无损连接,即判断是否可以根据F中的FD来证明所有属于π{下标s1}(R)⋈π{下标s2}(R)⋈……⋈π{下标sk}(R)的元组t也属于R

依赖的保持
BCNF无法保持 p57例3.25

第三范式3NF
拥有无损连接和依赖保持性质
条件:对于每个非平凡FD,或者其左边是超键,或者其右边仅由主属性构成

㈣ 数据库属性集合的闭包怎么求

计算属性集闭包X+的算法如下:
输入:X,F
输出:
X+
迭代算法的步骤:

选取X+的初始值为X
,即X+={X};

计算X+,
X+={XZ}
,其中Z要满足如下条件:
YX+,且F中存在一函数依赖Y→Z。实际上就是以X+中的属性子集作为函数依赖的决定因素,在F中搜索函数依赖集,找到函数依赖的被决定属性Z放到X+中。

判断:如果X+没有变化?或X+等于U?则X+就是所求的结果,算法终止。否则转②。
因为U是有穷的,所以上述迭代过程经过有限步骤之后就会终止。

㈤ 数据库中的闭包的意思

闭包是可以包含自由(未绑定)变量的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量的存在,相关变量引用没有释放)和为自由变量提供绑定的计算环境(作用域)。在 Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby 和 Python 等语言中都能找到对闭包不同程度的支持。

闭包的价值在于可以作为函数对象 或者匿名函数,对于类型系统而言这就意味着不仅要表示数据还要表示代码。支持闭包的多数语言都将函数作为第一级对象,就是说这些函数可以存储到变量中、作为参数传递给其他函数,最重要的是能够被函数动态地创建和返回。

热点内容
快速喊话脚本 发布:2025-02-01 04:16:48 浏览:885
如何分辨普拉多的配置 发布:2025-02-01 04:11:45 浏览:680
linuxc文件删除 发布:2025-02-01 04:11:33 浏览:217
c语言稀疏矩阵转置矩阵 发布:2025-02-01 03:47:57 浏览:531
坦克世界挂机脚本有哪些 发布:2025-02-01 03:07:41 浏览:134
串口编程at 发布:2025-02-01 03:06:05 浏览:909
合资汽车配置有什么 发布:2025-02-01 02:56:07 浏览:79
wifi共享精灵源码 发布:2025-02-01 02:40:15 浏览:973
java软件怎么安装 发布:2025-02-01 02:40:09 浏览:549
河北税务局电子密码是什么 发布:2025-02-01 02:40:07 浏览:835