Database 依赖保持
因此,我正在查阅我的数据库笔记和资料,试图为即将到来的采访更新自己的一般概念和术语。然而,我一直被依赖性和无损连接分解所困扰。我已经搜索了所有地方,看到了很多数学方程,但我正在寻找一个简单明了的英语回答或例子 我发现一个powerpoint演示了一个我不能完全理解的例子。它贴在下面Database 依赖保持,database,database-normalization,functional-dependencies,Database,Database Normalization,Functional Dependencies,因此,我正在查阅我的数据库笔记和资料,试图为即将到来的采访更新自己的一般概念和术语。然而,我一直被依赖性和无损连接分解所困扰。我已经搜索了所有地方,看到了很多数学方程,但我正在寻找一个简单明了的英语回答或例子 我发现一个powerpoint演示了一个我不能完全理解的例子。它贴在下面 R = (A, B, C)F = {A → B, B → C) Can be decomposed in two different ways R1 = (A, B), R2 = (B, C) Lossless-
R = (A, B, C)F = {A → B, B → C)
Can be decomposed in two different ways
R1 = (A, B), R2 = (B, C)
Lossless-join decomposition:
R1 ∩ R2 = {B} and B → BC
Dependency preserving
R1 = (A, B), R2 = (A, C)
Lossless-join decomposition:
R1 ∩ R2 = {A} and A → AB
Not dependency preserving (cannot check B -> C without computing R1 ⋈ R2)
所以我理解有一个→ B和B→ C表示你们之间有一个“参照物”,而a→ B和A→ C表示B和C之间没有引用或链接
所以
- 如果A被删除,那么B和C就没有关系了
- 如果B被删除,您仍将有A→ C
- 如果删除了C,您仍将有一个→ B
- 如果A被删除,您仍将拥有B的关系→ C
- 如果B被删除,那么A和C就没有关系了
- 如果删除了C,您将拥有a的关系→ B
如果有人能帮我澄清这一点,我将不胜感激。无损连接并不意味着任何元组丢失或在连接后无法恢复。无损连接意味着产生虚假元组,导致“额外”行(元组)和“信息”丢失
简单地说,我认为当我们在一个子模式的属性中找到FD的两面时,依赖关系就被保留了。(如果我错了,请有人纠正我)。将关系R分解为R1和R2是无损连接分解,如果您可以通过连接关系R1和R2(形式R1)来构造R⋈ R2你可以得到R) 为了将关系R分解为R1和R2是无损的,它必须满足以下两个条件之一:
1. R1 ∩ R2 -> R1
2. R1 ∩ R2 -> R2
如果上面的关系没有任何意义,那么就这样想,当你与2个关系R1和R2相交并获得公共属性时,如果公共属性能够确定关系中的任何一个,那么这个(这些)公共属性就是获得的关系的候选键(想想为什么?)因此,您可以使用这个候选键连接另一个关系来获得R
关于依赖关系保持,如果R的函数依赖关系可以通过所有分解关系的函数依赖关系的并集得到,则关系R的分解就是依赖关系保持。FDs与“链接”或“引用”无关。A.→ 当a的每个给定值的所有出现都与B的值相同时,B保持一种关系。阅读定义。第一段是正确的定义。第二个不是。(你从维基百科上获取了它们,但这是错误的。)这是一个暗示无损分解的条件,但不是必需的。无论如何,FD保存并不依赖于无损性。(正如你最后一段所说。)