📜  关于有损和无损分解的问题

📅  最后修改于: 2020-12-13 05:29:19             🧑  作者: Mango

关于有损和无损分解的问题

如果关系模型或关系模式中的关系不是适当的范式,则将关系分解。如果分解是无损连接,则将关系模式R分解/分为两个或两个以上关系。

必须满足以下条件:使用功能依赖集检查无损联接分解。

1.在采用关系R1和关系R2的属性并集时,必须等于关系R的属性,即关系R的属性必须在关系R1或关系R2中。例如,在添加两个表的属性(不包括重复属性)时,我们应该获得R的总属性。如果这种情况失败了,则无需进一步检查,因为这是无损联接分解的第一个前提条件

Attribute(R1) U Attribute (R2) = Attribute (R)

2.在执行关系R1和关系R2的属性的交集时,不得将其设为NULL,即,在两个表中至少应有一个公共属性,您可以基于该属性将两个表连接在一起,以防万一,此条件失败无需进一步检查,因为这是无损联接分解的第二个前提条件。

Attribute (R1) ∩ Attribute (R2) ≠ Φ

3. common属性必须是至少一个关系(R1或R2)的键。也就是说,假设属性“ A”在R1和R2中都是公用的,则A应该是R1中的关键字,或者A应该是R2中的关键字。如果此条件失败,则无需进一步检查,因为这是无损连接分解的最后前提。

Attribute (R1) ∩ Attribute (R2) -> Attribute (R1) or Attribute (R1) ∩ Attribute (R2) -> Attribute (R2)

让我们举一个例子,将具有功能相关性集{X-> YZ}的关系R(X,Y,Z,W)分解为关系R1(X,Y,Z)和关系R2(X,W),无损联接分解为:

  • 第一个条件成立,因为属性(R1)U属性(R2)=(X,Y,Z)U(X,W)=(X,Y,Z,W)=属性(R)。
  • 第二个条件为(R1)∩属性(R2)=(X,Y,Z)∩(X,W)≠Φ
  • 第三个条件成立,即属性(R1)∩属性(R2)= X是R1(X,Y,Z)的键,因为给出了X-> YZ。

依存关系分解

如果将关系R分解为关系R1和R2,则R的所有依赖关系要么必须是R1或R2的一部分,要么必须可以从R1和R2的FD的组合派生而来。

例如,将功能相关性设置为{X-> YZ}的关系R(X,Y,Z,W)分解为关系R1(X,Y,Z)和关系R2(X,W),这是由于保持了相关性FD X-> YZ是R1(X,Y,Z)的一部分。

问题:考虑架构R(X,Y,Z,W)和功能依赖关系FD = {X-> Y和Z-> W}。然后将关系模式R分解为关系R1(XY)和关系R2(ZW)

答:对于无损联接分解,必须满足以下三个条件:

  • 属性(R1)U属性(R2)= XYZW =属性(R){满足无损连接分解的第一个条件,因此我们检查相同的下一个条件。
  • 属性(R1)∩属性(R2)= NULL(即关系R1和关系R2中没有公共属性),这违反了无损连接分解的条件。因此,分解不是无损的。

表:R

X Y Z W P
1 244 A I W
2 231 B J X
1 534 A K Y
3 988 C l Z

问题1 :考虑将关系模式R(XYZWP)(表R上方)分解为R1(XYZ)和R2(ZWP)。确定以上R1和R2是无损还是有损?

解决方案:为使关系R为无损分解,R应该满足以下三个条件:

  • 属性(R1)U属性(R2)=属性(R)
  • 属性(R1)∩属性(R2)≠Φ
  • 属性(R1)∩属性(R2)->属性(R1)或属性(R1)∩属性(R2)->属性(R2)

条件1:满足Attribute(R1)U属性(R2)=属性(R)=(XYZWP)

条件2:满足于属性(R1)∩属性(R2)≠Φ=(Z)

条件3:不满意,因为公共属性Z在任何关系R1或R2中都不是关键(您可以从Z列的表值中检查是否重复)

因此,分解为R1(XYZ)和R2(ZWP)的关系R(XYZWP)是有损分解。

问题2 :考虑将关系模式R(XYZWP)(表R上方)分解为R1(XY)和R2(ZW)。确定以上R1和R2是无损还是有损?

解决方案:为使关系R为无损分解,R应该满足以下三个条件:

  • 属性(R1)U属性(R2)=属性(R)
  • 属性(R1)∩属性(R2)≠Φ
  • 属性(R1)∩属性(R2)->属性(R1)或属性(R1)∩属性(R2)->属性(R2)

条件1:不满足于属性(R1)U属性(R2)(XYZW)≠属性(R)=(XYZWP)

由于不满足条件1,因此我们将不检查条件2和3

因此,分解为R1(XY)和R2(ZW)的关系R(XYZWP)是有损分解。

问题3:考虑将关系模式R(XYZWP)(表R上方)分解为R1(XYZ)和R2(WP),确定以上R1和R2是无损还是有损?

解决方案:为使关系R为无损分解,R应该满足以下三个条件:

  • 属性(R1)U属性(R2)=属性(R)
  • 属性(R1)∩属性(R2)≠Φ
  • 属性(R1)∩属性(R2)->属性(R1)或属性(R1)∩属性(R2)->属性(R2)

条件1:满足Attribute(R1)U属性(R2)=属性(R)=(XYZWP)

条件2:不满足于属性(R1)∩属性(R2)=Φ

由于不满足条件2,因此我们将不检查条件3

因此,分解为R1(XYZ)和R2(WP)的关系R(XYZWP)是有损分解。

问题4:考虑将关系模式R(XYZWP)(表R上方)分解为R1(XYZW)和R2(WP)。确定以上R1和R2是无损还是有损?

解决方案:为使关系R为无损分解,R应该满足以下三个条件:

  • 属性(R1)U属性(R2)=属性(R)
  • 属性(R1)∩属性(R2)≠Φ
  • 属性(R1)∩属性(R2)->属性(R1)或属性(R1)∩属性(R2)->属性(R2)

条件1:满足Attribute(R1)U属性(R2)=属性(R)=(XYZWP)

条件2:满足属性(R1)∩属性(R2)≠Φ=(W)

条件3:作为通用属性W键满意(我们可以从W列的表值中检查是否唯一)

因此,分解为R1(XYZ)和R2(ZWP)的关系R(XYZWP)是无损分解。

问题5:考虑将关系模式R(XYZWP)(表R上方)分解为R1(XYZW)和R2(XZWP)。确定以上R1和R2是无损还是有损?

解决方案:为了使关系R为无损分解,R应该满足以下三个条件:

  • 属性(R1)U属性(R2)=属性(R)
  • 属性(R1)∩属性(R2)≠Φ
  • 属性(R1)∩属性(R2)->属性(R1)或属性(R1)∩属性(R2)->属性(R2)

条件1:满足Attribute(R1)U属性(R2)=属性(R)=(XYZWP)

条件2:满足(R1)∩(R2)≠Φ=(XZW)

条件3:作为通用属性XZW是关键,因此感到满意(我们可以从W列的表值中检查是否唯一,并且W的任何组合也将唯一)

因此,分解为R1(XYZ)和R2(ZWP)的关系R(XYZWP)是无损分解。