📜  规范封面

📅  最后修改于: 2020-12-12 03:11:19             🧑  作者: Mango

规范封面

在更新数据库的情况下,系统的职责是检查在更新过程中是否违反了现有的功能依赖性。如果在新的数据库状态下违反了功能依赖性,则必须进行系统回滚。

规范的覆盖或不可约的一组功能依赖关系FD是简化的FD集,其闭包与原始集FD相似。

无关属性

如果我们可以删除FD的属性而不更改FD集的闭包,则该属性是多余的。

示例:给定一个关系模式R(A,B,C,D)和功能依赖集FD = {B→A,AD→BC,C→ABD}。找到规范的封面?

解决方案:给定FD = {B→A,AD→BC,C→ABD},现在使用分解规则(Armstrong Axiom)分解FD。

  • B→A
  • AD→B(在AD→BC上使用分解推理规则)
  • AD→C(在AD→BC上使用分解推理规则)
  • C→A(使用C→ABD上的分解推理规则)
  • C→B(在C→ABD上使用分解推理规则)
  • C→D(使用C→ABD上的分解推理规则)

现在设置FD = {B→A,AD→B,AD→C,C→A,C→B,C→D}

下一步是通过包含该FD并排除该FD,找到给定FD左侧的闭合,如果两种情况下的闭合相同,则FD是多余的,我们从给定集合中移除该FD,否则,两种闭包都不相同,那么我们不排除该FD。

计算所有FD的闭包{B→A,AD→B,AD→C,C→A,C→B,C→D}

1a。使用FD = {B→A ,AD→B,AD→C,C→A,C→B,C→D}关闭B + = BA

1b。使用FD = {AD→B,AD→C,C→A,C→B,C→D}关闭B + = B

从1a和1b中,我们发现Closure(通过包含B→A并排除B→A )不相等,因此FD B→A很重要,不能从FD集合中删除。

2个使用FD = {B→A, AD→B ,AD→C,C→A,C→B,C→D}关闭AD + = ADBC

2 b。使用FD = {B→A,AD→C,C→A,C→B,C→D}关闭AD + = ADCB

从2a和2b中,我们发现闭包(通过包括AD→B并排除AD→B )是等效的,因此FD AD→B不重要,可以从FD集中删除。

因此,结果FD = {B→A,AD→C,C→A,C→B,C→D}

3个使用FD = {B→A, AD→C ,C→A,C→B,C→D}关闭AD + = ADCB

3羽使用FD = {B→A,C→A,C→B,C→D}关闭AD + = AD

从3a和3b中,我们发现闭包(包括AD→C并排除AD→C )都不相等,因此FD AD→C很重要,不能从FD集合中删除。

因此,结果FD = {B→A,AD→C,C→A,C→B,C→D}

4个使用FD = {B→A,AD→C, C→A ,C→B,C→D}关闭C + = CABD

4羽使用FD = {B→A,AD→C,C→B,C→D}关闭C + = CBDA

从4a和4b中,我们发现闭包(包括C→A并排除C→A )是等效的,因此FD C→A不重要,可以从FD集中删除。

因此,结果FD = {B→A,AD→C,C→B,C→D}

5个使用FD = {B→A,AD→C, C→B ,C→D}关闭C + = CBDA

5羽使用FD = {B→A,AD→C,C→D}关闭C + = CD

从5a和5b中,我们发现闭包(包括C→B且不包括C→B )都不相等,因此FD C→B很重要,不能从FD集合中删除。

因此,结果FD = {B→A,AD→C,C→B,C→D}

6个使用FD = {B→A,AD→C,C→B, C→D }关闭C + = CDBA

6羽使用FD = {B→A,AD→C,C→B}关闭C + = CBA

从6a和6b中,我们发现Closure(通过包括C→D并排除C→D )是不相等的,因此FD C→D很重要,不能从FD集合中删除。

因此,结果FD = {B→A,AD→C,C→B,C→D}

  • 由于FD = {B→A,AD→C,C→B,C→D}是结果FD,现在我们检查属性的冗余性,因为FD AD→C的左侧有两个属性,让我们检查它们的重要性,即它们两者都重要还是仅一个。

使用FD = {B→A, AD→C ,C→B,C→D}关闭AD + = ADCB

使用FD = {B→A, AD→C ,C→B,C→D}关闭A + = A

使用FD = {B→A, AD→C ,C→B,C→D}关闭D + = D

由于我们发现的AD +,A +,D +的闭包不完全相同,因此在FD AD→C中,A和D都是重要属性,不能删除。

因此,结果FD = {B→A,AD→C,C→B,C→D},我们可以重写为

FD = {B→A,AD→C,C→BD}是FD = {B→A,AD→BC,C→ABD}的规范封面。

示例2:给定一个关系模式R(W,X,Y,Z)和一组函数依赖关系FD = {W→X,Y→X,Z→WXY,WY→Z}。找到规范的封面?

解决方案:给定FD = {W→X,Y→X,Z→WXY,WY→Z},现在使用分解规则(Armstrong Axiom)分解FD。

  • W→X
  • Y→X
  • Z→W(使用Z→WXY上的分解推理规则)
  • Z→X(使用Z→WXY上的分解推理规则)
  • Z→Y(使用Z→WXY上的分解推理规则)
  • WY→Z

现在设置FD = {W→X,Y→X,WY→Z,Z→W,Z→X,Z→Y}

下一步是通过包含该FD并排除该FD,找到给定FD左侧的闭合,如果两种情况下的闭合相同,则FD是多余的,我们从给定集合中移除该FD,否则,两种闭包都不相同,那么我们不排除该FD。

计算所有FD {W→X,Y→X,Z→W,Z→X,Z→Y,WY→Z}的闭合

1个使用FD = {W→X ,Y→X,Z→W,Z→X,Z→Y,WY→Z}关闭W + = WX

1羽使用FD = {Y→X,Z→W,Z→X,Z→Y,WY→Z}关闭W + = W

从1a和1b中,我们发现两个闭包(包括W→X和不包括W→X )都不相等,因此FD W→X很重要,不能从FD集合中删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→X,Z→Y,WY→Z}

2个使用FD = {W→X, Y→X ,Z→W,Z→X,Z→Y,WY→Z}关闭Y + = YX

2 b。使用FD = {W→X,Z→W,Z→X,Z→Y,WY→Z}关闭Y + = Y

从2a和2b中,我们发现两个闭包(包括Y→X并排除Y→X )都不相等,因此FD Y→X很重要,无法从FD集合中删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→X,Z→Y,WY→Z}

3个使用FD = {W→X,Y→X, Z→W ,Z→X,Z→Y,WY→Z}关闭Z + = ZWXY

3羽使用FD = {W→X,Y→X,Z→X,Z→Y,WY→Z}关闭Z + = ZXY

从3a和3b中,我们发现两个闭包(包括Z→W且不包括Z→W )都不相等,因此FD Z→W很重要,不能从FD集合中删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→X,Z→Y,WY→Z}

4个。使用FD = {W→X,Y→X,Z→W, Z→X ,Z→Y,WY→Z}关闭Z + = ZXWY

4羽使用FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}关闭Z + = ZWYX

从4a和4b中,我们发现闭包(通过包含Z→X并排除Z→X )是等效的,因此FD Z→X并不重要,可以从FD集中删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}

5个使用FD = {W→X,Y→X,Z→W, Z→Y ,WY→Z}关闭Z + = ZYWX

5羽使用FD = {W→X,Y→X,Z→W,WY→Z}关闭Z + = ZWX

从5a和5b中,我们发现两个闭包(包括Z→Y并排除Z→Y )都不相等,因此FD Z→X很重要,不能从FD集合中删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}

6个使用FD = {W→X,Y→X,Z→W,Z→Y, WY→Z }关闭WY + = WYZX

6羽使用FD = {W→X,Y→X,Z→W,Z→Y}关闭WY + = WYX

从6a和6b中,我们发现两个闭包(包括WY→Z且不包括WY→Z )都不相等,因此FD WY→Z很重要,不能从FD集合中删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}

由于FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}现在是结果FD,我们检查了属性的冗余性,因为FD WY→Z的左侧有两个属性在它的左边,让我们检查一下它们的重要性,即它们两者都重要还是只有一个。

使用FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}关闭WY + = WYZX

使用FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}关闭W + = WX

使用FD = {W→X,Y→X,Z→W,Z→Y,WY→Z}关闭Y + = YX

由于我们发现的WY +,W +,Y +的闭包不完全相同,因此在FD WY→Z中,W和Y都是重要属性,不能删除。

因此,结果FD = {W→X,Y→X,Z→W,Z→Y,WY→Z},我们可以重写为:

FD = {W→X,Y→X,Z→WY,WY→Z}是FD = {W→X,Y→X,Z→WXY,WY→Z}的规范封面。

示例3:给定一个关系模式R(V,W,X,Y,Z)和功能依赖集FD = {V→W,VW→X,Y→VXZ}。找到规范的封面?

解决方案:给定FD = {V→W,VW→X,Y→VXZ}。现在使用分解规则(Armstrong公理)分解FD。

  • V→W
  • 大众→X
  • Y→V(在Y→VXZ上使用分解推理规则)
  • Y→X(在Y→VXZ上使用分解推理规则)
  • Y→Z(在Y→VXZ上使用分解推理规则)

现在设置FD = {V→W,VW→X,Y→V,Y→X,Y→Z}。

下一步是通过包含该FD并排除该FD,找到给定FD左侧的闭合,如果两种情况下的闭合相同,则FD是多余的,我们从给定集合中移除该FD,否则,两种闭包都不相同,那么我们不排除该FD。

计算所有FD {V→W,VW→X,Y→V,Y→X,Y→Z}的闭合。

1个使用FD = {V→W ,VW→X,Y→V,Y→X,Y→Z}关闭V + = VWX

1羽使用FD = {VW→X,Y→V,Y→X,Y→Z}关闭V + = V

从1a和1b中,我们发现Closure(通过包括V→W并排除V→W )是不相等的,因此FD V→W很重要,不能从FD集合中删除。

因此,结果FD = {V→W,VW→X,Y→V,Y→X,Y→Z}。

2个。使用FD = {V→W, VW→X ,Y→V,Y→X,Y→Z}关闭VW + = VWX

2 b。使用FD = {V→W,Y→V,Y→X,Y→Z}关闭VW + = VW

从2a和2b中,我们发现Closure(通过包括VW→X并排除VW→X )不相等,因此FD VW→X很重要,不能从FD集合中删除。

因此,结果FD = {V→W,VW→X,Y→V,Y→X,Y→Z}。

3个使用FD = {V→W,VW→X, Y→V ,Y→X,Y→Z}关闭Y + = YVXZW

3羽使用FD = {V→W,VW→X,Y→X,Y→Z}关闭Y + = YXZ

从3a和3b中,我们发现Closure(通过包含Y→V并排除Y→V )不相等,因此FD Y→V很重要,不能从FD集合中删除。

因此,结果FD = {V→W,VW→X,Y→V,Y→X,Y→Z}。

4个。使用FD = {V→W,VW→X,Y→V, Y→X ,Y→Z}关闭Y + = YXVZW

4羽使用FD = {V→W,VW→X,Y→V,Y→Z}关闭Y + = YVZWX

从4a和4b中,我们发现Closure(通过包含Y→X并排除Y→X )是等效的,因此FD Y→X并不重要,可以从FD集中删除。

因此,结果FD = {V→W,VW→X,Y→V,Y→Z}。

5个使用FD = {V→W,VW→X,Y→V, Y→Z }关闭Y + = YZVWX

5羽使用FD = {V→W,VW→X,Y→V}关闭Y + = YVWX

从5a和5b中,我们发现Closure(通过包含Y→Z并排除Y→Z )是不相等的,因此FD Y→Z很重要,不能从FD集合中删除。

因此,结果FD = {V→W,VW→X,Y→V,Y→Z}。

由于FD = {V→W,VW→X,Y→V,Y→Z}现在是结果FD,我们检查了属性的冗余性,因为FD VW→X的左侧在左边有两个属性,让我们检查它们的重要性,即它们两者都重要还是仅一个。

使用FD = {V→W,VW→X,Y→V,Y→Z}关闭VW + = VWX

使用FD = {V→W,VW→X,Y→V,Y→Z}关闭V + = VWX

使用FD = {V→W,VW→X,Y→V,Y→Z}关闭W + = W

由于VW +,V +,W +的闭包,我们发现VW和V的所有闭包都是等效的,因此在FD VW→X中,W根本不是重要属性,可以删除。

因此,结果FD = {V→W,V→X,Y→V,Y→Z},我们可以重写为

FD = {V→WX,Y→VZ}是FD = {V→W,VW→X,Y→VXZ}的规范封面。

结论:从以上三个示例可以得出结论,规范覆盖率/不可约函数依赖关系集遵循以下步骤,在计算规范覆盖率时需要遵循以下步骤。

步骤1:对于给定的一组FD,如果任何FD的右侧具有多个属性,则使用分解规则(阿姆斯特朗公理)分解每个FD。

步骤2:现在制作一组所有已分解的FD FD。

步骤3:通过包含该FD并将该FD排除在外,找到每个给定FD左侧的闭合,如果两种情况下的闭合相同,则FD是多余的,我们从给定集合中删除该FD,否则如果两个闭包不同,那么我们不排除该FD。

步骤4:重复步骤4,直到完成FD集中的所有FD。

步骤5:在步骤4之后,找到结果FD = {B→A,AD→C,C→B,C→D},这些结果不是多余的。

步骤6:通过从FD集合中选择左侧具有多个属性的FD来检查属性的冗余度,让我们来看看FD AD→C左侧具有两个属性,让我们检查它们的重要性,即它们是否都很重要或只有一个。

步骤6 a:查找闭包AD +

步骤6 b:查找封包A +

步骤6 c:查找封包D +

如果AD +,A +,D +的关闭不相等,则比较STEP(6a,6b,6c)的关闭,因此在FD AD→C中,A和D都是重要属性,不能删除,否则,我们将删除冗余属性。