【问题标题】:Dependency preservation, based of original functional dependencies or canonical cover?依赖保存,基于原始功能依赖还是规范覆盖?
【发布时间】:2019-04-19 22:28:17
【问题描述】:

鉴于这些功能依赖于

R: {A,B,C,D,E,F}

AC->EF
E->CD
C->ADEF
BDF->ACD

我得到了这个作为规范封面:

E->C
C->ADEF
BF->C

然后将其分解为 Boyce Codd 范式:

Relation 1: {C,A,D,E,F} 
Relation 2: {B,F,C}

我认为这是无损且保持依赖关系的?但这是真的吗,因为从原始的函数依赖关系来看,BDF->ACD 不再存在于我的任何关系中。但是,如果我从计算出的规范覆盖中去,那么我所有的函数依赖都会被保留。

所以问题是:这种对 BCNF 依赖的分解是否保留?

【问题讨论】:

  • BCNF 通常不保留依赖关系en.wikipedia.org/wiki/…
  • 您的问题到底是什么? (或问题——但除非它们非常相关,否则请在每个帖子中询问一个。)如果您只是想知道是否可能没有 BCNF FD-preserving 分解,请询问。除了它只是简单的研究但仍然是一个常见问题,所以不要。关于“这是正确的”:根据您的参考/教科书显示您的工作步骤,并说明理由-我们要检查您的工作但不重做,当算法允许时我们需要您的选择,否则我们无法判断你哪里错了哪里对。查看点击谷歌搜索“stackexchange 作业”。
  • 你的意思是原始的 FD 集是关系的掩护吗?如果有,就这么说吧。否则,您将找不到关系 & CKs & 分解的规范封面。另外,大概您的意思是“一个”规范封面,因为您没有表明它是唯一的封面。 PS 明白为什么你应该“根据你的参考/教科书展示你的工作步骤,并说明理由”?如果给定的 FD 不是关系覆盖,那么您无法证明 CK 和分解是合理的。这不仅仅是关于我们检查您的工作,而是关于您在询问时做出适当的努力。 PS“从我计算的规范封面中走出来”尚不清楚。
  • 您添加了一个问题。可能很清楚-如果这实际上是您的意思。但是你没有澄清你已经写了什么。添加一些不清楚的东西并不能使它清楚。请对我的 cmets 采取行动。如果您告诉我们假设结果,则无需“根据参考/教科书显示您的工作步骤,并说明理由”。但是你需要展示你使用假设的推理。你在这里几乎做到了,但你不清楚。 PS 从您的教科书中,“FD 封面”和“保留 FD”是什么意思?您在哪里遇到了定义是否适用的问题?

标签: database database-normalization relational-algebra functional-dependencies bcnf


【解决方案1】:

当且仅当依赖关系在分解关系上的投影的并集是关系依赖关系的覆盖时,分解才会保留依赖关系。

因此,要知道分解是否保留了依赖关系,仅检查特定覆盖的依赖关系是否已保留是不够的(例如,通过查看某个分解的关系是否具有依赖关系的所有属性) .例如,在R(ABC) 与覆盖F = {A→B, B→C, C→A} 的关系中,人们可能会认为在分解R1(AB)R2(BC) 中不保留依赖关系C→A。但是如果你将F 投影到AB 上你会得到A→B, B→A,将它投影到BC 上你会得到B→C, C→B,所以从他们的联合中你也可以得到C→A

检查并不简单,即使存在执行此任务的多项式算法(例如,J. Ullman,数据库系统原理,计算机科学出版社,1983 年描述的算法)。

假设你给出的依赖是关系依赖的覆盖,你发现的规范覆盖是不正确的。实际上BF -> C不能从原来的依赖中派生出来。

因此,您的分解不正确,因为R2(BCF) 不在 BCNF 中(实际上,它不在 2NF 中)。

R 的一个可能的规范封面如下:

BDF → C
C → A
C → E
C → F
E → C
E → D 

根据分析算法,BCNF 中有两种可能的分解(根据选择用于消除的依赖项)。一种是:

R1 = (ACDEF)
R2 = (BC)

另一个是:

R1 = (ACDEF)
R3 = (BE)

(注意BCBE是原始关系的候选键,还有BDF)。

R1 中的依赖关系的封面是:

C → A
C → E
C → F 
E → C
E → D

虽然在R2R3 中都没有重要的依赖关系。

由此,我们可以得出结论,两种分解都没有保留依赖关系;例如,无法获得以下依赖项(以及从它派生的所有依赖项):

BDF → C

【讨论】:

  • 只有您的最后几段解决了他们似乎想要问的问题,即保留了规范封面的 FD,但没有保留原始封面的 FD。 (重要的是它是另一个封面,而不是规范。)其余的应该是 PS。这将有助于解释“关系上的 FD 投影”。但是他们对他们注意到的特殊性/矛盾的描述和推理尚不清楚。所以这个问题不应该回答。提问者应该澄清。例如,因为人们会猜测不是问题所问的东西,例如这个答案。关于这个问题,请参阅我的 cmets。
  • 编辑后: 1. 要显示保存,找到其 FD 在组件中的封面就足够了。您的写作在“检查封面的依赖关系是否已保留是不正确的”中不清楚。自然语言中带有“不”的短语经常不能清楚地表明什么是被否定的——你最近在其他地方遇到了这个问题。如果“封面”表示“特定封面”,那么您是正确的,但事实是,如果组件中有一些带有 FD 的封面,那么 FD 会被保留。 2. 请不要说“...”后跟“to be more explicit”。重写一下就清楚了。
  • 在周六夜现场与 Ed Asner 的老短剧中,他的角色是美国大陆一家核电站的退休经理,他模棱两可地告诉他的同事“你不能在核电站里放太多水反应堆。”在夏威夷的海滩上,他观察到地平线上方的一天结束的光芒......在东方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 2015-04-08
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多